为libsvm线性核选择优化参数

我在使用libsvm进行机器学习时使用了RBF核,现在我想探索其他核在我的数据集上的表现。

每个核都有多个需要优化的参数。对于RBF核,C和g参数用于网格搜索,以选择最佳的Cost和gamma组合。

-d degree : 设置核函数中的度数(默认值为3)-g gamma : 设置核函数中的gamma值(默认值为1/num_features)-r coef0 : 设置核函数中的coef0值(默认值为0)-c cost : 设置C-SVC、epsilon-SVR和nu-SVR的参数C(默认值为1)-n nu : 设置nu-SVC、单类SVM和nu-SVR的参数nu(默认值为0.5)-p epsilon : 设置epsilon-SVR损失函数中的epsilon值(默认值为0.1)-m cachesize : 设置缓存内存大小,单位为MB(默认值为100)-e epsilon : 设置终止标准的容忍度(默认值为0.001)-h shrinking : 是否使用收缩启发式,0或1(默认值为1)-b probability_estimates : 是否训练SVC或SVR模型以进行概率估计,0或1(默认值为0)-wi weight : 将类i的参数C设置为weight*C,用于C-SVC(默认值为1)

我想了解每个核的相关参数。由于有多个参数需要选择。例如,RBF核使用C和g。还请提供参数的网格大小和范围。例如,C的范围为10^-3到10^11,g的范围为10^3到10^-13

我用于RBF核的Perl网格生成器如下:

    for ( $i = -3; $i <= 11; $i += 1 ) {    for ( $j = 3; $j >= -13; $j += -1 ) {        my $a = 2**$i;        my $b = 2**$j;        $output = "svm-train -c $a -g $b -v 5 $ARGV[0]";        print  "$output >& ${ARGV[0]}_${a}_${b}.out \n";    }}

回答:

libsvm支持四种核:线性、多项式、径向基函数(RBF)和Sigmoid(实际上不是有效的核)。

  • 线性:无参数
  • 多项式:gamma(>0,浮点数)、coef0(浮点数)、degree(>1,整数)
  • RBF:gamma(>0,浮点数)
  • Sigmoid:gamma(>0,浮点数)、coef0(浮点数)

你无法提供通用的参数网格,因为它们依赖于数据。

C是SVM的一个参数,因此总是需要进行拟合。其余参数并非核特定的,你不需要过多关注它们。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注