1.函數最優化問題
1.1 無約束條件的最優化問題
1.2 有約束條件的最優化問題
以下約束條件中沒有考慮 >0 的情況,因爲可以由小於等於0反推出來。
將以上最優化問題命名爲原始(最優化)問題。
凸優化問題:對於上述有約束條件的最優化問題,目標函數 f(x) 和約束函數 都是R上連續可微的凸函數,是R上的仿射函數(滿足)
1.3 求解最優化問題
方法:梯度下降、L-BFGS、IIS等
1.4 拉格朗日函數
拉格朗日函數是將原始問題的f(x)和約束條件進行整合,
使有約束條件的最優化問題>>>>>轉爲>>>>>無約束條件的最優化問題。
使原始問題的一次優化問題>>>>>轉爲>>>>>極小極大的二次優化問題。
二次規劃(quadratic programming )
在約束最優化問題中,常利用拉格朗日對偶性(Lagrange duality)將原始問題轉換爲對偶問題,通過求解對偶問題得到原始問題的解。
拉格朗日乘子(Lagrange multiplier):
拉格朗日乘子向量:
拉格朗日函數的特性
極小極大
由拉格朗日函數的特性可知,當x滿足原始問題約束時, 就是原始問題的f(x),此時進行極小化就等同於對原始(最優化)問題進行極小化,解是相同的,即:
對偶問題
被稱爲拉格朗日函數的極大極小問題,也被稱爲原始問題的對偶問題。
定義 爲對偶最優化問題的最優解,當 f(x)和爲凸函數,是仿射函數時,有:
,其中的約束條件爲KKT(Karush-Kuhn-Tucker)條件:
2.Support Vector Machine
SVM:線性的分類(二分類)算法。
基本思想:求解能夠正確劃分訓練數據集,且幾何間隔最大的分離超平面。間隔最大化,意味着以充分大的確信度對訓練數據進行分類。
支持向量機(Support Vector Machine)是Cortes和Vapnik於1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢。
2.1 線性可分SVM
線性可分性
給定一個數據集,如果存在某個超平面,滿足:
- 將數據集的正實例點和負實例點完全正確的劃分到超平面的兩側;
- 對所有的實例,都有;對所有的實例,都有。
則稱以上數據集是線性可分(linearly separable)的。
模型判別式:
,是線性的公式,本質是在高維空間找到一個超平面來分隔數據。
是法向量,決定超平面的方向,b 是位移項,決定超平面與原點距離。
【問題】通常這樣用於分隔的超平面有很多,哪一個最好?
最好的超平面:
- 完美的分類正負例
- 距離最近的點越遠越好(對點位置變動的容忍度大),即硬間隔越大越好。(最大間隔法)
- (根據以上兩點確定的超平面,求出y=0時的w值和b值。)
幾何距離和函數距離
函數距離(functional margin)可以表示分類的正確性和分類預測的確信度。
損失函數與優化
- 根據距離公式,可以將最好的超平面的定義轉換爲函數的最優化問題:
- 如果將 w 和 b 等比例縮放爲 λw 和 λb,函數間隔變成 λγ',函數間隔的改變對不等式約束沒有影響,對目標函數的優化也沒有影響。於是,爲了方便求解,直接令 γ' = 1,改變上述最優化問題,得到
決策超平面的標準表示:
即 在線性可分的SVM中,假設超平面可以將樣本正確分類,則有當時,;當時,。
- 進一步根據上述最優化問題,構建拉格朗日函數:
- 根據對偶函數,先求極小值,拉格朗日函數分別對 w 和 b 求導,求出 w 和 b 各自與 α 的關係。
根據以上推導,求導得出:
- 將求導結果代入原來的函數:
- 進一步轉換對偶問題的優化問題爲:
- 通常使用SMO算法(序列最小最優化算法)進行求解,可以求得一組 α*使得函數最優化。求解之後,α*成爲已知數,根據KKT條件,再求出 w*,b* .
模型與支持向量
將求出的w與b代入模型判別式:
根據KKT條件,
若,則該樣本不會出現在模型判別式中,對f(x)沒有影響;
若,則,對應的樣本點出現在最大間隔邊界上,是支持向量。
【結論】模型判別式只與支持向量有關,大部分樣本都不需要保留,保持了稀疏性;或者認爲模型與所有樣本相關,只不過當樣本不是支持向量時,。
2.2線性SVM
線性不可分、軟間隔、損失函數
爲了得到最好的分隔超平面,滿足的條件有:
- (滿足約束條件時)可以把正負例完美分開
- 找到間隔最大的點(函數優化問題)
對於線性不可分問題,會有噪聲點,不滿足線性可分SVM中的約束條件,爲了放鬆約束條件,而引入鬆弛變量。ξ代表異常點嵌入間隔面的深度,我們要在能選出符合約束條件的最好的w和b的同時,讓嵌入間隔面的總深度越小越好。
當所有樣本都正確分類時,間隔帶稱爲硬間隔(hard margin),此時樣本都滿足約束:
當某些樣本不滿足約束條件是,間隔被稱爲軟間隔(soft margin),我們希望不滿足約束條件的樣本越少越好。
,當y=+1或y=-1時,正確分類情況下,特別的,對於硬間隔的情況,,並且乘積越大越好;錯誤分類的情況下,。
SVM損失函數需要考慮到兩種情況:錯誤分類的情況;軟間隔的情況。
理想的損失函數(0/1損失函數)是希望不滿足約束條件的樣本越少越好:
(0/1損失函數其實只考慮了錯誤分類的情況。)
總體損失函數可寫爲:
替代損失、hinge損失
以上是非凸、非連續的,不是連續可導的,不易求解,因此尋找其他函數來代替,稱爲替代損失(surrogate loss)。
另外0/1損失函數沒有保證分類的足夠高的確信度,於是使用0/1損失的上界---hinge損失來構造損失函數。
其中,hinge損失(合頁損失函數): ,
我們希望硬間隔完全正確分類的情況下,損失loss=0,此時;其他情況(包括錯誤分類和軟間隔),隨着,損失越來越小,loss-->0。
當時,總體損失函數爲:,
令,有,條件分析如下:
當時,是軟間隔情況下的取值,軟間隔/硬間隔的情況同時考慮時,有:,
總體的損失函數爲:
優化目標分析
最優化問題
- 線性SVM的原始問題(凸二次規劃問題)如下:
- 分類決策函數
求出原始問題的最優解,代入,即得到分類決策函數。
分離超平面爲
- 構建拉格朗日函數
- 求解
- 用SMO算法求出 α*.
網格搜索
【問題】如何確定正則化常數 C 的取值?
C是一個超參數(即無法通過直接的數學計算求解的參數),可以在一個範圍內爲C賦n個值,分別得到n個模型,通過有效集來驗證n個模型的誤差,選擇最好的模型所對應的C的值。
模型與支持向量
SVM模型判別式的另一種表示:
【結論】:軟間隔SVM的最終模型和支持向量以及分類錯誤點有關,使用hinge損失函數時保持了稀疏性。
2.3非線性SVM
SVM升維
爲了處理線性不可分問題,可以引入升維,即把原始的 x 映射到更高維度的空間:
【問題】升維之後,再做向量的內積,會出現維度爆炸。
相當於是在做特徵轉換(feature transformation),即是先做特徵轉換再做內積,這種運算耗時而且可能會有無窮維。
【解決】引入核函數。思路:不具體計算向量的內積,而是直接定義的結果。
通過核方法,引入核函數,將線性學習器拓展爲非線性學習器,將原始樣本空間映射到另一個合適的特徵空間。
核技巧 kernel trick
例如:
將升維後,(假設我們知道升維後的形式)得到,此時如果直接計算,計算量大。
而引入核函數之後,直接轉化爲K(x,z)的計算,核函數和的計算是等價的。
核函數
核函數判斷:
如果和是核函數,
- 對於任意正數、,線性組合也是核函數。
- 核函數的直積也是核函數。
- 對任意函數,也是核函數。
2.4 SVM算法總結
算法流程
- 選擇核函數及對應的超參數;
- 選擇懲罰係數C;
- 構造最優化問題;
- 利用SMO算法求出一組 α* ;
- 根據 α*計算w*
- 根據α*找到全部的支持向量,計算每個支持向量對應的
- 對求均值,得到 b*
- 得到判別函數和超平面。
算法優劣
【優點】:SVM使用邊界點作爲支持向量來找出分類界限,邊界點以外的樣本點如何分佈對分類模型沒有影響,抗數據擾動,抗噪聲。
【缺點】:SVM的分類結果只有幾何意義,喪失了概率意義。
必須遍歷所有數據點,才知道哪個是邊界點,所以數據點之間是耦合的。當數據量非常大時,對硬件要求高,因爲需要所有數據點,做分佈式也受限。
【參考】
1.《統計學習方法》第二版 李航著;
2.https://blog.csdn.net/u014540876/article/details/80172623
3.《PRML》
4.《機器學習》周志華
5.臺灣大學李宏毅《機器學習》課程