支持向量機(SVM)常見問題

1 SVM原理

SVM是一種二分類模型。它的基本模型是在特徵空間中尋找間隔最大化的分離超平面的線性分類器。(間隔最大化是它的獨特之處),通過該超平面實現對未知樣本集的分類。

  • 當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性分類器,即線性可分支持向量機。
  • 當訓練數據近似線性可分時,引入鬆弛變量,通過軟間隔最大化,學習一個線性分類器,即線性支持向量機。
  • 當訓練數據線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支持向量機。

2 SVM核函數意義、種類與選擇

意義:原始樣本空間中可能不存在這樣可以將樣本正確分爲兩類的超平面,但是我們知道如果原始空間的維數是有限的,也就是說屬性數是有限的,則一定存在一個高維特徵空間能夠將樣本劃分。SVM通過核函數將輸入空間映射到高維特徵空間,最終在高維特徵空間中構造出最優分離超平面,從而把平面上本身無法線性可分的數據分開。核函數的真正意義是做到了沒有真正映射到高維空間卻達到了映射的作用,即減少了大量的映射計算。

選擇:

利用專家先驗知識選定核函數,例如已經知道問題是線性可分的,就可以使用線性核,不必選用非線性核。

如果特徵的數量大到和樣本數量差不多,則選用線性核函數SVM或LR。

如果特徵的數量小,樣本的數量正常,則選用高斯核函數SVM。

如果特徵的數量小,樣本數量很多,由於求解最優化問題的時候,目標函數涉及兩兩樣本計算內積,使用高斯核明顯計算量會大於線性核,所以手動添加一些特徵,使得線性可分,然後可以用LR或者線性核的SVM;

利用交叉驗證,試用不同的核函數,誤差最小的即爲效果最好的核函數。

混合核函數方法,將不同的核函數結合起來。

3 爲什麼要將求解SVM的原始問題轉換爲其對偶問題

  • 無論原始問題是否是凸的,對偶問題都是凸優化問題;
  • 對偶問題可以給出原始問題一個下界;
  • 當滿足一定條件(KKT條件或Slater條件)時,原始問題與對偶問題的解是完全等價的;
  • 可以自然引入核函數。

4 SVM爲什麼採用間隔最大化

當訓練數據線性可分時,存在無窮個分離超平面可以將兩類數據正確分開。感知機或神經網絡等利用誤分類最小策略,求得分離超平面,不過此時的解有無窮多個。線性可分支持向量機利用間隔最大化求得最優分離超平面,這時,解是唯一的。另一方面,此時的分隔超平面所產生的分類結果是最魯棒的,對未知實例的泛化能力最強。

5 SVM對噪聲敏感

  • 少數支持向量決定了最終結果,這不但可以幫助我們抓住關鍵樣本、“剔除”大量冗餘樣本,而且註定了該方法不但算法簡單,而且具有較好的“魯棒”性。這種“魯棒”性主要體現在:

增、刪非支持向量樣本對模型沒有影響;

支持向量樣本集具有一定的魯棒性;

有些成功的應用中,SVM 方法對核的選取不敏感

  • 但當噪聲出現的過多,以及當噪聲出現併成爲支持向量時,那麼噪聲對模型對影響是巨大的。所以此時SVM對噪聲不具備魯棒性!以下兩種情況會增大噪聲成爲支持向量的概率:

噪聲數量太多

噪聲以新的分佈形式出現,與原先樣本集的噪聲分佈表現的相當不同。此時噪聲也有大概率落在最大分類間隔中間,從而成爲支持向量,大大影響模型。

所以我們常說的魯棒性其實是主要是體現在對Outlier(異常點、離羣點)上。

6 SVM缺失值影響

這裏說的缺失數據是指缺失某些特徵數據,向量數據不完整。SVM沒有處理缺失值的策略(決策樹有)。而SVM希望樣本在特徵空間中線性可分,若存在缺失值它們在該特徵維度很難正確的分類(例如SVM要度量距離(distance measurement),高斯核,那麼缺失值處理不當就會導致效果很差),所以特徵空間的好壞對SVM的性能很重要。缺失特徵數據將影響訓練結果的好壞。

7 SVM在大數據上有哪些缺陷

SVM的空間消耗主要是在存儲訓練樣本和核矩陣,由於SVM是藉助二次規劃來求解支持向量,而求解二次規劃將涉及m階矩陣的計算(m爲樣本的個數),當m數目很大時該矩陣的存儲和計算將耗費大量的內存和運算時間。如果數據量很大,SVM的訓練時間就會比較長,所以SVM在大數據的使用中比較受限。

8 SVM之防止過擬合以及如何調節懲罰因子C

過擬合是什麼就不再解釋了。SVM其實是一個自帶L2正則項的分類器。SVM防止過擬合的主要技巧就在於調整軟間隔鬆弛變量的懲罰因子C。C越大表明越不能容忍錯分,當無窮大時則退化爲硬間隔分類器。合適的C大小可以照顧到整體數據而不是被一個Outlier給帶偏整個判決平面。至於C大小的具體調參通常可以採用交叉驗證來獲得。每個鬆弛變量對應的懲罰因子可以不一樣。

一般情況下,低偏差,高方差,即遇到過擬合時,減小C;高偏差,低方差,即遇到欠擬合時,增大C。

9 SVM中樣本偏斜的處理方法

樣本偏斜是指數據集中正負類樣本數量不均,比如正類樣本有10000個,負類樣本只有100個,這就可能使得超平面被“推向”負類(因爲負類數量少,分佈得不夠廣),影響結果的準確性。

對於樣本偏斜(樣本不平衡)的情況,在各種機器學習方法中,我們有針對樣本的通用處理辦法:如上(下)採樣,數據合成,加權等。

僅在SVM中,我們可以通過爲正負類樣本設置不同的懲罰因子來解決樣本偏斜的問題。具體做法是爲負類設置大一點的懲罰因子,因爲負類本來就少,不能再分錯了,然後正負類的懲罰因子遵循一定的比例,比如正負類數量比爲100:1,則懲罰因子的比例直接就定爲1:100,具體值要通過實驗確定。

10 SVM優缺點

優點:

非線性映射是SVM方法的理論基礎,SVM利用內積核函數代替向高維空間的非線性映射;

對特徵空間劃分的最優超平面是SVM的目標,最大化分類邊際的思想是SVM方法的核心;

支持向量是SVM的訓練結果,在SVM分類決策中起決定作用的是支持向量;

SVM 的最終決策函數只由少數的支持向量所確定,計算的複雜性取決於支持向量的數目,而不是樣本空間的維數,這在某種意義上避免了“維數災難”。

小樣本集上分類效果通常比較好。

少數支持向量決定了最終結果,這不但可以幫助我們抓住關鍵樣本、“剔除”大量冗餘樣本,而且註定了該方法不但算法簡單,而且具有較好的“魯棒”性。這種“魯棒”性主要體現在:

①增、刪非支持向量樣本對模型沒有影響;

②支持向量樣本集具有一定的魯棒性;

③有些成功的應用中,SVM 方法對核的選取不敏感

SVM 是一種有堅實理論基礎的新穎的小樣本學習方法。它基本上不涉及概率測度及大數定律等,因此不同於現有的統計方法。從本質上看,它避開了從歸納到演繹的傳統過程,實現了高效的從訓練樣本到預報樣本的“轉導推理”,大大簡化了通常的分類和迴歸等問題。

缺點:

SVM算法對大規模訓練樣本難以實施。由於SVM是藉助二次規劃來求解支持向量,而求解二次規劃將涉及m階矩陣的計算(m爲樣本的個數),當m數目很大時該矩陣的存儲和計算將耗費大量的機器內存和運算時間(上面有講)。

用SVM解決多分類問題存在困難。傳統的SVM就是解決二分類問題的,上面有介紹不少解決多分類問題的SVM技巧,不過各種方法都一定程度上的缺陷。

對缺失值敏感,核函數的選擇與調參比較複雜。

11 樣本失衡時,如何評價分類器的性能好壞?

答:使用ROC曲線。Roc曲線下的面積,介於0.1和1之間。AUC值是一個概率值,當你隨機挑選一個正樣本以及負樣本,當前的分類算法根據計算得到的Score值將這個正樣本排在負樣本前面的概率就是AUC值,AUC值越大,當前分類算法越有可能將正樣本排在負樣本前面。Auc作爲數值可以直觀的評價分類器的好壞,值越大越好,隨機情況大概是0.5,所以一般不錯的分類器AUC至少要大於0.5。

選擇ROC和ROC下曲線面積是因爲分類問題經常會碰到正負樣本不均衡的問題,此時準確率和召回率不能有效評價分類器的性能,而ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變換的時候,ROC曲線能夠保持不變。

12 數據不規範化對SVM的影響?

答:大值特徵會掩蓋小值特徵(內積計算)。高斯核會計算向量間的距離,也會產生同樣的問題;多項式核會引起數值問題。影響求解的速度。數據規範化後,會丟失一些信息。預測的時候,也要進行規範化

13 線性核VS多項式核VS徑向基核?

答:1)訓練速度:線性核只需要調節懲罰因子一個參數,所以速度快;多項式核參數多,難調;徑向基核函數還需要調節γ,需要計算e的冪,所以訓練速度變慢。【調參一般使用交叉驗證,所以速度會慢】

2)訓練結果:線性核的得到的權重w可以反映出特徵的重要性,從而進行特徵選擇;多項式核的結果更加直觀,解釋性強;徑向基核得到權重是無法解釋的。

3)適應的數據:線性核:樣本數量遠小於特徵數量(n<<m)【此時不需要映射到高維】,或者樣本數量與特徵數量都很大【此時主要考慮訓練速度】;徑向基核:樣本數量遠大於特徵數量(n>>m)

14 徑向基核函數中參數的物理意義

答:如果σ選得很大的話,高次特徵上的權重實際上衰減得非常快,使用泰勒展開就可以發現,當很大的時候,泰勒展開的高次項的係數會變小得很快,所以實際上相當於一個低維的子空間;

如果σ選得很小,則可以將任意的數據映射爲線性可分——當然,這並不一定是好事,因爲隨之而來的可能是非常嚴重的過擬合問題,因爲此時泰勒展開式中有效的項將變得非常多,甚至無窮多,那麼就相當於映射到了一個無窮維的空間,任意數據都將變得線性可分。

15 LR與SVM的異同

相同

第一,LR和SVM都是分類算法。

第二,如果不考慮核函數,LR和SVM都是線性分類算法,也就是說他們的分類決策面都是線性的。

第三,LR和SVM都是監督學習算法。

第四,LR和SVM都是判別模型。

第五,LR和SVM都有很好的數學理論支撐。

不同

第一,loss function不同。

邏輯迴歸損失函數

支持向量機的目標函數

第二,支持向量機只考慮局部的邊界線附近的點,而邏輯迴歸考慮全局(遠離的點對邊界線的確定也起作用)。

第三,在解決非線性問題時,支持向量機採用核函數的機制,而LR通常不採用核函數的方法。在計算決策面時,SVM算法裏只有少數幾個代表支持向量的樣本參與了計算,也就是隻有少數幾個樣本需要參與覈計算(即kernal machine解的係數是稀疏的)。然而,LR算法裏,每個樣本點都必須參與決策面的計算過程,也就是說,假設我們在LR裏也運用核函數的原理,那麼每個樣本點都必須參與覈計算,這帶來的計算複雜度是相當高的。所以,在具體應用時,LR很少運用核函數機制。​

第四,​線性SVM依賴數據表達的距離測度,所以需要對數據先做normalization,LR不受其影響。一個計算概率,一個計算距離!​

第五,SVM的損失函數就自帶正則!!!(損失函數中的1/2||w||^2項),這就是爲什麼SVM是結構風險最小化算法的原因!!!而LR必須另外在損失函數上添加正則項!!!所謂結構風險最小化,意思就是在訓練誤差和模型複雜度之間尋求平衡,防止過擬合,從而達到真實誤差的最小化。未達到結構風險最小化的目的,最常用的方法就是添加正則項,SVM的目標函數里居然自帶正則項!!!再看一下上面提到過的SVM目標函數:

 

16 LR和SVM哪個更能對付異常點out lier?

我們再來看看,所謂out lier,是怎麼產生的,無非有兩種情況,一種就是這個樣本的標籤y搞錯了,一種就是沒搞錯,但這個樣本是一個個例,不具備統計特性。

不論對於哪一種情況,svm會在f將這個out lier預測的比較正確時,就停止,不會一直優化對out lier的預測,因爲沒有什麼太大意義了。而lr則不同,它會繼續要求f對這個out lier的預測進行優化,並且永不停止,顯然,這樣的優化很可能會削弱f的泛化性能,因爲沒有必要死磕out lier 。

答案就是SVM!!!

作者:江湖人稱冷不丁
鏈接:https://www.jianshu.com/p/e26d904f1996
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發佈了4 篇原創文章 · 獲贊 1 · 訪問量 2627
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章