在支持向量機(support vector machine,SVM)算法中,有諸多數學思想。學習SVM是一個非常好的實踐數學思想的過程,為我們以後創新解決問題思路提供了啟發。
在卷積神經網絡興起之前,在機器學習界一直是非常受追捧的算法,不光是因為其有良好的泛化能力、很高的準確度,更是因為其完備的數學理論依據以及諸多較難理解的數學知識。這兩點讓人們覺得SVM是一個很精妙很酷的算法!所以在實際應用也非常多。
本文從頭到尾闡述SVM從建模到求解過程中的數學思想,我們發覺SVM建模的出發點是非常簡單的,通過了解其數學思想,對其一步一步為什麼、怎麼應用各種數學思想方法,變得越來越複雜的整個過程就有了非常清晰的了解。更重要的,我們對科學建模過程也有了充分了解,便於我們以後進行各種創新設計。SVM主要概括為:
理解SVM問題是通過簡單的直覺和嚴謹的數學來約束最小化問題。 SVM問題應用拉格朗日方法來解決約束優化問題。 為了找到不同類別點之間最寬的間隔,最大化問題僅取決於點積。其背後的數學思想概括有下邊要講的四點,本文詳細分析之。
幾何思想:簡單直覺的理解世界
SVM出發點是非常直覺的,那就是把二分類問題放到幾何上理解。
SVM最初的問題是:把二分類問題轉化為在二維空間中,找到最佳分隔線,如下圖所示:
這個分隔線怎麼找才最好,最直覺的思想就是"不偏不倚",與兩類樣本點的邊界保持相等的最遠的距離。
這是一個非常直覺、非常樸素的直觀感覺!作為一個比較難理解的算法,SVM發點竟然如何簡單!這也給我們一個啟發,那就是對於現實世界問題建模,剛開始一定要追求極簡原則、直覺原則,為什麼呢?因為越是簡單,越容易檢驗正確與否,類似於幾何中公理一樣。
接下來,我們繼續演繹,那就是在幾何上,怎麼表達"不偏不倚"?很顯然,再一次直覺感知,那就是最大化間隔。
我們希望找到這樣一個決策邊界,這個邊界距離兩類數據點最遠。更進一步的,是距離兩類數據點的邊界最遠,所以定義最接近邊界的數據點定義為支持向量。最後,我們的目標變為找到這樣一個直線(多維叫超平面),它與支持向量有最大的間隔。
抽象思維:由實際問題建模的數學思想
抽象思維,是由實際問題抽象為數學模型的非常重要的思想。
剛才我們已經把問題用幾何說清楚了,接下來,仍然是用幾何求解。為了表達這個距離(間隔),需要把現實世界中的這類問題抽象共性表達。所以我們進行若干設定:
設這個平面用g(x)=0來表示,其法向量用w表示 點與平面實際距離為r 點與平面的距離可以用g(x)的絕對值來度量(稱為函數間隔)
如上圖所示,點x可以表示為:
這是g(x)為正的情況,點x在平面一側。
我們的目標就是求r最大化。函數間隔的取值並不影響最優解,假設將w,b按比例擴大a倍,函數間隔變為ag(x),分母也變為原來的a 倍,上下抵消。對目標函數沒有影響 ,因此為優化方便我們設函數間隔為 1。
也意味著,支持向量邊界被設定為g(x)=±1,即間隔面。最後,間隔變為:
同時我們的約束是:
最後抽象後的數學問題變為:
懲罰函數(因子):提升系統的魯棒容錯能力
懲罰函數亦稱處罰函數,是一類制約函數。對於約束非線性規劃它的制約函數稱為懲罰函數,係數稱為懲罰因子 。是數學中非常重要的一種處理方法。
引入懲罰因子C的SVM(軟間隔支持向量機)的目標函數為:
這個做法非常精妙,體現非常精妙神奇的數學思維。
為什麼要引入C?要理解參數C的意義,先要理解ξ的意義。如下圖所示,
當樣本點越過本類樣本點的邊界時,
時,點在分離超平面與本側間隔面之間;
時,點在超平面上;
時,點在分離超平面與另一側間隔面之間;
時,點在分離超平面誤分一側。
所以,設置C就是為了對這些在邊界地帶誤分的點,而這些點在現實世界是天然存在的,如果對於他們不進行容錯(對應硬間隔支持向量機),那麼我們是無論如何也不能把樣本分開的。而引入懲罰因子,目的就是,對這類誤分的樣本進行容錯,相當於把點拉到正確一側。
具體分析之,我們要最小化目標函數:
①當C很大時,ξ趨近於0,結合上圖和上邊的解釋,分離超平面被邊界的點朝相反類別一側擠壓,換句話說:懲罰很大,容忍度很低,錯分較少,對樣本的擬合性較好,但容易過擬合;
②C的變小時,ξ開始變大,結合上圖和上邊的解釋,處於兩個間隔面之間的點(甚至另一側)變多,錯分較多,對樣本的擬合性下降。
所以要權衡折中。
轉化思想:轉化為容易解決的問題
轉化思想,是數學中最為靈魂、最為常用的思想。
這裡主要講的對於SVM目標函數求解用到了拉格朗日對偶與KKT條件,如果不太了解拉格朗日對偶與KKT條件,可以參考本頭條號文章《深入講解強弱對偶理論與KKT條件》視頻《形象直觀理解KKT條件》。
我們已經得到SVM的目標函數(以硬間隔為例):
對於求解不等式約束的問題,我們轉化為求其對偶問題,這個對應的對偶問題是:
其中
最終我們得到目標函數如下,由我個變量變為只有一個變量:
核思想:升維的同時避免維度災難帶來的複雜計算
目標函數中有點積:
不僅如此,因為決策函數還取決於支持向量和新樣本的點積:
這意味著如果我們使用將數據映射到更高維度空間的映射函數,那麼最大化和決策函數取決於不同樣本的映射函數的點積,那麼我們只需要知道K而不是映射函數本身。這就是核函數,它降低了尋找映射函數的複雜性。核函數定義了轉換空間中的內積。
對於核函數的透徹理解,請參考本頭條號另一文章《透徹形象理解核函數》,本文僅以高斯核函數作為舉例,推導其映射函數:
其映射函數為:
可以映射到無窮維。看核函數,注意到它取決於兩點之間的歐幾裡德距離,即如果兩個矢量更接近則該項很小。由於方差總是正的,這意味著對於更接近的向量,其值更大。當伽馬參數高時,核函數的值將更小,即使對於非常靠近兩個樣本,這可能導致複雜的決策邊界或引起過度擬合。如下圖所示: