1. 基本概念
SVM连舍,全稱是Support Vector Machine,中文名叫支持向量機(jī)涩哟。SVM的基本模型是在特征空間上找到最佳的分離超平面索赏,使得訓(xùn)練集上正負(fù)樣本間隔(Margin)最大盼玄。SVM是用來解決二分類問題的有監(jiān)督學(xué)習(xí)算法,在引入了核方法之后SVM也可以用來解決非線性問題潜腻。
SVM一般有下面三種:
硬間隔支持向量機(jī)(線性可分支持向量機(jī)):當(dāng)訓(xùn)練數(shù)據(jù)線性可分時(shí)埃儿,可通過硬間隔最大化,學(xué)習(xí)一個(gè)線性的分類器砾赔。
軟間隔支持向量機(jī)(線性支持向量機(jī)):當(dāng)訓(xùn)練數(shù)據(jù)近似線性可分時(shí)蝌箍,可通過軟間隔最大化,也學(xué)習(xí)一個(gè)線性的分類器暴心。
非線性支持向量機(jī):當(dāng)訓(xùn)練數(shù)據(jù)線性不可分時(shí)妓盲,可通過核方法以及軟間隔最大化,學(xué)習(xí)非線性支持向量機(jī)专普。
2. 硬間隔支持向量機(jī)
現(xiàn)有一個(gè)二維平面悯衬,平面上有兩種不同的數(shù)據(jù),分別用圈和叉表示檀夹。由于這些數(shù)據(jù)是線性可分的筋粗,所以可以用一條直線將這兩類數(shù)據(jù)分開,這條直線就相當(dāng)于一個(gè)超平面炸渡,超平面一邊的數(shù)據(jù)點(diǎn)所對應(yīng)的y全是-1?娜亿,另一邊所對應(yīng)的y全是1。?
這個(gè)超平面可以用分類函數(shù) f(x) = wx + b表示蚌堵,當(dāng)f(x)?等于0的時(shí)候买决,x便是位于超平面上的點(diǎn),而f(x)大于0的點(diǎn)對應(yīng)?y=1?的數(shù)據(jù)點(diǎn)吼畏,f(x)小于0的點(diǎn)對應(yīng)y=-1的點(diǎn)督赤,如下圖所示:
從直觀上而言,這個(gè)超平面應(yīng)該是最適合分開兩類數(shù)據(jù)的直線泻蚊。而判定“最適合”的標(biāo)準(zhǔn)就是這條直線離直線兩邊的數(shù)據(jù)的間隔最大躲舌。所以,得尋找有著最大間隔的超平面性雄。SVM的核心之一就是想辦法將“間隔”最大化没卸!
通過數(shù)學(xué)公式推導(dǎo)發(fā)現(xiàn):兩類樣本距離最大的因素僅僅和最佳超平面的法向量有關(guān)!?要找到具有“最大間隔”(maximum margin)的最佳超平面秒旋,就是找到以下的條件約束滿足式约计。
這就是SVM的基本型绣檬,現(xiàn)在我們已經(jīng)推導(dǎo)知道了。因?yàn)楝F(xiàn)在的目標(biāo)函數(shù)是二次的穷躁,約束條件是線性的帆精,所以它是一個(gè)凸二次規(guī)劃問題蜕便。這個(gè)問題可以用現(xiàn)成的QP?(Quadratic?Programming)?優(yōu)化包進(jìn)行求解坷衍。一言以蔽之:在一定的約束條件下疙渣,目標(biāo)最優(yōu)且轨,損失最小酒甸。
此外魄健,由于這個(gè)問題的特殊結(jié)構(gòu),還可以通過拉格朗日對偶性(Lagrange Duality)變換到對偶變量?(dual?variable)?的優(yōu)化問題插勤,即通過求解與原問題等價(jià)的對偶問題(dual?problem)得到原始問題的最優(yōu)解沽瘦,這就是線性可分條件下支持向量機(jī)的對偶算法,這樣做的優(yōu)點(diǎn)在于:一者對偶問題往往更容易求解农尖;二者可以自然的引入核函數(shù)析恋,進(jìn)而推廣到非線性分類問題。
2.1 拉格朗日對偶問題
引入拉格朗日乘子盛卡,則SVM的基本型問題的拉格朗日函數(shù)可寫為
以上推導(dǎo)結(jié)論是:我們并不關(guān)心單個(gè)樣本是如何的助隧,我們只關(guān)心樣本間兩兩的乘積,這也為后面核方法提供了很大的便利滑沧。?
2.2 SVM問題的KKT條件
SVM的基本型有不等式約束并村,因此上述過程滿足庫恩-塔克爾條件(Kuhn-Tucker condition KKT)條件:
訓(xùn)練完成之后,大部分的訓(xùn)練樣本都不需要保留滓技,最終的模型僅與支持向量有關(guān)哩牍。?如何求解α呢?很明顯這是一個(gè)二次規(guī)劃問題令漂,可使用通用的二次規(guī)劃算法來求解膝昆,但是SVM的算法復(fù)雜度是O(n*n),在實(shí)際問題中這種開銷太大了洗显。為了有效求解該二次規(guī)劃問題外潜,人們通過利用問題本身的特性,提出了很多高效算法挠唆,Sequential Minimal Optimization(SMO)就是一個(gè)常用的高效算法处窥。在利用SMO算法進(jìn)行求解的時(shí)候就需要用到上面的KKT條件。
3. 軟間隔支持向量機(jī)
在現(xiàn)實(shí)任務(wù)中很難找到一個(gè)超平面將不同類別的樣本完全劃分開玄组,即很難找到合適的核函數(shù)使得訓(xùn)練樣本在特征空間中線性可分滔驾。退一步說,即使找到了一個(gè)可以使訓(xùn)練集在特征空間中完全分開的核函數(shù)俄讹,也很難確定這個(gè)線性可分的結(jié)果是不是由于過擬合導(dǎo)致的哆致。解決該問題的辦法是在一定程度上運(yùn)行SVM在一些樣本上出錯(cuò),為此引入了“軟間隔”(soft margin)的概念患膛。
具體來說摊阀,硬間隔支持向量機(jī)要求所有的樣本均被最佳超平面正確劃分,而軟間隔支持向量機(jī)允許某些樣本點(diǎn)不滿足間隔大于等于1的條件。當(dāng)然在最大化間隔的時(shí)候也要限制不滿足間隔大于等于1的樣本的個(gè)數(shù)使之盡可能的少胞此。于是我們引入一個(gè)懲罰系數(shù)C>0 臣咖,并對每個(gè)樣本點(diǎn)(xi→,yi)引入一個(gè)松弛變量(slack variables)ξ≥0?此時(shí)
對比軟間隔支持向量機(jī)的對偶問題和硬間隔支持向量機(jī)的對偶問題可發(fā)現(xiàn)二者的唯一差別就在于對偶變量的約束不同,軟間隔支持向量機(jī)對對偶變量的約束是0≤αi≤C漱牵,硬間隔支持向量機(jī)對對偶變量的約束是0≤αi夺蛇,于是可采用和硬間隔支持向量機(jī)相同的解法求解式。
對于軟間隔支持向量機(jī)酣胀,KKT條件要求:
軟間隔支持向量機(jī)的最終模型僅與支持向量有關(guān)刁赦。
4. 非線性支持向量機(jī)
現(xiàn)實(shí)任務(wù)中原始的樣本空間D中很可能并不存在一個(gè)能正確劃分兩類樣本的超平面。對于這樣的問題可以通過將樣本從原始空間映射到特征空間使得樣本在映射后的特征空間里線性可分闻镶。
在上文中我們提到其實(shí)我們根本不關(guān)心單個(gè)樣本的表現(xiàn)甚脉,只關(guān)心特征空間中樣本間兩兩的乘積,因此我們沒有必要把原始空間的樣本一個(gè)個(gè)地映射到特征空間中儒溉,只需要想法辦求解出樣本對應(yīng)到特征空間中樣本間兩兩的乘積即可宦焦。為了解決該問題可設(shè)想存在核函數(shù):
這給求解帶來很大的方便。于是可寫為:
同樣的我們只關(guān)心在高維空間中樣本之間兩兩點(diǎn)乘的結(jié)果而不關(guān)心樣本是如何變換到高維空間中去的顿涣。求解后即可得到:
剩余的問題同樣是求解αi波闹,然后求解w和b即可得到最佳超平面。
5.支持向量回歸
支持向量機(jī)不僅可以用來解決分類問題還可以用來解決回歸問題涛碑,稱為支持向量回歸(Support Vector Regression精堕,SVR)。
6.常用核函數(shù)
7. SVM的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):SVM在中小量樣本規(guī)模的時(shí)候容易得到數(shù)據(jù)和特征之間的非線性關(guān)系蒲障,可以避免使用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)選擇和局部極小值問題歹篓,可解釋性強(qiáng),可以解決高維問題揉阎。
缺點(diǎn):SVM對缺失數(shù)據(jù)敏感庄撮,對非線性問題沒有通用的解決方案,核函數(shù)的正確選擇不容易毙籽,計(jì)算復(fù)雜度高洞斯,主流的算法可以達(dá)到O(n*n)的復(fù)雜度,這對大規(guī)模的數(shù)據(jù)是吃不消的坑赡。
8. 參考文獻(xiàn)
周志華. 機(jī)器學(xué)習(xí) [D]. 清華大學(xué)出版社烙如,2016.?
華校專、王正林. Python大戰(zhàn)機(jī)器學(xué)習(xí) [D]. 電子工業(yè)出版社毅否,2017.?
Peter Flach著亚铁、段菲譯. 機(jī)器學(xué)習(xí) [D]. 人民郵電出版社,2016.?
SVM:https://blog.csdn.net/liugan528/article/details/79448379
支持向量機(jī)通俗導(dǎo)論(理解SVM的三層境界)https://blog.csdn.net/v_july_v/article/details/7624837