机器学习笔记九之支持向量机
本節目錄:
1 優化目標
2 大邊界的理解
3 大間距分類器
4 核函數
5 使用支持向量機
1.優化目標
大量數據在應用算法時,表現情況往往依賴于操作水平,比如 算法設計特征量的選擇、如何選擇正則化參數等。
邏輯回歸中的假設函數服從這樣的規律:
如果有一個y=1的樣本,我們希望?𝜃(𝑥) 趨 近 1。因為我們想要正確地將此樣本分類,這就意味著當 ?𝜃(𝑥)趨近于 1 時,𝜃𝑇𝑥 應當遠大于 0。這是因為由于 𝑧 表示 𝜃𝑇𝑥,當 𝑧遠大于 0 時,即到了
該圖的右邊,你不難發現此時邏輯回歸的輸出將趨近于 1。相反地,如果我們有另一個樣本,
即𝑦 = 0。我們希望假設函數的輸出值將趨近于 0,這對應于𝜃𝑇𝑥,或者就是 𝑧 會遠小于 0,
因為對應的假設函數的輸出值趨近 0。
如果你進一步觀察邏輯回歸的代價函數,你會發現每個樣本 (𝑥, 𝑦)都會為總代價函數,
增加這里的一項,因此,對于總代價函數通常會有對所有的訓練樣本求和,并且這里還有一
個1/𝑚項。
下面就是分別Y=1和y=0時各自具體情況:
現在,一起來考慮兩種情況:
一種是𝑦等于 1 的情況;另一種是 𝑦 等于 0 的情況。
在第一種情況中,假設 𝑦 = 1 ,此時在目標函數中只需有第一項起作用,因為𝑦 = 1時,
(1 ? 𝑦)項將等于 0。因此,當在 𝑦 = 1 的樣本中時,即在 (𝑥, 𝑦)中 ,我們得到 𝑦 = 1
?log(1 ? 1 /(1+𝑒?𝑧))這樣一項。
有了以上知識鋪墊,我們就可以創建支持向量機了。
首先去除邏輯回歸中的1/m這一項,得到相同的最優值theta.
然后前面加上一個參數C平衡代價函數和正則化項,
這就得到了支持向量機中整個優化目標函數。然后最小化目標函數,得到SVM學習到的參數C。
在這里,我們的代價函數,當最小化代價函數,獲得參數𝜃時,支持向量機所做的是它來直接預測𝑦的值等于 1,還是等于 0。因此,這個假設函數會預測 1。當𝜃𝑇𝑥大于或者等于 0 時,或者等于 0 時,所以學習參數𝜃就是支持向量機假設函數的形式。那么,這就是支持向量機數學上的定義。
2 大邊界的理解
這是支持向量機模型的代價函數,在左邊這里我畫出了關于𝑧的代價函數cos𝑡1(𝑧),此函數用于正樣本,而在右邊這里我畫出了關于𝑧的代價函數cos𝑡0(𝑧),橫軸表示𝑧,現在讓我們考慮一下,最小化這些代價函數的必要條件是什么。如果你有一個正樣本,𝑦 = 1,則只有在𝑧 >= 1時,代價函數cos𝑡1(𝑧)才等于 0。
換句話說,如果你有一個正樣本,我們會希望𝜃𝑇𝑥>=1,反之,如果𝑦 = 0,我們觀察一下,函數cos𝑡0(𝑧),它只有在𝑧 <= ?1的區間里函數值為 0。這是支持向量機的一個有趣性質。
我接下來會考慮一個特例。我們將這個常數𝐶設置成一個非常大的
值。比如我們假設𝐶的值為 100000 或者其它非常大的數,然后來觀察支持向量機會給出什
么結果?
如果 𝐶非常大,則最小化代價函數的時候,我們將會很希望找到一個使第一項為 0 的
最優解。因此,讓我們嘗試在代價項的第一項為 0 的情形下理解該優化問題。比如我們可以
把𝐶設置成了非常大的常數,這將給我們一些關于支持向量機模型的直觀感受。
我們已經看到輸入一個訓練樣本標簽為𝑦 = 1,你想令第一項為 0,你需要做的是找到
一個𝜃,使得𝜃𝑇𝑥 >= 1,類似地,對于一個訓練樣本,標簽為𝑦 = 0,為了使cos𝑡0(𝑧) 函數的
值為 0,我們需要𝜃𝑇𝑥 <= ?1。因此,現在考慮我們的優化問題。選擇參數,使得第一項等
于 0,就會導致下面的優化問題,因為我們將選擇參數使第一項為 0,因此這個函數的第一
項為 0,因此是𝐶乘以 0 加上二分之一乘以第二項。這里第一項是𝐶乘以 0,因此可以將其刪
去,因為我知道它是 0。
這將遵從以下的約束:𝜃𝑇𝑥(𝑖) >= 1,如果 𝑦(𝑖)是等于 1 的,𝜃𝑇𝑥(𝑖) <= ?1,如果樣本𝑖
是一個負樣本,這樣當你求解這個優化問題的時候,當你最小化這個關于變量𝜃的函數的時
候,你會得到一個非常有趣的決策邊界。
或者我們可以畫一條更差的決策界,這是另一條決策邊界,可以將正樣本和負樣本分開,
但僅僅是勉強分開,這些決策邊界看起來都不是特別好的選擇,支持向量機將會選擇這個黑
色的決策邊界,相較于之前我用粉色或者綠色畫的決策界。這條黑色的看起來好得多,黑線
看起來是更穩健的決策界。在分離正樣本和負樣本上它顯得的更好。數學上來講,這是什么
意思呢?這條黑線有更大的距離,這個距離叫做間距(margin)。
當畫出這兩條額外的藍線,我們看到黑色的決策界和訓練樣本之間有更大的最短距離。
然而粉線和藍線離訓練樣本就非常近,在分離樣本的時候就會比黑線表現差。因此,這個距
離叫做支持向量機的間距,而這是支持向量機具有魯棒性的原因,因為它努力用一個最大間
距來分離樣本。因此支持向量機有時被稱為大間距分類器,
3 大間距分類器
我們將這個大間距分類器中的正則化因子常數𝐶設置的非常大,我記得我將其設置為了 100000,因此對這樣的一個數據集,也許我們將選擇這樣的決策界,從而最大間距地分離開正樣本和負樣本。那么在讓代價函數最小化的過程中,我們希望找出在𝑦 = 1和𝑦 = 0兩種情況下都使得代價函數中左邊的這一項盡量為零的參數。如果我們找到了這樣的參數,則我們的最小化問題便轉變成:
圓圈和紅叉之間用黑線分割,但如果再加入一點,間隔線就變成了紅線。這是不明智的。而如果參數C設置非常大,決策邊界又從黑線變成了紅線。
大間距分類器的描述,僅僅是從直觀上給出了正則化參數𝐶非常大的
情形,同時,要提醒你𝐶的作用類似于1/𝜆,𝜆是我們之前使用過的正則化參數。這只是𝐶非
常大的情形,或者等價地 𝜆 非常小的情形。你最終會得到類似粉線這樣的決策界,但是實
際上應用支持向量機的時候,當𝐶不是非常非常大的時候,它可以忽略掉一些異常點的影響,
得到更好的決策界。甚至當你的數據不是線性可分的時候,支持向量機也可以給出好的結果。
回顧 𝐶 = 1/𝜆,因此:
𝐶 較大時,相當于 𝜆 較小,可能會導致過擬合,高方差。
𝐶 較小時,相當于 𝜆 較大,可能會導致低擬合,高偏差。
4 核函數
使用高級數的多項式模型可以解決無法用直線進行分隔的分類問題:
這些地標的作用是什么?如果一個訓練實例𝑥與地標𝐿之間的距離近似于 0,則新特征 f 近似于𝑒?0 = 1,如果訓練實例𝑥與地標𝐿之間距離較遠,則𝑓近似于𝑒?(一個較大的數) = 0。
那么如何選擇地標呢?
我們通常是根據訓練集的數量選擇地標的數量,即如果訓練集中有𝑚個實例,則我們選
取𝑚個地標,并且令:𝑙(1) = 𝑥(1), 𝑙(2) = 𝑥(2), . . . . . , 𝑙(𝑚) = 𝑥(𝑚)。這樣做的好處在于:現在我們
得到的新特征是建立在原有特征與訓練集中所有其他特征之間距離的基礎之上的,即:
另外,支持向量機也可以不使用核函數,不使用核函數又稱為線性核函數(linear kernel),
當我們不采用非常復雜的函數,或者我們的訓練集特征非常多而實例非常少的時候,可以采
用這種不帶核函數的支持向量機。
5 使用支持向量機
使用SVM優化時需要注意以下兩點:
1 提出參數C的選擇
2 選擇內核參數或你想要使用的內核函數
從邏輯回歸模型,我們得到了支持向量機模型,在兩者之間,我們應該如何選擇呢?
下面是一些普遍使用的準則:
𝑛為特征數,𝑚為訓練樣本數。
(1)如果相較于𝑚而言,𝑛要大許多,即訓練集數據量不夠支持我們訓練一個復雜的非線性模型,我們選用邏輯回歸模型或者不帶核函數的支持向量機。
(2)如果𝑛較小,而且𝑚大小中等,例如𝑛在 1-1000 之間,而𝑚在 10-10000 之間,使用高斯核函數的支持向量機。
(3)如果𝑛較小,而𝑚較大,例如𝑛在 1-1000 之間,而𝑚大于 50000,則使用支持向量機會非常慢,解決方案是創造、增加更多的特征,然后使用邏輯回歸或不帶核函數的支持向量機。
值得一提的是,神經網絡在以上三種情況下都可能會有較好的表現,但是訓練神經網絡
可能非常慢,選擇支持向量機的原因主要在于它的代價函數是凸函數,不存在局部最小值。
總結
以上是生活随笔為你收集整理的机器学习笔记九之支持向量机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT技术应用_2D绘图(转)
- 下一篇: gcc执行过程