1. 程式人生 > >SVM的兩個引數 C 和 gamma

SVM的兩個引數 C 和 gamma

           SVM模型有兩個非常重要的引數C與gamma。其中 C是懲罰係數,即對誤差的寬容度。c越高,說明越不能容忍出現誤差,容易過擬合。C越小,容易欠擬合。C過大或過小,泛化能力變差

           gamma是選擇RBF函式作為kernel後,該函式自帶的一個引數。隱含地決定了資料對映到新的特徵空間後的分佈,gamma越大,支援向量越少,gamma值越小,支援向量越多。支援向量的個數影響訓練與預測的速度。

此外大家注意RBF公式裡面的sigma和gamma的關係如下

   

        這裡面大家需要注意的就是gamma的物理意義,大家提到很多的RBF的幅寬,它會影響每個支援向量對應的高斯的作用範圍

,從而影響泛化效能。我的理解:如果gamma設的太大,會很小,很小的高斯分佈長得又高又瘦, 會造成只會作用於支援向量樣本附近,對於未知樣本分類效果很差,存在訓練準確率可以很高,(如果讓無窮小,則理論上,高斯核的SVM可以擬合任何非線性資料,但容易過擬合)而測試準確率不高的可能,就是通常說的過訓練;而如果設的過小,則會造成平滑效應太大,無法在訓練集上得到特別高的準確率,也會影響測試集的準確率。

此外,可以明確的兩個結論是: 結論1:樣本數目少於特徵維度並不一定會導致過擬合,這可以參考餘凱老師的這句評論: 這不是原因啊,呵呵。用RBF kernel, 系統的dimension實際上不超過樣本數,與特徵維數沒有一個trivial的關係。
結論2:RBF核應該可以得到與線性核相近的效果(按照理論,RBF核可以模擬線性核),可能好於線性核,也可能差於,但是,不應該相差太多。 當然,很多問題中,比如維度過高,或者樣本海量的情況下,大家更傾向於用線性核,因為效果相當,但是在速度和模型大小方面,線性核會有更好的表現。 老師木還有一句評論,可以加深初學者對SVM的理解: 須知rbf實際是記憶了若干樣例,在sv中各維權重重要性等同。線性核學出的權重是feature weighting作用或特徵選擇 。 以上摘錄了:http://blog.sina.com.cn/s/blog_6ae183910101cxbv.html

Grid Search

Grid Search是用在Libsvm中的引數搜尋方法。很容易理解:就是在C,gamma組成的二維引數矩陣中,依次實驗每一對引數的效果。

                                                    

使用grid Search雖然比較簡單,而且看起來很naïve。但是他確實有兩個優點:

  1. 可以得到全域性最優
  2. (C,gamma)相互獨立,便於並行化進行