前言
支持向量機(support vector machine)本來是最早接觸的機器學習算法,最初自己寫的的機器視覺論文也用到了SVM,但和神經網絡一樣,一直覺得它是比較複雜的機器學習方法,需要深入的學習和研究。因此先是系統推導了李航的《機器學習》,之後學習Andrew Ng的機器學習課程,並看了july、pluskid等人的技術博客。也不能說自己完全懂了,只能算是學習筆記,總結一些自己能掌握的東西。
我在接觸SVM之初,深度學習已經比較火了,之所以還是運用SVM,一方面是因爲SVM本身是現成比較成熟的分類算法,另一方面是之前很多論文都說了SVM的可靠性,在各方面表現都不錯,而且有很多現成的資源(代表性有臺灣林智仁團隊的libsvm、liblinear)。爲了快速應用機器學習,就選擇了SVM。最終發現裏面真的是博大精深,包含有太多不同的模型,涉及了大量的數學知識,而且至今仍是很多科研人員的研究方向。
感知機(回顧)
在之前總結感知機(perceptron)時介紹了感知機是神經網絡(Neural Networks)和支持向量機(support vector machine, SVM)的基礎。首先,我們來看感知機由輸入空間到輸出空間的映射函數,這與支持向量機是一樣的:
其中sign函數的定義爲:
當
現在我們假設有如下圖所示的兩組數據,紅色表示正樣本+1,綠色表示負樣本-1,點所在位置爲樣本特徵值
對於上面定義的感知機,正樣本(紅點)在直線上面,則
當樣本被錯誤分類時,樣本真實類別
其中M是錯分樣本集合,即樣本被錯分之後就有一定的損失代價。分類器的最終目的也就轉爲求解使代價函數最小的分類邊界,在感知機中,只要求出使所有樣本都正確分類的超平面,則損失函數代價就爲0。
考慮到上圖所示的二分類問題,感知機最終的目的只是將兩類樣本正確分類,我們可以看出是有多條直線滿足該條件的,那麼到底哪條纔是最恰當的分類界限呢?這是感知機無法解決的問題。
從幾何直觀上來看,就上圖的二分類的問題 ,最佳決策邊界應該是圖中最近的紅點和黑點連線的中垂線(黑色圈中的兩個點),也就是說最佳決策邊界主要由最難分的兩個樣本點決定。這從感性上也比較好理解,因爲對於難分離的樣本,決策邊界稍微轉動一個角度,則有一個樣本就可能被錯分,即該樣本很大程度影響了決策邊界的分佈,反之,離得較遠的樣本點則不會有影響。這就是支持向量機中支持向量的直觀概念,下面我們先具體介紹線性可分支持向量機的一些知識。
線性可分支持向量機
通過上述介紹我們知道,感知機能夠對線性可分樣本進行正確分類,但是求得的分類超平面有很多,即決策邊界不一定是最優的。通過線性可分支持向量機利用間隔最大化求最優分離超平面,這時決策邊界是唯一的。
首先,通過下圖我們可以看出,A點離分類平面較遠,預測爲正樣本的確信度很高,C點離分類平面較近,預測爲正樣本的確信度較低。由此,我們可以看出樣本分類的可信度可以通過樣本點到分類邊界的距離來定義。其中,相對距離可以由
因此,我們定義樣本點
而訓練集
如下圖所示,易證明:
則
不過這裏的
與函數間隔一樣,樣本集
支持向量機學習的基本思想就是求解能夠正確劃分樣本集並且是幾何間隔最大的分離超平面,簡單來說就是求解區分度最大的超平面,即確信度最大的超平面。因此我們定義目標函數爲:
但卻要滿足一定的限制條件,即樣本點到超平面的間隔至少都是
又因爲
根據上面討論我們知道,函數間隔
通過求解這個最優化問題,我們就能夠得到最大間隔的分類超平面。如下圖所示:
因爲我們前面固定最大函數間隔
在
PS:本處給出了線性可分支持向量機的一些基本概念和直觀認識,通過與感知機對比直觀上還是比較容易理解。難點在於目標函數的優化、線性不可分支持向量機以及非線性支持向量機的理解,將在後續筆記中進行介紹。