【机器学习】支持向量机面试知识点小结
之前寫了幾篇原理性的文章,先列一個目錄好了。
【數學基礎】拉格朗日乘子法
【數學基礎】KKT條件
【數學基礎】拉格朗日對偶
【機器學習】SVM線性可分
【機器學習】SVM基本線性可分與多分類
【機器學習】SVM核方法
【機器學習】SVM之Hinge Loss,從LR到SVM,SVM核函數進一步理解
【機器學習】SVM之回歸模型
寫的還算詳細,原理與推導具體可以參照以上。不過還差了一篇關于SMO優化算法的學習筆記,之后補上。
接下來主要是總結一下SVM的一些零散trick及注意事項。
SVM原理小結
SVM是一種二分類模型。它的基本模型是在特征空間中尋找間隔最大化的分離超平面的線性分類器。(間隔最大化是它的獨特之處),通過該超平面實現對未知樣本集的分類。
- 當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性分類器,即線性可分支持向量機。
- 當訓練數據近似線性可分時,引入松弛變量,通過軟間隔最大化,學習一個線性分類器,即線性支持向量機。
- 當訓練數據線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支持向量機。
SMO算法三個細節性問題
SVM核函數意義、種類與選擇
意義:原始樣本空間中可能不存在這樣可以將樣本正確分為兩類的超平面,但是我們知道如果原始空間的維數是有限的,也就是說屬性數是有限的,則一定存在一個高維特征空間能夠將樣本劃分。SVM通過核函數將輸入空間映射到高維特征空間,最終在高維特征空間中構造出最優分離超平面,從而把平面上本身無法線性可分的數據分開。核函數的真正意義是做到了沒有真正映射到高維空間卻達到了映射的作用,即減少了大量的映射計算。
種類:參見【機器學習】SVM核方法
選擇:
- 利用專家先驗知識選定核函數,例如已經知道問題是線性可分的,就可以使用線性核,不必選用非線性核。
- 如果特征的數量大到和樣本數量差不多,則選用線性核函數SVM或LR。
- 如果特征的數量小,樣本的數量正常,則選用高斯核函數SVM。
- 如果特征的數量小,樣本數量很多,由于求解最優化問題的時候,目標函數涉及兩兩樣本計算內積,使用高斯核明顯計算量會大于線性核,所以手動添加一些特征,使得線性可分,然后可以用LR或者線性核的SVM;
- 利用交叉驗證,試用不同的核函數,誤差最小的即為效果最好的核函數。
- 混合核函數方法,將不同的核函數結合起來。
為什么要將求解SVM的原始問題轉換為其對偶問題
- 無論原始問題是否是凸的,對偶問題都是凸優化問題;
- 對偶問題可以給出原始問題一個下界;
- 當滿足一定條件(KKT條件或Slater條件)時,原始問題與對偶問題的解是完全等價的;
- 可以自然引入核函數。
SVM為什么采用間隔最大化
當訓練數據線性可分時,存在無窮個分離超平面可以將兩類數據正確分開。感知機或神經網絡等利用誤分類最小策略,求得分離超平面,不過此時的解有無窮多個。線性可分支持向量機利用間隔最大化求得最優分離超平面,這時,解是唯一的。另一方面,此時的分隔超平面所產生的分類結果是最魯棒的,對未知實例的泛化能力最強。
SVM對噪聲敏感
- 增、刪非支持向量樣本對模型沒有影響;
- 支持向量樣本集具有一定的魯棒性;
- 有些成功的應用中,SVM 方法對核的選取不敏感
- 噪聲數量太多
- 噪聲以新的分布形式出現,與原先樣本集的噪聲分布表現的相當不同。此時噪聲也有大概率落在最大分類間隔中間,從而成為支持向量,大大影響模型。
所以我們常說的魯棒性其實是主要是體現在對Outlier(異常點、離群點)上。
SVM缺失值影響
這里說的缺失數據是指缺失某些特征數據,向量數據不完整。SVM沒有處理缺失值的策略(決策樹有)。而SVM希望樣本在特征空間中線性可分,若存在缺失值它們在該特征維度很難正確的分類(例如SVM要度量距離(distance measurement),高斯核,那么缺失值處理不當就會導致效果很差),所以特征空間的好壞對SVM的性能很重要。缺失特征數據將影響訓練結果的好壞。
SVM在大數據上有哪些缺陷
SVM的空間消耗主要是在存儲訓練樣本和核矩陣,由于SVM是借助二次規劃來求解支持向量,而求解二次規劃將涉及m階矩陣的計算(m為樣本的個數),當m數目很大時該矩陣的存儲和計算將耗費大量的及其內存和運算時間。如果數據量很大,SVM的訓練時間就會比較長,所以SVM在大數據的使用中比較受限。
SVM之防止過擬合以及如何調節懲罰因子C
過擬合是什么就不再解釋了。SVM其實是一個自帶L2正則項的分類器。SVM防止過擬合的主要技巧就在于調整軟間隔松弛變量的城發因子C。C越大表明越不能容忍錯分,當無窮大時則退化為硬間隔分類器。合適的C大小可以照顧到整體數據而不是被一個Outlier給帶偏整個判決平面。至于C大小的具體調參通常可以采用交叉驗證來獲得。每個松弛變量對應的懲罰因子可以不一樣。
SVM中樣本偏斜的處理方法
樣本偏斜是指數據集中正負類樣本數量不均,比如正類樣本有10000個,負類樣本只有100個,這就可能使得超平面被“推向”負類(因為負類數量少,分布得不夠廣),影響結果的準確性。
對于樣本偏斜(樣本不平衡)的情況,在各種機器學習方法中,我們有針對樣本的通用處理辦法:如何解決機器學習中數據不平衡問題。
僅在SVM中,我們可以通過為正負類樣本設置不同的懲罰因子來解決樣本偏斜的問題。具體做法是為負類設置大一點的懲罰因子,因為負類本來就少,不能再分錯了,然后正負類的懲罰因子遵循一定的比例(如下文三種情況所述),具體值要通過實驗確定。
作者:就是楊宗
鏈接:https://www.jianshu.com/p/8a499171baa9
來源:簡書
SVM的支持向量
- 在分類問題中,分線性可分和基本線性可分兩種情況討論:
- 在線性可分SVM中,那些距離決策超平面最近的向量(間隔邊界上的向量)就是支持向量。
- 在基本線性可分SVM中,支持向量分三種,1、在決策超平面間隔邊界上的向量。2、在決策超平面上的向量。3、誤分類的樣本向量。
- 在回歸問題中,支持向量是那些在tube邊界及之外的向量,模型的參數也僅由這些支持向量決定。
SVM處理多分類
From:SVM多類分類方法
SVM多類分類方法的實現根據其指導思想大致有兩種:
1)將多類問題分解為一系列SVM可直接求解的兩類問題,基于這一系列SVM求解結果得出最終判別結果。
2)通過對前面所述支持向量分類機中的原始最優化問題的適當改變,使得它能同時計算出所有多類分類決策函數,從而“一次性”地實現多類分類。原始問題可以改寫為:
雖然第2)種指導思想看起來簡單,但是由于它的最優化問題求解過程太復雜,計算量太大,實現起來比較困難,因此未被廣泛應用。而基于1)種指導思想的SVM多類分類方法主要有5種。
1、一對其余法(One Vs All || One Vs Rest)
一類對余法(One versus rest,OVR)是最早出現也是目前應用最廣泛的方法之一,其步驟是構造k個兩類分類機(設共有k個類別),其中第i個類為正類,其余類別點為負類進行訓練。判別時,輸入信號分別經過k個分類機共得到k個輸出值,若只有一個出現,則其對應類別為輸入信號類別;實際情況下構造的決策函數總是有誤差的,若輸出不只一個(不只一類聲稱它屬于自己),或者沒有一個輸出為(即沒有一個類聲稱它屬于自己),則比較輸出值,最大者對應類別為輸入的類別。
這種方法的優點是,對k類問題,只需要訓練k個兩類分類支持向量機,故其所得到的分類函數的個數(k個)較少,其分類速度相對較快。
2、 一對一(One Vs One,Libsvm用的就是這個策略)
該方法在每兩類之間訓練一個分類器,因此對于一個k類問題,將有個分類函數。當對一個未知樣本進行分類時,每個分類器都對其類別進行判斷。并為相應的類別“投上一票”,最后得票最多的類別即作為該未知樣本的類別。決策階段采用投票法,可能存在多個類的票數相同的情況,從而使未知樣本同時屬于多個類別,影響分類精度。
3、DAG方法(有向無環圖)
DAG-SVMS是由PIatt提出的決策導向的循環圖DAG導出的,是針對“一對一”SVMS存在誤分,拒分現象提出的。這種方法的訓練過程類似于“一對一”方法,k類別問題需要求解個支持向量機分類器,這些分類器構成一個有向無環圖。該有向無環圖中含有個內部節點和k個葉節點,每個節點對應一個二類分類器。
DAG-SVMS簡單易行,只需要使用k-1個決策函數即可得出結果,較“一對一”方法提高了測試速度,而且不存在誤分、拒分區域;另外,由于其特殊的結構,故有一定的容錯性(體現在最后一層得出分類時,一個樣本的類別判定依據可以來自兩個SVM),分類精度較一般的二叉樹方法高。然而,由于存在自上而下的“誤差累積”現象是層次結構固有弊端,DAG-SVMS也逃脫不掉。即如果在某個節點上發生了分類錯誤,則會把分類錯誤延續到該結點的后續結點上。
4、層次支持向量機(決策樹方法)
決策樹的基本思想是從根節點開始,采用某種方法將該結點所包含的類別劃分為兩個子類,然后再對兩個子類進一步劃分,如此循環,直到子類中只包含一個類別為止。這樣就得到一個倒立的二叉樹。最后,在二叉樹各決策節點訓練支持向量機分類器,實現對識別樣本的分類。決策樹支持向量機多分類方法有很多種,不同方法的主要區別在于設計樹結構的方法不同。
完全二叉樹結構分類時使用的平均分類器數目為,偏二叉樹使用的平均分類器數為,具有其他層次結構的二叉樹使用的分類器平均值介于二者之間。完全二叉樹分類時所需要的分類器數目最少,因此具有較少支持向量的完全二叉樹分類器速度也是比較快的。
5、糾錯輸入編碼法(ECOC)
對于K類分類問題,可以根據不同方法構造一系列的兩類分類問題,對于每個兩類分類問題可以建立一決策函數。共得到L個決策函數,如果這些決策數完全正確,K類中的每一類都對應一個元素為-1或+1的長度為L的序列,按照K類中的第一類、第二類,......,第K類的順序,把這些數列排列起來,便可以得到一個K行L列的編碼矩陣,若要判斷一個測試輸入點的歸屬,首先用所得到的L個決策函數,得到一個元素為-1或1的長度為L的數列,然后將此數列與先前得到矩陣比較,相應于矩陣中有一行且僅有一行向與此數列相同,這個行數就是輸入點的歸屬類;若矩陣中沒有一行與該數列相同,可以通過計算漢明距離(漢明距離度量了通過替換字符的方式將字符串x變成y所需要的最小的替換次數)找出最近的一行,該行對應的類別即為該樣本的類別。
SVM優缺點
優點:
①增、刪非支持向量樣本對模型沒有影響;
②支持向量樣本集具有一定的魯棒性;
③有些成功的應用中,SVM?方法對核的選取不敏感
SVM?是一種有堅實理論基礎的新穎的小樣本學習方法。它基本上不涉及概率測度及大數定律等,因此不同于現有的統計方法。從本質上看,它避開了從歸納到演繹的傳統過程,實現了高效的從訓練樣本到預報樣本的“轉導推理”,大大簡化了通常的分類和回歸等問題。
缺點:
?
參考文章:
支持向量機(SVM)的優缺點
?
總結
以上是生活随笔為你收集整理的【机器学习】支持向量机面试知识点小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】逻辑回归特征的离散化与交叉
- 下一篇: 【机器学习】决策树知识点小结