SVM支持向量機
定義:支持向量機是主要用於解決分類問題的學習模型。它的基本模型是在特征空間中尋找間隔最大化的分離超平面的線性分類器。
分類
1-當訓練樣本線性可分,通過硬間隔最大化,學習一個線性分類器,叫線性可分支持向量機
2-當訓練數據近似線性可分時,引入松弛變量,通過軟間隔最大化,學習一個線性分類器,叫線性支持向量機
3-當訓練數據線性不可分的時候,通過使用核技巧以及軟間隔最大化,學習非線性支持向量機
SVM算法的主要優點有:
1) 解決高維特征的分類問題和回歸問題很有效,在特征維度大於樣本數時依然有很好的效果。
2) 僅僅使用一部分支持向量來做超平面的決策,無需依賴全部數據。
3) 有大量的核函數可以使用,從而可以很靈活的來解決各種非線性的分類回歸問題。
4) 樣本量不是海量數據的時候,分類准確率高,泛化能力強。
SVM算法的主要缺點有:
1) 如果特征維度遠遠大於樣本數,則SVM表現一般。
2) SVM在樣本量非常大,核函數映射維度非常高時,計算量過大,不太適合使用。
3) 非線性問題的核函數的選擇沒有通用標准,難以選擇一個合適的核函數。
4) SVM對缺失數據敏感。
SVM核函數的意義
SVM通過核函數將輸入空間映射到高維特征空間,最終在高維特征空間中構造出最優分離超平面,從而把平面上本身無法線性可分的數據分開。核函數的真正意義在於沒有真正映射到高維空間卻達到了映射的作用,減少了大量的映射計算。
如何選擇以及核函數的種類
1-如果特征的數量大到和樣本數量差不多,則使用線性核函數SVM或者LR(邏輯回歸)
2-如果特征的數量小,樣本的數量正常,則使用高斯核函數SVM
3-如果特征的數量小,樣本數量很多,由於求解最優化問題的時候,目標函數涉及兩兩樣本計算內積,使用高斯核明顯計算會大於線性核,所以手動添加一些特征,使得線性可分,然后可以用LR或者線性核的SVM
4-利用交叉驗證,試用不同的核函數,誤差最小的就是效果最好的核函數
5-混合核函數方法,將不同的核函數結合起來
為什么要將求解SVM的原始問題轉換為對偶問題
對偶問題可以給出原始問題的一個下界,當滿足一定條件時,原始問題和對偶問題的解是等價的,並且它還可以自然地引入核函數
SVM為什么采用間隔最大化
當訓練數據線性可分的時候,存在無窮個分離超平面可以將兩類數據正確分開。感知機或者神經網絡等利用誤分類最小策略,求得分離超平面,不過此時的解有無窮多個。線性可分支持向量機利用間隔最大化求得最優分離超平面,此時的解釋唯一的。另一方面,此時的分隔超平面所產生的的分類結果是最魯棒的,對未知實例的泛化能力最強。
為什么SVM對噪聲以及缺失值敏感
當噪聲出現的過多的話,或者當噪聲出現並成為支持向量的時候,噪聲對模型影響是巨大的
這里的缺失值是指缺失某些特征數據,向量數據不完整。因為SVM不像決策樹一樣有處理缺失值的策略,所以如果存在缺失值,這些數據在該特征維度很難正確的分類,將影響到訓練結果的好壞。
SVM中樣本偏斜的處理方法
樣本偏斜是指數據集中真負類樣本數量不均,例如正類樣本有10000個,負類樣本只有100個,這樣的話就會使超平面被推向負類,因為負類數量少,分布的不夠廣,這樣會影響結果的准確性。
解決方法:我們可以對正類的樣本使用懲罰因子C+,負類樣本用另一個C-,這個比例的確定一個好的方法時衡量他們分布的情況,具體的做法是給負類找一個高維空間中的超球體,它包含了所有負類的樣本,再給正類找一個,比較一下兩個球的半徑,半徑大的分布廣,懲罰因子小。
實際中根據需要選擇簡單的就行,例如libSVM就可以直接使用樣本的數量比。比如上面舉例中就可以定義 c+ :c-=1 : 100