機器學習 | 吳恩達機器學習第七週學習筆記
第七週PPT 下載密碼:tmss
上週主要講解了如何設計機器學習系統和如何改進機器學習系統,包括一些模型選擇的方法,模型效能的評價指標,模型改進的方法等。本週主要講解支援向量機SVM的原理包括優化目標、大間隔以及核函式等SVM核心內容,以及SVM的使用。
目錄
1.優化目標
- 邏輯迴歸演算法回顧
邏輯迴歸假設函式:
令,得到假設函式的影象如下:
假設我們現在有一個訓練樣本,接下來看一下邏輯迴歸到底在做什麼:
如果該樣本的標籤,我們希望,即 ;
如果該樣本的標籤,我們希望,即 ;
對於某一個訓練樣本,給出它的代價函式:
如果標籤(希望),此時上述代價函式將只有左邊第一項,繪製出此時的影象,如下所示:
其中的曲線代表邏輯迴歸的代價函式,SVM的代價函式對邏輯迴歸代價函式做了一些簡化,由兩條直線段構成,記為.
同理,如果標籤(希望),此時上述代價函式將只有右邊第二項,繪製出此時的影象,如下所示:
其中的曲線代表邏輯迴歸的代價函式,SVM的代價函式對邏輯迴歸代價函式做了一些簡化,由兩條直線段構成,記為.
邏輯迴歸代價函式:
由兩部分組成,代價和正則化懲罰項。基本形式為,引數控制兩部分的權重。
SVM代價函式(優化目標):
與邏輯迴歸稍有不同,去除了常數項,這對最優值的求解沒有影響;形式為,可以把C想象成, C引數控制兩部分的權重。
與邏輯迴歸不同的是SVM的假設函式不會輸出一個概率,而是直接進行分類。
首先通過最小化代價函式得到一組最優的引數,SVM的假設函式如下:
2.直觀上對大間隔的理解
SVM分類器也被叫做大間隔分類器,本小節將用直觀的影象,幫你理解這句話的含義。
- SVM代價函式
左圖為影象,右圖為影象。為了使代價函式的值最小:
當時,我們希望(而不僅僅是),此時。實際上預測時當就能正確分類,此時假設函式,但訓練時SVM有更高的要求,比如,不是恰好正確分類,而是在正確分類基礎上還要構建一個安全間距。
當時,我們希望(而不僅僅是),此時。實際上預測時當就能正確分類,此時假設函式,但訓練時SVM有更高的要求,比如,不是恰好正確分類,而且在正確分類基礎上還要構建一個安全間距。
- SVM決策邊界
假設我們把引數C設定的非常大,比如C=100000,此時為了使代價函式最小,那麼籃框中的第一項應該為0,才能把大引數C的增加效果抵消掉。也就是說此時:
當訓練樣本標籤時,滿足,才能使第一項為0;
同理,當訓練樣本標籤時,滿足,才能使第一項為0。
在這種情況下,我們通過選擇一個很大的引數C,使得上述優化問題以及約束條件變成如下形式:
當最小化這個關於引數的代價函式時,可以得到一個非常有趣的決策邊界:
上圖是一個線性可分的資料集,其中洋紅色、綠色和黑色的決策邊界都能把正負樣本分開;實際上利用SVM,會得到黑色的決策邊界,從直觀上來看,黑色決策邊界比其他2者更穩健,魯棒性更好。它不僅能正確分類,而且還可以以一個最大的安全間距進行分類,即它距離正負樣本的最小距離最大。
我們把決策邊界距離正負樣本的最小距離稱為間距,SVM可以得到間距最大的決策邊界,因此SVM也被稱作大間距分類器。
當引數C非常大時,我們可以對大間距分類器有一個直觀的理解,如上圖的黑色決策邊界所示,但是此時很容易受到異常點的影響:
當C非常大時,由於上圖左下角異常點的存在,決策邊界會從黑色直線變成洋紅色直線,這是我們不希望看到的。一般我們會把C設定的沒那麼大,此時他可以忽略異常點的影響,即使是線性不可分的情況,也可以得到上圖中黑色的大間距決策邊界。
可以把引數C想象成,當C非常大時,相當於非常小,此時容易出現高方差或過擬合的情況。
本小節,只是對大間距分類器有一個直觀的理解,下一小節將具體探討大間距分類器的數學原理。
3.大間隔分類器的數學原理
- 向量內積回顧
現有兩個列向量:
表示向量的內積,從代數角度來看,。
接下來我們從幾何角度看:
將向量視覺化,橫縱軸數值代表他們在各自座標軸上的分量。
代表向量u的範數,即u的長度,;
上圖中的p代表向量v在向量u上的投影長度,這個長度可正可負,取決於向量的夾角。當夾角小於90時,p為正;當夾角大於90時,p為負。下圖為夾角大於90的情況:
此時,並且與之前代數角度獲得的內積值是一樣的。
- SVM決策邊界
當引數C非常大時,我們可以對大間隔分類器有一個直觀的理解。此時的優化問題,變成如下形式:
對上述優化問題做一些簡化,假設,並且,即只有兩個特徵,那麼該優化問題可以寫成如下形式:
對於,根據之前向量內積的性質,可以表示成如下形式:
我們最終可以得到如下的優化問題:
其中是樣本在引數上的投影,依舊使用之前的簡化,.
首先我們來解釋一下SVM為什麼不會產生小間距(決策邊界到正負樣本間的最小距離)的決策邊界(下圖綠色直線):
上圖中,❌代表正樣本,藍圈代表負樣本;,分別代表其中的某個正負樣本;綠色的直線是某一個決策邊界(由於,它會過原點),利用線性代數的知識,我們知道引數向量的方向與決策邊界是正交的;分別是正負樣本,在上的投影。
當時,由約束條件可知,,由上圖可知投影(>0)非常小,這就要求非常大,而這與優化目標最小化
相悖;
同理,當時,由約束條件可知,,由上圖可知投影(<0)非常小,這就要求非常大,而這與優化目標最小化也相悖;
因此,綜上,SVM不會產生如上圖綠線所示的小間距決策邊界。
至於SVM為什麼會產生大間距的決策邊界(下圖綠色直線),也是一個道理:
當時,由約束條件可知,,由上圖可知投影(>0)比較大,與之前相比,此時要求可以小一些,這與優化目標最小化相同;
同理,當時,由約束條件可知,,由上圖可知投影(<0)比較大,此時要求可以小一些,這與優化目標最小化也相同;
因此,綜上,SVM會產生如上圖綠線所示的大間距決策邊界。
之前的討論一直做了簡化,即,當時,決策邊界將是一條不通過原點的直線,產生大間距決策邊界的分類效果是一樣的。
4.核函式1
通過核函式改造SVM演算法,得到新的特徵變數,來構造複雜的非線性分類器:
考慮下圖的資料集:
很顯然該資料集是線性不可分的,如果想得到如上圖所示的決策邊界,僅用原始的兩個輸入特徵是不夠的。在這種情況下,可以增加新的多項式特徵,比如:
我們用符號為新的特徵編號:
現在問題在於,多項式的組合有很多,是否存在一種最好的特徵選擇。之前學習邏輯迴歸時,對於這種情況,一般選擇若干個不同的組合方式,得到不同的假設函式,通過在驗證集上進行模型選擇,從而選擇最好的那一個。而在SVM中我們可以通過核函式對原始輸入特徵進行對映,得到一組更好的新特徵。
- Kernel
給定一個訓練樣本的輸入變數(有兩個原始輸入特徵,我們接下來會通過一些標記基於原始輸入特徵計算出一些新的特徵。其中標記數=新的特徵數,假設有三個標記(至於標記具體如何選,下節課再講解),此時會產生三個新特徵.
其中每一個新特徵,都是原始輸入特徵向量與標記向量的相似度計算值,每一個標記向量都會產生一個新特徵。我們把這個相似度函式稱為核函式,而上圖中採用的是高斯核函式。
- 核函式和相似度
接下來我們看一下核函式到底做了什麼:
核函式實際上在衡量樣本的原始輸入特徵向量和表標記向量的距離。當2者非常接近時,返回的相似度值接近於1,產生的新特徵也接近於1;當2者差距非常大時,返回的相似度值接近於0,產生的新特徵也接近於0;
繪製核函式影象:
影象z軸代表相似度值,即f1.最高點在地面的投影座標即為標記的位置(3,5)。當特徵向量在(3,5)時,此時2者相似度最大為1,當向周圍移動時,相似度會減小。
接下來,觀察一下值對核函式的影響:
當比較小時,影象中突起的部分會比較窄,當向外移動時,相似度下降的會比較快;
當比較大時,影象中突起的部分會比較寬,當向外移動時,相似度下降的會比較慢。
- 假設函式
通過核函式我們對原始特徵向量進行對映,得到新的特徵向量,的維度等於標記向量的數量。上例中我們使用了3個標記向量,所以會得到三個新特徵,此時的假設函式如下:
假設對於新的假設函式已經通過訓練得到了一組最優的引數取值:.接下來對新的樣本進行預測:
對於第一個新樣本,上圖洋紅色的標記,它距離標記比較近,離,比較遠,此時:
它會被預測為正類。
對於第二個新樣本,上圖藍色的標記,它距離標記,,都比較遠,此時:
它會被預測為負類。
最後你會發現,對於一個新樣本只要接近標記,就會被預測為正類,否則為負類。那麼,此時訓練得到的決策邊界可能如下圖所示:
5.核函式2
- 如何選擇標記
實際上,對於一個機器學習問題,每個樣本的輸入特徵變數都對應一個標記向量,二者是一樣的;如果有m個訓練樣本,將會有m個標記向量。
對於每一個樣本來說,得到的新的特徵變數的不同維度,實際上在描述該樣本與樣本集中其他樣本的距離。
- SVM with Kernels
對於一個訓練集,首先選擇標記點:
對於一個樣本的輸入特徵,對其做如下對映,得到新的輸入特徵f:
對於一個訓練樣本,對其輸入特徵做上述對映,得到新的輸入特徵:
這樣原始輸入特徵就從n+1維,對映成了m+1維(其中的+1指偏置項,恆等於1)。
- SVM with Kernels的假設函式和代價函式
首先對原始輸入特徵通過核函式對映為新特徵,然後用新的代價函式進行訓練,得到最優的引數後,再帶入新的假設函式進行預測。
使用核心後的假設函式還稍有些不同,對於後一項可以表示為:
(此時忽略),但是的維度是m,即等於訓練樣本的數量,當訓練樣本非常多時,計算成本是很高的,所以此時的代價函式的後一項實際上為:,來提高執行效率,矩陣M的選擇和使用的核函式有關。
當使用SVM時,不必擔心代價函式如何編寫程式碼,也不建議自己編寫程式碼,直接呼叫別人已經寫好的程式包,裡面已經包含了許多優化技巧。
- SVM引數
6.使用SVM
呼叫成熟的優化演算法來求解SVM的引數,不要自己寫程式碼:
當使用上述軟體包時,需要考慮兩個問題:
一種做法是不使用核函式,n比較大,m比較小的情況:
也可以使用核函式(高斯核函式),適用於n比較小,m比較大時:
如何選擇由具體情況決定,後面會詳細討論。
高斯核函式也可以直接呼叫軟體包,下圖中輸入是兩個向量,輸出為一個實數:
在使用高斯核函式之前,一定要對原始輸入特徵進行縮放:
否則,如上圖所示,特徵不同分量的取值範圍差異很大的話,不同特徵分量對計算新特徵的影響程度是不同的。
- 核函式的選擇
並不是所有的核函式都可以用在SVM上,只有滿足莫塞爾定理的核函式才可以。除了之前提到的高斯核函式和線性核函式之外,還有如下的核函式也滿足莫塞爾定理:
不過這些核函式都不太常用,其中多項式核函式的形式可以有多種,它有constant和degree兩個引數,效果不是很好。
- 使用SVM進行多分類
許多SVM的軟體包都實現了多分類的函式,可以直接呼叫。
除此之外,也可以採取之前講解的利用邏輯迴歸實現多分類的方案:對於一個多分類,等價於做多次2分類,每次把其中的一個類別作為正類,其餘類別為負類,最終預測時,看新樣本屬於哪個正類的假設函式值最大,就屬於哪個類別。
-
邏輯迴歸 vs. SVMs
邏輯迴歸和不帶核函式的SVM很相似:
SVM雖然效果可能不如神經網路,但是訓練速度很快,有很多成熟的軟體包,神經網路訓練很慢;而且SVM是一個凸優化問題,一定可以得到全域性最優解,神經網路可能得到區域性最優解(對於NN來說,是一個不大不小的問題)