參考文章:
1、大神的部落格,支援向量機原理,特別是smo演算法的講解很好
2、怎麼理解決策樹、xgboost能處理缺失值?而有的模型(svm)對缺失值比較敏感呢?
3、svm rbf 主要超引數概述
4、李航《統計學習方法》
定義:二分類模型,定義在特徵空間上的的間隔最大的線性分類器,通過核技巧(kernel trick),也可作為非線性分類器。
分類:
線性可分svm,即硬間隔svm
線性svm,即軟間隔svm
非線性svm,即軟間隔+核技巧
svm演算法的主要優點有:
1) 解決高維特徵的分類問題和回歸問題很有效,在特徵維度大於樣本數時依然有很好的效果。
2) 僅僅使用一部分支援向量來做超平面的決策,無需依賴全部資料。
3) 有大量的核函式可以使用,從而可以很靈活的來解決各種非線性的分類回歸問題。
4)樣本量不是海量資料的時候,分類準確率高,泛化能力強。
svm演算法的主要缺點有:
1) 如果特徵維度遠遠大於樣本數,則svm表現一般。
2) svm在樣本量非常大,核函式對映維度非常高時,計算量過大,不太適合使用。
3)非線性問題的核函式的選擇沒有通用標準,難以選擇乙個合適的核函式。
4)svm對缺失資料敏感。
這裡說的缺失資料是指缺失某些特徵資料,向量資料不完整。svm沒有處理缺失值的策略(決策樹有)。而svm希望樣本在特徵空間中線性可分,所以特徵空間的好壞對svm的效能很重要。缺失特徵資料將影響訓練結果的好壞。
假設輸入空間為歐式空間或離散空間,特徵空間是歐式空間或希爾伯特空間,支援向量機的學習實在特徵空間進行的。【拓:機器學習中各個空間的含義】
特徵是對原始資料的抽象,是原始資料的抽象表示,通過使用數值表示原始資料。注:感知機用誤分類最小策略,求得超平面,解有無窮多個
函式間隔和幾何間隔
如果是負號前面加乙個負號,此處為了方便就只討論分類為正的時候。
函式間隔/||w|| = 幾何間隔
所以支援向量機的基本想法是求解能夠正確劃分資料集並且幾何間隔最大的分離超平面(此處的幾何分隔是距離超平面點的間隔中取最小的)
所以最大間隔分離超平面可以表示為下面的約束最優化問題:
變成函式間隔:這個變換就是目標函式幾何間隔變成函式間隔,然後s.t處同時乘以||w||
函式間隔對約束和目標函式沒有影響,此處直接設為1,然後變成最小化,也就得到了我們要求的線性可分最大間隔模型:
總結一下:我們用幾何間隔構建模型,然後換成函式間隔,利用函式間隔的等比例變化不變性將函式間隔化1,從而得到乙個簡化的模型。
下面為了求解這個最優化問題,引入對偶問題:
對偶問題往往更容易求解,變數只有n個(n為訓練集中的樣本個數),原始問題中的變數數量與樣本點的特徵個數相同,當樣本特徵非常多時,求解難度較大。
自然引入核函式
也就是說,先把對偶關係寫出來,用kkt條件化成只和拉格朗日係數相關的函式,然後求導得出係數,反求w和b。
其中,kkt條件:其實就是中間多了個kkt對偶互補條件,然後拉式係數 >= 0,然後上面是對各個係數的求導(將w和b轉換成拉式係數的表達),下面是原來的s.t條件
注:此處好像沒有對拉式係數求導(也就是第二項沒用到),因為對拉式係數求導就是h(x)=0
之所以「軟」,是引入了鬆弛變數乃木他_i,將看起來還算是線性的特徵,加一點可以變得東西。
最後得目標函式和part1中的一樣,但是s.t不一樣了,阿發_i多了乙個上限c,這個是通過另乙個拉式係數繆_i求得的。
另外,這個原函式還可以轉換為合頁損失函式:
引入了核技巧,就是將低維對映到高維,然後核函式的作用就是在低維計算高維的內積,其實高維對映只是個噱頭,直接上核函式就行了(boger face)
將p1和p2裡面的目標函式的xx變成k(xx),就好了。
核函式的類別:
線性核函式:k(x,z)=x∙z這就可以將前面的線性svm統一起來了
高斯核函式:又叫徑向基核函式
如果是svm分類模型,這兩個超引數分別是懲罰係數c和rbf核函式的係數γ,懲罰係數c即我們在之前原理篇裡講到的鬆弛變數的係數。它在優化函式裡主要是平衡支援向量的複雜度和誤分類率這兩者之間的關係,可以理解為正則化係數。當c比較大時,我們的損失函式也會越大,這意味著我們不願意放棄比較遠的離群點。這樣我們會有更加多的支援向量,也就是說支援向量和超平面的模型也會變得越複雜,也容易過擬合。反之,當c比較小時,意味我們不想理那些離群點,會選擇較少的樣本來做支援向量,最終的支援向量和超平面的模型也會簡單。scikit-learn中預設值是1。
另乙個超引數是rbf核函式的引數γ。回憶下rbf 核函式的表示式,γ主要定義了單個樣本對整個分類超平面的影響,當γ比較小時,單個樣本對整個分類超平面的影響比較小,不容易被選擇為支援向量,反之,當γ比較大時,單個樣本對整個分類超平面的影響比較大,更容易被選擇為支援向量,或者說整個模型的支援向量也會多(c和γ大的時候,支援向量都會增加)。scikit-learn中預設值是1樣本特徵數
如果把懲罰係數c和rbf核函式的係數γ一起看,當c比較大, γ比較大時,我們會有更多的支援向量,我們的模型會比較複雜,容易過擬合一些。如果c比較小 , γ比較小時,模型會變得簡單,支援向量的個數會少。
幾乎所有的推導走在smo之中,有幾個地方《統計機器學習》中沒有,所以網上的也沒什麼推導。
固定前兩個係數,得到簡化:
推導過程如下:
演算法總結:
這個是係數的上下限,可以看圖,直線上下平移(上圖)
係數的終止條件,其實就是根據軟間隔的kkt條件轉化的,推導過程見轉化
等以後有時間再推吧,因為好像沒有推這麼深的(其實是再看s8)
支援向量機專題 線性支援向量機
原文 當資料線性不可分時,使用硬間隔支援向量機很難得到理想的結果。但是如果資料近似線性可分,可以採用軟間隔支援向量機 線性支援向量機 進行分類。這通常適用於有少量異常樣本的分類,如果使用線性支援向量機,它會盡量使得所有訓練樣本都正確,如下圖所示。顯然這並不是最好的結果,軟間隔支援向量機可以權衡 間隔...
支援向量機
支援向量機 svm 一種專門研究有限樣本 的學習方法。是在統計學習理論基礎之上發展而來的。沒有以傳統的經驗風險最小化原則作為基礎,而是建立在結構風險最小化原理的基礎之上,發展成為一種新型的結構化學習方法。結構風險最小歸納原理 解決了有限樣本或小樣本的情況下獲得具有優異泛化能力的學習機器。包含了學習的...
支援向量機
支援向量 與分離超平面距離最近的樣本點的例項 優點 泛化錯誤率低,計算開銷不大,結果易解釋 缺點 對引數調節和核函式選擇敏感,原始分類器不加修改僅適用於處理二分類問題 適合資料型別 數值型和標稱型資料 每次迴圈中選擇兩個alpha進行優化處理。一旦找到一對合適的alpha,那麼久增大其中乙個同時減小...