为什么扩展功能会降低 SVM 性能?

机器算法验证 支持向量机
2022-03-17 17:51:46

我对包含 40 个特征(所有列都是数字)和一个二进制输出变量的模型的特征进行了缩放。

这是这里的 Kaggle 竞赛我已经扩展了功能,假设它会提供更好的性能,但是使用 rbf 内核 SVM,10 倍 CV 的准确度从 0.92 下降到 0.87

这是缩放前后特征的箱线图:

在此处输入图像描述 在此处输入图像描述

我想知道的是为什么缩放会降低分类器的性能?我还没有看到任何指向这种结果的讨论。

1个回答

问题是您在这两种情况下都使用了默认参数值。显然,在缩放之前,默认值恰好更适合您的数据集(这是巧合)。

使用 SVM 时,参数cγ发挥关键作用,找到最佳价值是您的任务。您的直觉是正确的:当所有特征都正确缩放时(或至少 99.99% 的时间) ,最佳性能会更好。不幸的是,您的设置都没有最佳参数,导致结果似乎拒绝了您的直觉。

搜索最优值cγ通常通过网格搜索完成(例如搜索一组<c,γ>组合)。您可以使用交叉验证来估计 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

你可以在这里找到一个很好的初学者教程