演算法工程師修仙之路:吳恩達機器學習(十三)
阿新 • • 發佈:2018-12-31
吳恩達機器學習筆記及作業程式碼實現中文版
第十章 支援向量機
優化目標
- 在監督學習中,許多學習演算法的效能都非常類似,因此,重要的不是你該選擇使用學習演算法 A 還是學習演算法 B,而更重要的是,所建立的大量資料在應用這些演算法時,表現情況通常依賴於你的水平。比如你為學習演算法所設計的特徵量的選擇,以及如何選擇正則化引數,諸如此類。
- 支援向量機(Support VectorMachine),簡稱 SVM,與邏輯迴歸和神經網路相比,在學習複雜的非線性方程時提供了一種更為清晰,更加強大的方式。
- 從邏輯迴歸開始展示如何一點一點修改來得到本質上的支援向量機:
- 在邏輯迴歸中我們已經熟悉了下圖的假設函式形式和右邊的 S 型激勵函式。
- 如果有一個 的樣本,不管是在訓練集中或是在測試集中,又或者在交叉驗證集中,總之是 ,現在我們希望 趨近 1。因為我們想要正確地將此樣本分類,這就意味著當 趨近於 1 時, 應當遠大於 0,這裡的>>意思是遠遠大於 0。
- 相反地,如果我們有另一個樣本,即
。我們希望假設函式的輸出值將趨近於 0,這對應於
,或者就是
會遠小於 0,因為對應的假設函式的輸出值趨近 0。
- 現在,一起來考慮兩種情況:一種是y等於 1 的情況;另一種是y等於 0 的情況。
- 在第一種情況中,假設 ,此時在目標函式中只需有第一項起作用,因為 時, 項將等於 0。因此,當在 的樣本中時,即在 (x, y)中 ,我們得到 這一項。
- 如果畫出關於 的函式,我們同樣可以看到,當 增大時,也就是相當於 增大時, 對應的值會變的非常小。對整個代價函式而言,影響也非常小。這也就解釋了,為什麼邏輯迴歸在觀察到正樣本 時,試圖將 設定得非常大。因為,在代價函式中的這一項會變的非常小。
- 現在開始建立支援向量機,我們會從這個代價函式開始,也就是
一點一點修改,取這裡的
點,先畫出將要用的代價函式:
- 新的代價函式是一條直線,也就是用紫紅色畫的曲線,這裡已經非常接近邏輯迴歸中使用的代價函數了,不過這裡是由兩條線段組成,即位於右邊的水平部分和位於左邊的直線部分,左邊直線部分的斜率並不重要。但是,這裡我們將使用的新的代價函式,是在 的前提下的。
- 目前,我們只是討論了
的情況,另外一種情況是當
時,此時代價函式只留下了
這一項。如果你將這一項作為
的函式,那麼,這裡就會得到橫軸
。同樣地,我們要替代這一條藍色的線,用相似的方法:
- 如果我們用一個新的代價函式來代替,即這條從 0 點開始的水平直線,然後是一條斜線,像上圖。那麼,現在給這兩個方程命名為
和
。這裡的下標是指在代價函式中,對應的
和
的情況,擁有了這些定義後,現在,我們就開始構建支援向量機:
- 首先,我們要除去1/m這一項,當然,這僅僅是由於人們使用支援向量機時,對比於邏輯迴歸而言,不同的習慣所致,這也會得出同樣的 最優值。
- 第二點概念上的變化,我們只是指在使用支援向量機時,一些如下的標準慣例,而不是邏輯迴歸。對於邏輯迴歸,在目標函式中,我們有兩項:第一個是訓練樣本的代價,第二個是我們的正則化項。這就相當於我們想要最小化 加上正則化引數 ,然後乘以其他項 ,我們所做的是通過設定不同正則引數 達到優化目的,使得訓練樣本擬合的更好,即最小化 。
- 對於支援向量機,按照慣例,我們將使用一個不同的引數替換這裡使用的 來權衡這兩項,就是第一項和第二項我們依照慣例使用一個不同的引數稱為 ,同時改為優化目標 。
- 在邏輯迴歸中,如果給定 一個非常大的值,意味著給予 更大的權重。而這裡,就對應於將 設定為非常小的值,那麼,相應的將會給 比給 更大的權重。
- 因此,這只是一種不同的方式來控制這種權衡或者一種不同的方法,即用引數來決定是更關心第一項的優化,還是更關心第二項的優化。
- 那麼,我現在刪掉這裡的
,並且用常數
來代替。這就得到了在支援向量機中我們的整個優化目標函式。然後最小化這個目標函式,得到 SVM 學習到的引數
:
- 最後有別於邏輯迴歸輸出的概率。在這裡,我們的代價函式,當最小化代價函式,獲得引數 時,支援向量機所做的是它來直接預測 的值等於1,還是等於0,當 大於或者等於 0 時,這個假設函式會預測1,其他情況為0。
- 這就是支援向量機數學上的定義。
- 在邏輯迴歸中我們已經熟悉了下圖的假設函式形式和右邊的 S 型激勵函式。