目錄
12 支持向量機(Support Vectir Machines)
前言:
因爲書寫難度以及後面需要補充等原因,寫完每一小部分在進行一次合併。
12 支持向量機(Support Vectir Machines)
12.1 優化目標
在監督學習中,許多學習算法的性能都非常類似,因此,重要的不是你該選擇使用學習算法 A 還是學習算法 B,而更重要的是, 應用這些算法時,所創建的大量數據在應用這些算法時,表現情況通常依賴於你的水平。
與邏輯迴歸和神經網絡相比,支持向量機,或者簡稱 SVM,在學習複雜的非線性 方程時提供了一種更爲清晰,更加強大的方式
這部分學習非常重要。
我將會從邏輯迴歸開始展示我們如何一點一點修改來得到本質上的支持向量機。
將用 z 表示
回顧一下之前的邏輯迴歸的代價函數:
在計算的時候,我們將每個樣本加入總代價函數中,因此總代價函數通常會有對所有的訓練樣本求和。其實1/m這個可以不考慮,我們只是方便運算才引入的。
現在開始建立支持向量機
我們會從這個代價函數開始,也就是 對於這個對數,我們一點一點修改,讓我取這裏的 z=1 點,我先畫出將要用的代價函數。
y=1情況:新的代價函數是粉色這一條,由兩段直線構成,這時候非常接近邏輯迴歸中述使用的代價函數了。
事實上,在之後的的優化問題中,爲支持向量機,帶來計算上的優勢。例如,更容易計算股票交易的問題等等。
同理:y=0情況:
如果我們用一個新的代價函數來代替,即這條從 0 點開始的水平直線,然後是一條斜線,像上圖。
那麼,現在讓我給這兩個方程命名,左邊的函數,我稱之爲 cost1(z),同時,右 邊函數我稱它爲 cost0 (z) 。這裏的下標是指在代價函數中,對應的 y=1 和 y=0 的情況,擁有 了這些定義後,現在,我們就開始構建支持向量機
構建我們的支持向量機:
弄清楚上面這幅圖非常關鍵!!!
對於第一部分,需要注意後面的講解,代價函數用cost表示,對於支持向量機,我們希望得到最小化問題,同時加上正則化參數,此時的1/m這一項只是爲了方便運算(正如我們求一個函數的極值的座標與方程是否放大無關)
對於第二部分,由於常數是無關緊要的,因此可以用C來代替
第三部分,對於我們熟悉的邏輯迴歸,我們有兩項參數我們通過設置不同正則參數λ達到優化的目的A+λ×B,,但對於支持向量機,按照慣例,我 們將使用一個不同的參數替換這裏使用的 λ來權衡這兩項。就是第一項和第二項 我們依照慣例使用一個不同的參數稱爲 C,同時改爲優化目標,C×A+B 因此,在邏輯迴歸中, 如果給定λ,一個非常大的值,意味着給予 B 更大的權重。而這裏,就對應於將 C 設定爲非 常小的值,那麼,相應的將會給 B 比給 A 更大的權重。參數 C 考慮成 1/λ,
12.2 大邊界的直觀理解
與邏輯迴歸不同的是,支持向量機的要求更高,不僅僅要能正確分開輸入的樣本,即不 僅僅要求 >0,我們需要的是比 0 值大很多,比如大於等於 1,我也想這個比 0 小很多, 比如我希望它小於等於-1,這就相當於在支持向量機中嵌入了一個額外的安全因子。或者說 安全的間距因子。
支持向量機的直觀感受:
求解優化問題的時候得到非常有趣的決策邊界:
SVM能得到黑色這一條,如何得出呢?通過間距(margin),如圖:
因此支持向量機有時被稱爲大間距分類器
注意
大間距分類器由於正則化因子常數設置的非常大,學習算法容易受異常點(outlier)的影響:
當正則化參數非常大,SVM則會將決策界由黑邊粉紅。
當 C 不是非常非常大的時候,它可以忽略掉一些異常點的影響,得到更好的決策界。
回顧一下
C=1/λ,因此:
C 較大時,相當於 λ 較小,可能會導致過擬合,高方差。
C 較小時,相當於 λ 較大,可能會導致低擬合,高偏差。
爲什麼會是這樣的? 它是如何得出大間距分類器的?我在本節中沒有講解,在下一節課中,我將略述這些問題背 後的數學原理,來解釋這個優化問題是如何得到一個大間距分類器的。
且背後的數學意義,先不討論
12.3 大邊界分類背後的數學
12.4 核函數1
回顧我們之前討論過可以使用高級數的多項式模型來解決無法用直線進行分隔的分類 問題:
給定一個訓練實例 x,我們利用 x 的各個特徵與我們預先選定的地標(landmarks)
例如:
注:這個函數與正態分佈沒什麼實際上的關係,只是看上去像而已。
圖中水平面的座標爲 x1,x2而垂直座標軸代表 f。可以看出,只有當 x 與 l (1)重合時 f 才 具有最大值。隨着 x 的改變 f 值改變的速率受到 σ 2的控制。
在下圖中,當實例處於洋紅色的點位置處,因爲其離 l (1)更近,但是離 l (2)和 l (3)較遠,因 此 f1接近 1,而 f2,f3 接近 0。因此 hθ(x)=θ0+θ1f1+θ2f2+θ1f3>0,因此預測 y=1。
同理可以求出, 對於離 l (2)較近的綠色點,也預測 y=1,但是對於淺藍色的點,因爲其離三個地標都較遠,預測 y=0。
小結:
這樣,圖中紅色的封閉曲線所表示的範圍,便是我們依據一個單一的訓練實例和我們選取的地標所得出的判定邊界,在預測時,我們採用的特徵不是訓練實例本身的特徵,而是通過核函數計算出的新特徵 f1,f2,f3。
12.5 核函數2
如何選地標:
將核函數用於支持向量機中:
我們在對後正則化部分微調一下
改成
其中 M 是根據我們選擇的核函數而不同的一個矩陣。這樣做的 原因是爲了簡化計算。
12.6 使用支持向量機
關於參數的求解,我們一般的都是通過調用包進行求解的比如Libsvm
儘管不自己的 SVM(支持向量機)的優化軟件,但是你也需要做幾件事:
1、是提出參數 C 的選擇。我們在之前的視頻中討論過誤差/方差在這方面的性質。
2、你也需要選擇內核參數或你想要使用的相似函數,其中一個選擇是:我們選擇不需要任何內核參數,沒有內核參數的理念,也叫線性核函數。
因此,如果有人說他使用了線性核的 SVM(支持向量機),這就意味這他使用了不帶有核函數的 SVM(支持向量機)。
下面是一些普遍使用的準則:
n 爲特徵數,m 爲訓練樣本數。
(1)如果相較於 m 而言,n 要大許多,即訓練集數據量不夠支持我們訓練一個複雜的非 線性模型,我們選用邏輯迴歸模型或者不帶核函數的支持向量機。
(2)如果 n 較小,而且 m 大小中等,例如 n 在 1-1000 之間,而 m 在 10-10000 之間, 使用高斯核函數的支持向量機。
(3)如果 n 較小,而 m 較大,例如 n 在 1-1000 之間,而 m 大於 50000,則使用支持向量 機會非常慢,解決方案是創造、增加更多的特徵,然後使用邏輯迴歸或不帶核函數的支持向 量機。
值得一提的是,神經網絡在以上三種情況下都可能會有較好的表現,但是訓練神經網絡 可能非常慢,選擇支持向量機的原因主要在於它的代價函數是凸函數,不存在局部最小值。
選擇神經網絡和SVM上:
對於許多這樣的問題,神經網絡訓練起來可能會特別慢,但是如果 你有一個非常好的 SVM 實現包,它可能會運行得比較快比神經網絡快很多,儘管我們在此 之前沒有展示,但是事實證明,SVM 具有的優化問題,是一種凸優化問題。以及全局最優
總結:
對於監督學習而言不是你所掌握的算法的強弱:、
通常更加重要的是:你有多少數據,你有 多熟練是否擅長做誤差分析和排除學習算法,指出如何設定新的特徵變量和找出其他能決定 你學習算法的變量等方面,通常這些方面會比你使用邏輯迴歸還是 SVM 這方面更加重要
參考:
黃海廣博士的機器學習筆記
Andrew Ng b站視頻教學