2012-03-18 78 views
9

嗨,我使用網格搜索和交叉驗證執行使用SMO,在我的內核是RBF,現在我要選擇ç西格瑪值SVM分類,我是新來的內核功能,請大家幫忙,一步一步程序選擇c和伽瑪值

回答

16
  1. 爲C和西格瑪選擇一些你認爲很有趣的值。例如,C = {1,10,100,1000}和西格瑪= {.01,.1,1}(我只是把它們做成)。
  2. 將訓練組分成k(例如10)個部分,優選以stratified的方式。
  3. 循環遍歷所有C和sigma值對。
    1. 遍歷所有k您的訓練集的一部分。把握第。在組合的所有其他部分上訓練分類器,然後在保持部分上進行測試。
    2. 記錄一些分數(準確度,F1或任何你想優化的)。
  4. 按照您剛剛計算的分數,爲C,sigma返回性能最高的值對。
+0

存在澄清:「上的每個其它部分的訓練分類器」通常意味着在其他部分組合在一起訓練,而不是單獨訓練。 – Dougal 2012-03-18 18:32:23

+0

@Dougal:是的,這就是我的意思。謝謝。 – 2012-03-18 20:03:34

+0

我認爲值得注意的是,你所指的(分成k個部分等)被稱爲交叉驗證,特別是10倍交叉驗證。 OP可能不知道,有時嘗試查找更多信息的最難的部分是知道要搜索的關鍵字。 – karenu 2012-03-19 14:48:12

1

我會給larsmans' answer添加一點解釋。

C參數是正則化/鬆弛參數。其較小的值迫使重量很小。它越大,允許的權重範圍就越寬。結果,較大的值增加了對錯誤分類的懲罰並因此降低了訓練數據上的分類錯誤率(這可能導致過度擬合)。隨着您增加C的值,您的培訓時間和支持向量的數量將會增加。

您可能還會覺得閱讀K.K.的Extending SVM to a Soft Margin Classifier很有用。下巴。

0

您還可以使用統一設計模型選擇,它減少了需要檢查的元組數量。 這解釋了它是「模型選擇用於經由統一設計的支持向量機」由簡明黃 在python一些實施是本文中ssvm 0.2