Svm
為什麼擴展功能會降低 SVM 性能?
我對包含 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
你可以在這裡找到一個很好的初學者教程。