機器學習(Machine Learning)是一門多學科交叉專業,涵蓋概率論知識,統計學知識以及複雜算法知識,使用計算機作爲工具並致力於真實實時的模擬人類學習方式, 並將現有內容進行知識結構劃分來有效提高學習效率。本專欄將以學習筆記形式對《機器學習》的重點基礎知識進行總結整理,歡迎大家一起學習交流!
專欄鏈接:《機器學習》學習筆記
1. 概述
支持向量機(support vector machines, SVM)是一種二分類模型。
它的基本模型是定義在特徵空間上的間隔最大的線性分類器,間隔最大使它有別於感知機;
支持向量機還包括核技巧,這使它成爲實質上的非線性分類器。
與之前學習筆記所述的分類問題不同的是:分類問題強調將不同類的樣本點以一條線分隔開,而支持向量機則是強調將不同的兩類樣本點分隔的間隔最大。
★支持向量機的學習策略就是間隔最大化,可形式化爲一個求解凸二次規劃的問題,也等價於正則化的合頁損失函數的最小化問題,支持向量機的學習算法是求解凸二次規劃的最優化算法。
其中,“凸”的含義爲只有單極值點(一元二次函數那樣),而不是有多個極值點;
“二次”含義爲諸如: 繪製的圖形樣式。
☆支持向量機學習方法包含構建由簡至繁的模型:
☞線性可分支持向量機——硬間隔支持向量機(硬間隔最大化)——訓練數據線性可分
☞線性支持向量機——軟間隔支持向量機(軟間隔最大化)——訓練數據近似線性可分
☞非線性支持向量機——核技巧及軟間隔最大化——訓練數據線性不可分。
☆核方法是比支持向量機更爲一般的機器學習方法。
2.感知機
感知機的模型就是嘗試找到一條直線,能夠把二元數據隔離開。
放到三維空間或者更高維的空間,感知機的模型就是嘗試找到一個超平面,能夠把所有的二元類別隔離開。
對於這個分離的超平面,定義爲,如下圖。
在超平面上方的,我們定義爲y=1;
在超平面下方的,我們定義爲y=−1。
可以看出滿足這個條件的超平面並不止一個。如何判斷哪個超平面的分類效果更好。
接着我們看感知機模型的損失函數優化,它的思想是讓所有誤分類的點(定義爲M)到超平面的距離和最小,即最小化下式:
當w和b成比例的增加,比如,當分子的w和b擴大N倍時,分母的L2範數也會擴大N倍。
在感知機模型中,我們採用的是保留分子,固定分母,即最終感知機模型的損失函數爲:
那麼如果我們不是固定分母,改爲固定分子,作爲分類模型的改進問題進而引入了SVM。
3.支持向量機
3.1 引子
線性模型:在樣本空間中尋找一個超平面, 將不同類別的樣本分開。
-Q . 將訓練樣本分開的超平面可能有很多, 哪一個好呢?
-A . 應選擇”正中間”, 對局部擾動容忍性好, 魯棒性高, 對未見示例的泛化能力最強。
在感知機模型中,可以找到多個可以分類的超平面將數據分開,並且優化時希望所有的點都離超平面遠。
但是實際上離超平面很遠的點已經被正確分類,讓它離超平面更遠並沒有意義。
反而最關心是那些離超平面很近的點,這些點很容易被誤分類。
如果可以讓離超平面比較近的點儘可能的遠離超平面,那分類效果會好有一些。
SVM的思想起源正起於此。
3.2 間隔
函數間隔是沒有統一量度,沒有規範化,並不能正常反應點到超平面的距離,在感知機模型裏,當分子成比例的增長時,分母也是成倍增長。爲了統一度量,需要對法向量w加上約束條件,這樣就得到了幾何間隔 , 定義爲:
在樣本空間中,劃分超平面可通過如下線性方程來描述:
其中爲法向量,決定了超平面的方向;
爲位移項,決定了超平面與原點之間的距離。
劃分超平面可被法向量和位移確定,並將其記爲。
樣本空間中任意點到超平面的距離可寫爲
假設超平面能將訓練樣本正確分類,即對於
若,則有;
若,則有。令
如下圖所示,距離超平面最近的這幾個訓練樣本點使上式等號成立,他們被稱爲“支持向量”
兩個異類支持向量到超平面的的距離之和爲
它被稱爲“間隔”。
欲找到具有“最大間隔”的劃分超平面,也就是要找到能滿足式中約束的參數和,使得最大,即
顯然,爲了最大化間隔,僅需最大化,這等價於最小化,於是上式可寫成
這就是支持向量機(SVM)的基本型。 ★★★
3.3 支持向量
如下圖所示,分離超平面爲 ,如果所有的樣本不光可以被超平面分開,還和超平面保持一定的函數距離(下圖函數距離爲1),那麼這樣的分類超平面是比感知機的分類超平面優的。
可以證明,這樣的超平面只有一個。
和超平面平行的保持一定的函數距離的這兩個超平面對應的向量,我們定義爲支持向量,如下圖虛線所示。
★超平面方程:
★最大間隔: 尋找參數和, 使得最大.
3.4 對偶問題
其中f(x)是目標函數,g(x)爲不等式約束,h(x)爲等式約束。
若f(x),h(x),g(x)三個函數都是線性函數,則該優化問題稱爲線性規劃。
若任意一個是非線性函數,則稱爲非線性規劃。
若目標函數爲二次函數,約束全爲線性函數,稱爲二次規劃。
若f(x)爲凸函數,g(x)爲凸函數,h(x)爲線性函數,則該問題稱爲凸優化。
注意這裏不等式約束g(x)<=0則要求g(x)爲凸函數,若g(x)>=0則要求g(x)爲凹函數。
凸優化的任一局部極值點也是全局極值點,局部最優也是全局最優。
對於稍前所述的公式(SVM的基本型)
與
使用拉格朗日乘子法可得到其“對偶問題”
對上式的每條約束添加拉格朗日乘子,該問題的拉格朗日函數可寫爲:
我們希望求解SVM的基本型公式來得到大間隔劃分超平面所對應的模型
其中和是模型參數。
注意到SVM的基本型是一個凸二次規劃問題。能直接用現成的優化計算包求解,但我們又更高效的辦法。
拉格朗日乘子法
第一步:引入拉格朗日乘子得到拉格朗日函數
即
第二步:令對和的偏導爲零可得
第三步:回代可得
不難發現,這是一個二次規劃問題。
然而,該問題的規模正比於訓練樣本數,這會在實際任務中造成很大的開銷。
爲了避開這個方案,人們提出了很多高效算法,SMO是其中一個著名的代表。
解的稀疏性
求出和後,可得最終模型:
KKT條件:
對任意樣本,總有或。
若,則該樣本將不會在式的求和中出現,也就不會對f(x)有任何影響;
若,則必有,所對應的樣本點位於最大間隔邊界上,是一個支持向量。
支持向量機解的稀疏性: 訓練完成後, 大部分的訓練樣本都不需保留, 最終模型僅與支持向量有關。
重要性質:模型訓練完後,大部分的訓練樣本都不需要保留,最終模型僅僅與支持向量有關。
對偶方法重新求解前面的問題
如下圖所示的訓練數據集,其正實例點是,,負實例點是
試求其線性可分的支持向量機。
解:正實例點是,
負實例點是
根據SVM的基本型
可得:
第一步:轉化爲對偶問題
由拉格朗日乘子法
可得(求最小化問題添負號,三個樣本故m=3,正樣本y=+1,負樣本y=-1)
即
注:這裏贅述一點關於上式中的難點推導:
已知正樣本1:
正樣本2:
負樣本 :
那麼是將樣本全部遍歷一遍
當i=1,j=1時:
就這樣將i=1,2,3和y=1,2,3兩兩組合共九種情況結果相加即可
算時唯一一點要注意的是負樣本的取值前要添加負號!
第二步:代入約束條件
目標函數變形爲:
接下來分別對求偏導
令上兩式均等於0
由於,不滿足KKT條件第一條,故不符合要求,從而最小值在邊界達到;
第三步:利用KKT條件,計算向量
又由於
根據公式可得:
對上式計算具體而言,
第四步:利用KKT條件,計算b
如果樣本變多,人工計算不現實,需要一種高效的計算算法。
3.5 核函數
3.6 軟間隔與正則化
3.7 支持向量迴歸
3.8 核方法
(待更新……)
歡迎留言,一起學習交流~~~
感謝閱讀