從線性到非線性模型
1、線性迴歸,嶺迴歸,Lasso迴歸,局部加權線性迴歸
2、logistic迴歸,softmax迴歸,最大熵模型
3、廣義線性模型
4、Fisher線性判別和線性感知機
5、三層神經網絡
6、支持向量機
六、支持向量機
在線性模型中,Fisher線性判別和線性感知機可以說是以上所有模型的分類依據,前者是映射到一維執其兩端進行分類,後者是在高維空間找一個線性超平面將兩類分開(兩類可擴展到多類)。支持向量機屬於後者,但主要有以下幾點改進:
1)提出硬間隔線性可分,在感知機的基礎上提出了線性可分假設(無損失),最大化最小間隔
2)提出軟間隔線性可分,得到了hinge損失代替感知機的線性損失(後面補充一個線性模型損失對比圖)
3)結合核函數將數據映射到高維空間,使得模型具有非線性能力
4)具有感知機的一切解釋性,同時目標函數的對偶形式是凸二次規劃問題

硬間隔(最大化最小間隔分類器):
線性感知機中由於沒有線性可分假設,所以其目標函數定義爲最小化錯分樣本的損失,而硬間隔SVM則提出了一個線性可分假設,即樣本在高維空間中線性可分,那麼使得兩類分開的超平面一定有無限個。硬間隔SVM則在這些超平面中找出最優的(即所有樣本到超平面距離加和最小化),所以有如下目標函數:
min∑i=1m1||w||2yi(w⋅xi+b)
其中
1||w||2yi(w⋅xi+b)
爲點到平面的幾何間隔,去掉係數爲函數間隔。最大化最小間隔分類器則採用等價形式—使得最難分的樣本離超平面距離儘可能的大—最大化最小間隔分類器
maxw,bγs.t.1||w||2yi(w⋅xi+b)>γ,i∈1,2...m
maxw,bγ||w||2s.t.yi(w⋅xi+b)>γ,i∈1,2...m
令
γ=1
有:
minw,b12||w||2s.t.yi(w⋅xi+b)−1>0,i∈1,2...m
到此,上式爲硬間隔分類器的原問題最終形式。上述問題可使用拉格朗日乘子法和對偶問題進行求解。
拉格朗日函數
minw,b12||w||2−∑i=1mαi(yi(w⋅xi+b)−1)s.t.▽L(w,b,αi)=0αi(yi(w⋅xi+b)−1)=0αi≥0yi(w⋅xi+b)−1>0,i∈1,2...m
其中
▽L(w,b,αi)=0
由Fritz John條件得出,
αi(yi(w⋅xi+b)−1)=0
爲互補鬆弛條件,互補鬆弛條件與支持向量有密切關係。由上述約束條件有:
▽L(w,b,αi)w=w−∑i=1mαiyixi=0▽L(w,b,αi)b=∑i=1mαiyi=0b=yj−∑i=1mαiyixi⋅xj
將上式帶入到拉格朗日函數,得到關於
α
表示的函數:
L(w,b,α)=−12∑i=1m∑j=1mαiαjyjyjxixj+∑i=1mαi
最大化關於
α
的函數即爲原問題的對偶問題,如下:
maxL(w,b,α)=−12∑i=1m∑j=1mαiαjyjyjxixj+∑i=1mαi⇔min12∑i=1m∑j=1mαiαjyjyjxixj−∑i=1mαis.t.∑i=1mαiyi=0αi≥0
解出上式目標函數
α
後,有
w,b
w=∑i=1mαiyixib=yj−∑i=1mαiyixi⋅xj
其中可以看出,w和b有樣本點與
α
內積確定。
但是回過頭來想,線性可分假設是不現實,所以SVM在硬間隔線性可分的基礎上提出軟間隔線性可分。即允許線性不可分,但是需要進行一定的懲罰。如下圖爲軟間隔線性可分,其中在支持向量裏面的點和錯分的樣本爲線性不可分的點,虛線上的點爲支持向量。

軟間隔SVM:
線性不可分意味着某些樣本不滿足函數間隔大於
1
的約束條件,爲了解決這個問題,可以對每個樣本引入一個鬆弛變量
ξi≥0
,使得函數間隔加上鬆弛變量大於等於1,這樣約束條件變爲:
yi(w⋅xi+b)>1−ξi,i∈1,2..m
同時對於線性不可分的樣本進行懲罰,因此目標函數變爲:
minw,b12||w||+C∑i=1mξi
因此最終的線性不可分SVM的目標函數如下:
minw,b12||w||+C∑i=1mξis.t.yi(w⋅xi+b)>1−ξi,i∈1,2..mξi≥0,i∈1,2..m
拉格朗日函數
minw,b12||w||2+C∑i=1mξi−∑i=1mαi(yi(w⋅xi+b)−1+ξi)−∑i=1mβiξis.t.▽L(w,b,ξi,αi,βi)=0αi(yi(w⋅xi+b)−1+ξi)=0βiξi=0αi≥0βi≥0yi(w⋅xi+b)−1≥0,i∈1,2...mξi≥0,i∈1,2..m
由上述約束條件有:
▽L(w,b,αi)w=w−∑i=1mαiyixi=0▽L(w,b,αi)b=∑i=1mαiyi=0▽L(w,b,αi)ξi=C−αi−βi=0b=yj−∑i=1mαiyixi⋅xj
將上式帶入到拉格朗日函數,得到目標函數關於
α,β
表示的函數,同硬間隔的對偶函數一致:
L(w,b,α)=−12∑i=1m∑j=1mαiαjyjyjxixj+∑i=1mαi
最大化關於
α
的函數即爲原問題的對偶問題,而對偶問題爲原問題提供一個下界,即原問題的對偶問題如下:
maxL(w,b,α)=−12∑i=1m∑j=1mαiαjyjyjxixj+∑i=1mαi⇔min12∑i=1m∑j=1mαiαjyjyjxixj−∑i=1mαis.t.∑i=1mαiyi=0C−αi−βi=0αi≥0βi≥0⇔min12∑i=1m∑j=1mαiαjyjyjxixj−∑i=1mαis.t.∑i=1mαiyi=00≤αi≤C
解出上式目標函數
α,β
後,有
w,b
w=∑i=1mαiyixib=yj−∑i=1mαiyixi⋅xj
可以看出,w和b由樣本點與
α
內積確定,當
αi=0
表示 第i個樣本點滿足
yi(w⋅xi+b)−1≥0
條件,該點不在支持向量內部,w與該點無關,支持向量機的參數
w
只與支持向量以內的點有關。
對比硬間隔和軟間隔SVM發現兩者的對偶問題非常相似,唯一不同的在於
0≤α
,
0≤α≤C
,也就是說在約束條件上不能讓
α
值太大。而
α
不爲
0
的意義就是該點線性不可分—在支持向量以內,不能讓
α
太大的意義就是儘可能的不要讓樣本在支持向量太裏面。這也就是懲罰項引入後的結果。
下面根據
α,β
的取值來分析樣本點的一個位置,以及樣本點對SVM參數的影響:
當
αi=0
,則
βi=C,ξi=0
,表示樣本點在支持向量上或者以外的,以外的點對參數
w
無價值
當
0<αi<C
,則
0<βi<C,ξi=0
,表示樣本點在支持向量上
當
αi=C
,則
0=βi
,如果
0<ξi<1
,表示樣本在支持向量內部,但分類正確
當
αi=C
,則
0=βi
,如果
ξi=1
,表示樣本在超平面上
當
αi=C
,則
0=βi
,如果
ξi>1
,表示樣本分類錯誤
核函數:
核函數的應用主要是解決線性不可分問題,通過選擇合適的核函數將樣本從低維線性不可分映射到高維之後容易線性可分,本質上是一次空間上的非線性變換(特徵映射),核函數可以嫁接到很多線性模型上,使其具有非線性能力,只是核函數的選擇是一件難定的事。
而SVM與核函數有着天然的契合度,因爲在SVM的對偶問題中,需要計算樣本之間的內積,而核函數的引入則可以使得內積操作直接在覈函數中隱式完成。
L(w,b,α)=−12∑i=1m∑j=1mαiαjyjyjxi⋅xj+∑i=1mαi
在上式中有
xi⋅xj
內積操作,當我們使用核技巧時,往往需要定義一個核函數
ϕ(x)
進行特徵空間變換,然後在新的特徵空間中進行
ϕ(xi)⋅ϕ(xj)
內積操作,這使得計算過程分兩步完成。如果我們隱式的定義核函數如下:
K(xi,xj)=ϕ(xi)⋅ϕ(xj)
L(w,b,α)=−12∑i=1m∑j=1mαiαjyjyjK(xi,xj)+∑i=1mαi
直接定義
K(xi,xj)
作爲核函數,而不管實際的核函數
ϕ(x)
是如何將x映射到
ϕ(x)
空間,然後在新的特徵空間計算內積。這樣,我們就隱式完成了內積操作,將核函數與內積操作一步完成爲
K(xi,xj)
。當然,核函數必須滿足核函數的性質。
一般常採用的核函數有:
線性核
K(xi,xj)=xTixj
多項式核
K(xi,xj)=(xTixj)d
高斯核
K(xi,xj)=exp(−(xi−xj)22σ2)
拉普拉斯核
K(xi,xj)=exp(−||xi−xj||2σ2)
sigmoid核
K(xi,xj)=tanh(βxTixj+θ)
然而核技巧中,最盲目的是如何選擇合適核函數,或者多核。
這裏需要解釋的是,SVM對核函數有一個自身的要求,核的大小一定是
m2
。因爲SVM在做內積時是所有點彼此做內積,所以複雜度是
m2
。這也是SVM難以適應大規模數據的場景,SVM的複雜度
m2d
體現在內積上,帶核的SVM的複雜度體現在覈函數的計算上。而這不是核函數的特點,核函數中核的大小是自定義的。
SMO優化算法
min12∑i=1m∑j=1mαiαjyjyjxixj−∑i=1mαis.t.∑i=1mαiyi=00≤αi≤C
SVM優化問題是一個典型的帶約束凸二次規劃,傳統的梯度方法不能直接應用於帶約束優化問題,下面先介紹一種座標上升優化算法,算法的思想是對於多個參數的優化求解問題,可以每次只考慮一個變量,而固定其他所有變量,對一個變量進行目標優化,內循環每一個變量進行優化,外循環直到迭代到收斂。其收斂性類似於EM算法。

因爲內層循環每次只改變一個變量,所以座標上升算法的搜索路徑與座標軸平行

然而,如果每次只改變一個變量來優化SVM,那麼必然不滿足
∑mi=1αiyi=0
約束。所以SMO算法在座標上升算法基礎上又以下兩點改進:
1)爲了滿足
∑mi=1αiyi=0
約束,每次迭代優化選擇兩個變量,其中一個主動變量,另一個被動變量
2)在選擇兩個變量進行優化時,採用啓發式搜索策略,主動變量選擇違反KKT條件最嚴重的一個變量
α1
,在選定
α1
後,被動變量
α2
選擇變化範圍最大的,在優化
α1
和
α2
時使用上下剪輯來使得
α1
和
α2
滿足
0≤αi≤C
約束
現在來看SMO算法,固定m-2個變量不變,將目標函數轉化爲關於
α1
和
α2
的函數:
min12∑i=1m∑j=1mαiαjyjyjK(xi,xj)−∑i=1mαiminW(α1,α2)=12α21K11+12α22K22+y1y2α1α2K12+y1α1∑i=3myiαiKi1+y2α2∑i=3myiαiKi2−(α1+α2)s.t.α1y1+α2y2=−∑i=3mαiyi=ς0≤αi≤C
其中
Kij=K(xi,xj)
。
爲了求解兩個變量的二次規劃問題,首先我們分析約束條件,可以看出
α1
和
α2
的可行域是盒子內的一條對角線上,其中盒子由不等式確定,對角線由等式確定,而且由於
y1
和
y2
的不確定性導致存在兩種情況:

至於對角線的位置取決於當前
α1
和
α2
的值。由於優化過程中,我們首先優化的是
α2
,而後由等式約束確定
α1
,所以我們分析
α2
的變化範圍:
當
y1≠y2
時:
L=max(0,α2−α1)
,
H=min(C,C+α2−α1)
當
y1=y2
時:
L=max(0,α2+α1−C)
,
H=min(C,α2+α1)
其中L是爲了保證
α2
的變化不會讓
α1<0
,H是爲了保證
α2
的變化不會讓
α1>C
。
同樣,由於我們首先優化的是
α2
,所以我們採用
α2
來表示
α1
:
α1=(ς−α2y2)y1
,代入
minW(α1,α2)
有(省略了推導步驟):
W(α2)=aα22+bα2+c
求導後得到:
▽W(α2)α2=y2(((g(x2)−y2)−(g(x1)−y1)))(K11+K22−2K12)
記
Ei=g(xi)−yi
,
η=(K11+K22−2K12)
有:
▽W(α2)α2=y2(E2−E1)η
所以:
αunew2=αold2+y2(E1−E2)η
回到上下剪輯,最終
α2
的更新值爲:
αnew2=⎧⎩⎨⎪⎪H,αunew2>Hαunew2,L≤αunew2≤HL,αunew2<L
再由
∑mi=1αiyi=0
得:
αnew1=αold1+y1y2(αold2−αnew2)
最後更新b,由KKT條件當
0≤αj≤C
時,有
b=yj−∑mi=1αiyiKij
當
0≤α1≤C
時:
bnew=y1−∑i=1mαiyiKi1+αold1y1K11+αold2y2K21−αnew1y1K11−αnew2y2K21=−E1−y1K11(αnew1−αold1)−y2K21(αnew2−αold2)+bold
同樣,當
0≤α2≤C
時:
b
由
α2
來確定。
如果兩者同時滿足條件時,那麼兩者確定的
b
是一致的,如果等式取到的話,說明點在支持向量上或者以內,此時
b
取兩者之間。
下面來看SMO的啓發式搜索策略:
1)主動變量選擇違反KKT條件最嚴重的點,即優先判斷支持向量上的點是否滿足KKT條件,其次檢驗整個訓練樣本是否滿足KKT條件
由上面對
α
與樣本點位置的分析可得到如下關係:
αi=0⇔yigi≥10≤αi≤C⇔yigi=1αi=C⇔yigi≤1
由上面關係,可以知道哪些點在支持向量上,哪些點在支持向量外,哪些點在支持向量內,優先選擇支持向量上的點來判斷是否違反KKT條件,因爲這些點是違反KKT條件最嚴重的點,也是對超平面最有價值的點。
2)被動變量選擇在給定主動變量後,被動變量隨之變化範圍最大的點,由於前面導出
αunew2=αold2+y2(E1−E2)η
所以被動變量選擇依賴於
|E1−E2|
的大小,選擇最大的,加速計算速度。
3)值得注意的是,每次迭代更新
αnew1
和
αnew2
之後,需要更新
Enew1
和
Enew2
。
支持向量機迴歸
支持向量機迴歸利用的就是Hinge損失來定義目標函數,同樣是線性模型
hθ(x)=θTx
,由Hinge損失定義如下目標函數:
minθC∑i=1mLϵ(hθ(xi)−yi)+λ||w||2
其中
Lϵ(z)={0,|z|≤ϵ|z|−ϵ,other
,可以看出支持向量機迴歸其實就是借用Hinge損失,而其理論解釋值得思考。
損失函數加正則項的一般理解
機器學習模型中,絕大多數的模型可以理解損失函數加正則項的形式,本文從線性到非線模型中提到的所有模型都可以理解爲損失函數加正則項:
argminwL(w)+λΩ(w)s.t.
其中正則項主要包括 0範數 1範數 2範數,損失函數主要包括以下
平方損失
L(z)=(y−θTx)2
線性迴歸
線性損失
L(z)=y−θTx
線性感知機
對數損失
L(z)=log(1+exp(−z))
Logistic迴歸,softmax迴歸,
Hinge損失
L(z)=max(0,1−z)
,支持向量機
指數損失
L(z)=exp(−z)
,Adaboost

紅:0-1損失,藍:線性損失,綠:Hinge損失,紫虛:對數損失,青虛:指數損失
如何選擇合適的損失函數加正則項是模型選擇的一個依據,損失函數的選擇依賴於數據的分佈,而且不同的模型都有各自的特點,在選擇模型時很難說那個模型優於其他模型,需要綜合各方面因素選擇。
總結:
矩陣運算補充
正則項-範數
拉格讓日乘子法與對偶問題補充
拉格朗日乘子法通過引入鬆弛變量得到目標函數局部最優解的必要條件
拉格朗日乘子法的一般形式:
minxf(x)s.t.gi(x)≥0hj(x)=0
引入鬆弛變量
w,v
也稱拉格朗日乘子,朗格朗日函數如下:
minL(x,w,v)=f(x)−wigi(x)−vjhj(x)
如果
x¯
是目標函數的局部最優解,那麼
x¯
的一階必要條件如下:
▽L(x,w,v)=0wigi(x)=0wi≥0gi(x)≥0hj(x)=0
其中
wigi(x)=0
爲互補鬆弛條件,梯度爲0條件由Frizt John條件得到。
一般來講,到拉格朗日乘子法之後我們還不能解出目標函數的局部最優解,因爲目標函數還是一個引入鬆弛變量的帶約束優化問題。不過我們可以通過分析拉格朗日函數的局部最優解來得到其對偶問題。
在給定
x
時,對
L(x,w,v)
求極大值時,當
x
不滿足所有必要條件時,那麼必然導致
L(x,w,v)
無最大值,當且僅當
x
滿足所有必要條件時
L(x,w,v)
有極大值,且極大值爲
f(x)
L={f(x),x滿足必要條件−∞,否則
所以,所有約束條件的等價條件是
L(x,w,v)
存在極大值,所以原問題就變成了一個極小極大問題
minxL(x,w,v)(s.t.)=minxmaxw,vL(x,w,v)
定義一個對偶問題,即定義一個用
w,v
變量來表示的目標函數:
θD(w,v)=minxL(x,w,v)
最大化
θD(w,v)
即爲原問題的對偶問題,下面證明對偶問題爲原問題提供下界:
maxx,v,wi>0θD(w,v)=