本章內(nèi)容簡介:
· 12.1優(yōu)化目標
· 12.2大邊界的直觀理解
· 12.3大邊界分類背后的數(shù)學(xué)
· 12.4核函數(shù) 1
· 12.5核函數(shù) 2
· 12.6使用支持向量機
對支持向量機的一些理解:
支持向量機解決的是多維的分類問題。當給出一定的數(shù)據(jù)集時,分類學(xué)習(xí)的最基本想法就是基于訓(xùn)練集在樣本空間中找到一個劃分超平面,將不同類別的樣本劃分,又因為在訓(xùn)練學(xué)習(xí)中,數(shù)據(jù)大多是高維度的,并且數(shù)據(jù)不一定都是線性可分的,那么線性不可分的數(shù)據(jù),和非線性函數(shù)怎么劃分呢?這時候就需要使用到一種新的分類器,支持向量機,支持向量機是基于線性分類器提出的另一種設(shè)計最佳準則。
12.1優(yōu)化目標
本節(jié)重點講述了支持向量機的優(yōu)化函數(shù)如何從邏輯回歸函數(shù)演化而來。
1)邏輯回歸代價函數(shù):

2)SVM假設(shè)函數(shù):

3)
對比上面兩張圖片,我們不難發(fā)現(xiàn)它們的形式大體相同。接下來我們就來講講SVM假設(shè)函數(shù)是如何轉(zhuǎn)變而來的:

邏輯回歸中的假設(shè)函數(shù)形式和右邊的S型激勵函數(shù)如上圖,這里z =θ^T ·x。
如果有一個 y=1的樣本,那么我們會希望h_θ (x) 趨近1。因為我們想要正確地將此樣本分類,這就意味著當 h_θ (x)趨近于1時,θ^T ·x 應(yīng)當遠大于0,(這里的>>意思是遠遠大于0)又因為z=θ^T ·x,到了該圖的右邊,我們不難發(fā)現(xiàn)此時邏輯回歸的輸出將趨近于1。反之亦可推導(dǎo)。

而我們?nèi)绻^續(xù)觀察邏輯回歸的代價函數(shù)的話(這里先不考慮正則化部分)會發(fā)現(xiàn)y=1或y=0時會發(fā)生兩種情況,導(dǎo)致邏輯函數(shù)的代價函數(shù)在分別取得這兩種情況時有兩種表達的可能 。【如y=1時,(1-y)=0】
在第一種情況中,假設(shè) y=1 ,此時在目標函數(shù)中只需有第一項起作用,因為y=1時,(1-y)項將等于0。因此,當在 y=1 的樣本中時,即在 (x,y)中 ,我們得到 y=1 -log(1-1/(1+e^(-z) ))這樣一項, z=θ^T x。當然,在代價函數(shù)中,y 前面有負號。我們只是這樣表示,如果 y=1 代價函數(shù)中,這一項也等于1。如果畫出關(guān)于z 的函數(shù),你會看到左下角的這條曲線,我們同樣可以看到,當z 增大時,也就是相當于θ^T· x增大時,z 對應(yīng)的值會變的非常小。對整個代價函數(shù)而言,影響也非常小。這也就解釋了,為什么邏輯回歸在觀察到正樣本y=1時,試圖將θ^T x設(shè)置得非常大。因為,在代價函數(shù)中的這一項會變的非常小。
現(xiàn)在我們從這個代價函數(shù)開始,也就是-log(1-1/(1+e^(-z) ))一點一點修改,取這里的z=1 點,先畫出將要用的代價函數(shù):

新的代價函數(shù)由途中的兩條線段組成,即位于右邊的水平部分和位于左邊的直線部分,先別過多的考慮左邊直線部分的斜率,這并不是很重要。但是,這里我們將使用的新的代價函數(shù),是在y=1的前提下的。你也許能想到,這應(yīng)該能做同邏輯回歸中類似的事情,但事實上,在之后的優(yōu)化問題中,這會變得更堅定,并且為支持向量機,帶來計算上的優(yōu)勢。例如,更容易計算股票交易的問題等等。
而y=0的情況在這里不再贅述,只給出如下的圖片:

現(xiàn)在讓我們給上面提到的兩個方程命名,左邊的函數(shù),我們稱之為cost_1 (z),同時,右邊函數(shù)我稱它為cost_0 (z)。(z=θ^T· x),如下圖所示:

這里的下標是指在代價函數(shù)中,對應(yīng)的 y=1 和 y=0 的情況,擁有了這些定義后,現(xiàn)在,我們就抗議開始構(gòu)建支持向量機。
首先,我們要除去1/m這一項,(注:除去1/m這一項,也會得出同樣的 θ 最優(yōu)值——因為1/m 僅是個常量)打個比方:要求當(u-5)2+1取得最小值時的u值,這時最小值為:當u=5時取得最小值。而10(u-5)2+1取得最小值時的u值也是u=5時。
然后第二點概念上的變化便是——對于目標函數(shù)而言,我們有兩項:第一個項是訓(xùn)練樣本的代價,第二項是我們的正則化項。對于邏輯回歸而言,優(yōu)化目標是A+λ×B(通過設(shè)置不同正則化參數(shù)λ來調(diào)節(jié)A,B的權(quán)重:即使訓(xùn)練樣本擬合的更好——即最小化A;保證正則參數(shù)足夠小,更注重項目B。)
而對于支持向量機,按照慣例,我們將使用一個不同的參數(shù)替換邏輯回歸中使用的λ來權(quán)衡這兩項——就是第一項和第二項我們依照慣例使用一個不同的參數(shù)稱為C,同時改優(yōu)化目標為C×A+B。
在邏輯回歸中,如果給定λ,一個非常大的值,意味著給予B更大的權(quán)重。而這里,就對應(yīng)于將C 設(shè)定為非常小的值,那么,相應(yīng)的將會給B比給A更大的權(quán)重。因此,這只是一種不同的方式來控制這種權(quán)衡或者一種不同的方法,即用參數(shù)來決定是更關(guān)心第一項的優(yōu)化,還是更關(guān)心第二項的優(yōu)化。當然你也可以把這里的參數(shù)C 考慮成1/λ,同 1/λ所扮演的角色相同,并且這兩個方程或這兩個表達式并不相同,因為C=1/λ,但是也并不全是這樣,如果當C=1/λ時,這兩個優(yōu)化目標應(yīng)當?shù)玫较嗤闹?,相同的最?yōu)值 θ。**
這樣一來,我們就能大體上知道邏輯回歸代價函數(shù)是如何轉(zhuǎn)化到SVM假設(shè)函數(shù)的。
12.2大邊界的直觀理解
這一節(jié)的重點在于解釋為什么SVM(支持向量機)又被稱為大間距分類器的原因。(在C很大的情況下討論)

這是我們的支持向量機模型的代價函數(shù),在左邊畫出了關(guān)于z的代價函數(shù)cost_1 (z),此函數(shù)用于正樣本,而在右邊畫出了關(guān)于z的代價函數(shù)cost_0 (z),橫軸表示z,現(xiàn)在讓我們考慮一下,最小化這些代價函數(shù)的必要條件是什么。如果你有一個正樣本,y=1,則只有在z>=1時,代價函數(shù)cost_1 (z)才等于0。
這是因為支持向量機的要求比邏輯回歸更高,不僅僅要能正確分開輸入的樣本,即不僅僅要求θ^T· x>0,我們需要的是比0值大很多,比如大于等于1,這就相當于在支持向量機中嵌入了一個額外的安全因子,或者說安全的間距因子。

輸入一個訓(xùn)練樣本標簽為y=1,你想令第一項為0,要使得第一項等于0,就會導(dǎo)致下面的優(yōu)化問題,因為我們將選擇參數(shù)使第一項為0,因此這個函數(shù)的第一項為0,因此是C乘以0加上二分之一乘以第二項。那么重點就到第二項(即正則化部分),那么在我們求解這個優(yōu)化問題時,就會變成最小化這個關(guān)于變量θ的函數(shù)來得到我們的決策邊界。
那么在讓代價函數(shù)最小化的過程中,我們希望找出在y=1和y=0兩種情況下都使得代價函數(shù)中左邊的這一項盡量為零的參數(shù)。如果我們找到了這樣的參數(shù),則我們的最小化問題便轉(zhuǎn)變成:

在C很大的情況下,那么在我們區(qū)分一個線性可分的數(shù)據(jù)集時,支持向量機會確定一條決策界,使得正樣本和負樣本用最大的間距分開。(如下圖中間的SVM給出的黑色決策邊界)

因此支持向量機有時被稱為大間距分類器
注意:
1)在數(shù)據(jù)線性可分的情況下:
①c很大時,對異常點很敏感 比如決策邊界由一個異常點而將最優(yōu)邊界決策改變 ;
②c很小時,在沒有異常點的情況下,最后也能得到c很大時得到的最優(yōu)決策邊界【類似于c過大會造成過擬合,c過小會造成欠擬合】
2)在數(shù)據(jù)不是線性可分時,SVM仍能完成分類任務(wù),所以大間距分類器的描述,僅僅是從直觀上給出了正則化參數(shù)??非常大的情形,同時,要提醒我們??的作用類似于1/??,??是我們之前使用過的正則化參數(shù)。這只是??常大的情形,或者等價地 ?? 非常小的情形。我們最終會得到類似粉線這樣的決策界,但是實際上應(yīng)用支持向量機的時候,當??不是非常非常大的時候,它可以忽略掉一些異常點的影響,得到更好的決策界。甚至當你的數(shù)據(jù)不是線性可分的時候,支持向量機也可以給出好的結(jié)果。(比方之前你只能畫一條曲線來區(qū)分數(shù)據(jù),但是現(xiàn)在你可以畫一個圓,來規(guī)定圓內(nèi)的數(shù)據(jù)屬于一類,圓外的數(shù)據(jù)屬于一類)
回顧 ?? = 1/??,因此:
?? 較大時,相當于 ?? 較小,可能會導(dǎo)致過擬合,高方差。
?? 較小時,相當于 ?? 較大,可能會導(dǎo)致低擬合,高偏差。
12.3大間隔分類器的數(shù)學(xué)原理
本節(jié)重點講的是支持向量機的優(yōu)化問題和大間距分類器之間的聯(lián)系
1)
向量內(nèi)積:
假定現(xiàn)在有向量u=[u_1,u_2],v=[v_1,v_2],那么u^T?v叫做向量u與v之間的內(nèi)積。
||u||指向量u的范數(shù),即歐幾里得長度,根據(jù)畢達哥拉斯定理可知:||u||== √(??_1^2 + ??_2^2),此處||u||屬于實數(shù)。

現(xiàn)在讓我們回頭來看向量?? ,因為我們想計算內(nèi)積。??是另一個向量,它的兩個分量??1和??2是已知的。我們將向量??以90 度投影到向量??上,接下來度量這條紅線的長度p(或者說是向量??投影到向量??上的量)
此時可知:????·?? = ???||u||,這是從圖形的幾何意義上得知的。另外我們不難得知????·?? = ???||u||=u_1×v_1+u_2×v_2。
注意:p是帶符號的,正負號具體取決于和??之間的夾角與90度的關(guān)系。
此時p是負數(shù)。
2)約束替換
經(jīng)過12.2最后的推導(dǎo)我們知道,當y=1 or y=0時,支持向量機做的全部事情,就是極小化參數(shù)向量??范數(shù)的平方,或者說長度的平方:

在這里,讓我們忽略截距,即令θ_0=0,同時令特征數(shù)n=2,即只有兩個特征x_1,x_2,則目標函數(shù)最終會變成:
1/2 (θ_12+θ_22 )=1/2 (√(θ_12+θ_22 ))^2=1/2 ∥θ∥^2
現(xiàn)在看θ^T· x項,對于參數(shù)向量θ給定一個樣本x,聯(lián)想u^T v的示意圖,θ和x^(i)就類似于u和v 。

那我們就會知道:這個θ^T ·x^((i))>=1 這樣的約束是可以被p^((i))?∥θ∥>=1這個約束所代替的,如下圖:

3)決策邊界選擇

對比左邊和右邊的綠色那條決策界,我們可以知道:第二條決策界所代表的就時支持向量機所選擇的決策界。這是因為支持向量機它試圖極大化這些p^((i))的范數(shù),它們是訓(xùn)練樣本到?jīng)Q策邊界的距離。
注:最后一點,我們的推導(dǎo)自始至終使用了這個簡化假設(shè),就是參數(shù)θ_0=0。這個的作用是:θ_0=0的意思是我們讓決策界通過原點。但實際上,支持向量機產(chǎn)生大間距分類器的結(jié)論,在θ_0≠0會被證明同樣成立,證明方式是非常類似的,是我們剛剛做的證明的推廣。
12.4&12.5 核函數(shù)
1)給出新特征

對于非線性分類數(shù)據(jù),我們要獲得如圖所示的判定邊界,可以先考慮使用高級數(shù)的多項式模型來處理。
為了獲得上圖所示的判定邊界,我們的模型可能是θ_0+θ_1 x_1+θ_2 x_2+θ_3 x_1 x_2+θ_4 x_1^2+θ_5 x_2^2+?的形式。
我們可以用一系列的新的特征f來替換模型中的每一項。例如令: f_1=x_1,f_2=x_2,f_3=x_1 x_2,f_4=x_12,f_5=x_22
...得到h_θ (x)=θ_1 f_1+θ_2 f_2+...+θ_n f_n。
然而,除了對原有的特征進行組合以外,我們可以利用核函數(shù)來計算出新的特征。給定一個訓(xùn)練實例x,我們利用x的各個特征與我們預(yù)先選定的地標(landmarks)l((1)),l((2)),l^((3))的近似程度來選取新的特征f_1,f_2,f_3。

如果一個訓(xùn)練實例x與地標L之間的距離近似于0,則新特征 f
近似于???0=1,如果訓(xùn)練實例??與地標??之間距離較遠,則??近似于???(一個較大的數(shù))=0。
假設(shè)我們的訓(xùn)練實例含有兩個特征[x_1 x_2],給定地標l^((1))與不同的σ值,見下圖:

圖中水平面的坐標為 x_1,x_2而垂直坐標軸代表f??梢钥闯觯挥挟攛與l((1))重合時f才具有最大值。隨著x的改變f值改變的速率受到σ2的控制。
在下圖中,當實例處于洋紅色的點位置處,因為其離l((1))更近,但是離l((2))和l^((3))較遠,因此f_1接近1,而f_2,f_3接近0。因此h_θ (x)=θ_0+θ_1 f_1+θ_2 f_2+θ_1 f_3>0,因此預(yù)測y=1。同理可以求出,對于離l^((2))較近的綠色點,也預(yù)測y=1,但是對于藍綠色的點,因為其離三個地標都較遠,預(yù)測y=0。

這樣,圖中紅色的封閉曲線所表示的范圍,便是我們依據(jù)一個單一的訓(xùn)練實例和我們選取的地標所得出的判定邊界,在預(yù)測時,我們采用的特征不是訓(xùn)練實例本身的特征,而是通過核函數(shù)計算出的新特征f_1,f_2,f_3。
2)選擇地標
我們通常是根據(jù)訓(xùn)練集的數(shù)量選擇地標的數(shù)量,即如果訓(xùn)練集中有m個實例,則我們選取m個地標,并且令:l((1))=x((1)),l((2))=x((2)),.....,l((m))=x((m))。這樣做的好處在于:現(xiàn)在我們得到的新特征是建立在原有特征與訓(xùn)練集中所有其他特征之間距離的基礎(chǔ)之上的,即:


下面是支持向量機的兩個參數(shù)C和σ的影響:
C=1/λ
C 較大時,相當于λ較小,可能會導(dǎo)致過擬合,高方差;
C 較小時,相當于λ較大,可能會導(dǎo)致低擬合,高偏差;
σ較大時,可能會導(dǎo)致低方差,高偏差;
σ較小時,可能會導(dǎo)致低偏差,高方差。
12.6使用支持向量機
1)一些建議:
不建議自己去寫軟件來求解參數(shù)θ,可以去運用現(xiàn)在的軟件包
庫來實現(xiàn)(如sklearn、liblinear和libsvm)
在高斯核函數(shù)之外我們還有其他一些選擇,如:
多項式核函數(shù)(Polynomial Kernel)
字符串核函數(shù)(String kernel)
卡方核函數(shù)( chi-square kernel)
直方圖交集核函數(shù)(histogram intersection kernel)
等等...
這些核函數(shù)的目標也都是根據(jù)訓(xùn)練集和地標之間的距離來構(gòu)建新特征,這些核函數(shù)需要滿足Mercer's定理,才能被支持向量機的優(yōu)化軟件正確處理。
2)多類分類問題
假設(shè)我們利用之前介紹的一對多方法來解決一個多類分類問題。如果一共有k個類,則我們需要k個模型,以及k個參數(shù)向量θ。我們同樣也可以訓(xùn)練k個支持向量機來解決多類分類問題。但是大多數(shù)支持向量機軟件包都有內(nèi)置的多類分類功能,我們只要直接使用即可。
盡管你不去寫你自己的SVM的優(yōu)化軟件,但是你也需要做幾件事:
1、是提出參數(shù)C的選擇。我們在之前的視頻中討論過誤差/方差在這方面的性質(zhì)。
2、你也需要選擇內(nèi)核參數(shù)或你想要使用的相似函數(shù),其中一個選擇是:我們選擇不需要任何內(nèi)核參數(shù),沒有內(nèi)核參數(shù)的理念,也叫線性核函數(shù)。因此,如果有人說他使用了線性核的SVM(支持向量機),這就意味這他使用了不帶有核函數(shù)的SVM(支持向量機)。
3)支持向量機一些普遍使用的準則:
n為特征數(shù),m為訓(xùn)練樣本數(shù)。
(1)如果相較于m而言,n要大許多,即訓(xùn)練集數(shù)據(jù)量不夠支持我們訓(xùn)練一個復(fù)雜的非線性模型,我們選用邏輯回歸模型或者不帶核函數(shù)的支持向量機。
(2)如果n較小,而且m大小中等,例如n在 1-1000 之間,而m在10-10000之間,使用高斯核函數(shù)的支持向量機。
(3)如果n較小,而m較大,例如n在1-1000之間,而m大于50000,則使用支持向量機會非常慢,解決方案是創(chuàng)造、增加更多的特征,然后使用邏輯回歸或不帶核函數(shù)的支持向量機。
值得一提的是,神經(jīng)網(wǎng)絡(luò)在以上三種情況下都可能會有較好的表現(xiàn),但是訓(xùn)練神經(jīng)網(wǎng)絡(luò)可能非常慢,選擇支持向量機的原因主要在于它的代價函數(shù)是凸函數(shù),不存在局部最小值。
參考網(wǎng)站:
https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes
