我对包含 40 个特征(所有列都是数字)和一个二进制输出变量的模型的特征进行了缩放。
这是这里的 Kaggle 竞赛我已经扩展了功能,假设它会提供更好的性能,但是使用 rbf 内核 SVM,10 倍 CV 的准确度从 0.92 下降到 0.87
这是缩放前后特征的箱线图:
我想知道的是为什么缩放会降低分类器的性能?我还没有看到任何指向这种结果的讨论。
我对包含 40 个特征(所有列都是数字)和一个二进制输出变量的模型的特征进行了缩放。
这是这里的 Kaggle 竞赛我已经扩展了功能,假设它会提供更好的性能,但是使用 rbf 内核 SVM,10 倍 CV 的准确度从 0.92 下降到 0.87
这是缩放前后特征的箱线图:
我想知道的是为什么缩放会降低分类器的性能?我还没有看到任何指向这种结果的讨论。
问题是您在这两种情况下都使用了默认参数值。显然,在缩放之前,默认值恰好更适合您的数据集(这是巧合)。
使用 SVM 时,参数和发挥关键作用,找到最佳价值是您的任务。您的直觉是正确的:当所有特征都正确缩放时(或至少 99.99% 的时间) ,最佳性能会更好。不幸的是,您的设置都没有最佳参数,导致结果似乎拒绝了您的直觉。
搜索最优值和通常通过网格搜索完成(例如搜索一组组合)。您可以使用交叉验证来估计 SVM 针对给定参数集的性能。
在伪代码中,总体思路是这样的:
for c in {set of possible c values}
for gamma in {set of possible gamma values}
perform k-fold cross-validation to find accuracy
end
end
train svm model on full training set with best c,gamma-pair
你可以在这里找到一个很好的初学者教程。