機器學習:SVM(支持向量機)原理推導

聽說SVM是機器學習的分水嶺,翻過這座大山機器學習就在眼前。本篇將詳細介紹SVM的原理推導過程,包括線性、近線性、非線性、優化方法等,大量思想都源自於《統計學習方法》和劉順祥《零基礎入門python數據挖掘與分析》。python

首先咱們介紹數學中的距離公式
圖片.png
d 表示 二位空間的一個點到直線 Ax+By+C=0的距離。算法

1、線性可分的SVM

引伸出函數間隔的概念
此概念是全部SVM推導的核心,咱們用式子表示:
圖片.png
式子並不複雜,咱們分別介紹參數名稱及含義:
等式左邊表明 函數間隔,《統計學習方法》稱硬間隔。
yi 爲樣本點類別yi={1,-1},分類用的-1和1,沒有使用1和0是由於和後面計算有關。
xi 爲樣本點。
W'爲超平面參數矩陣W的轉置。
b 爲超平面參數
函數間隔性質:
一、函數間隔永大於0,由於樣本在超平面兩側正負號不一樣,分類的正負號也不一樣。
二、直線y=W'x+b爲經過某同樣本點的直線,同比例增長W'和b直線不變,可是函數間隔會成比例增長,所以咱們須要對原來函數間隔進行單位化處理。
圖片.png
此時咱們的函數間隔就和距離公式的距離是同樣的形式了。
此時的γ具備幾何意義,故城幾何間隔。機器學習

機器學習的關鍵我認爲是構造目標函數,目標函數直接決定了模型的性質。函數

構造目標函數

這裏咱們稍微講一下SVM的核心思路,咱們找到一個最大限度區分樣本的超平面。說的很是寬泛無數學含義,咱們能夠舉個例子,好比印度貧富差距大,但貧富的分佈是和地理有關係的,假設某一地區能夠用一條線把富人區和貧民區徹底且完美的分割開來,線是沒有面積的,可是咱們但願這條線儘量的寬,越寬咱們分的越清晰,甚至咱們能夠貼着樣本劃線取得最寬分割帶(超平面)。好比挖一條河河越寬兩岸的分界線就越明顯,分析預測就越可靠。放到上面就是咱們要求最大的幾何間隔γ,而且咱們全部點都必須在超平面以外,即全部樣本點到超平面的距離都必須大於最大幾何間隔γ。
圖片.png
若是超平面參數w,b同比例增加,函數間隔會成增加,可是幾何間隔不會,上述關係也不會受到影響。對於函數間隔:yi類別的取值就能夠定爲任意值,-2,2,-0.1,0.1這種都行。這樣咱們可使最近的幾何間隔對應的函數間隔取1。
《統計學習方法》也只是稍微提了一下對函數優化沒有影響因此取1,這裏我把它細化一下,咱們取的是離超平面最近距離的點的函數間隔取1,不管你是增縮yi,仍是超平面參數w、b,均可以作到並且對優化函數沒有影響。
如圖下圖轉換函數:
圖片.png
這就轉化爲一個凸二次規劃的問題,廣泛存在於機器學習問題。因此要掌握。學習

拉格朗日乘數法:

首先看一下拉格朗日乘數發的形式:
圖片.png
圖片展現的是最小的目標函數f(x)在受到g(x)>0的約束條件時的拉格朗日函數形式。其中,λ i 即爲拉格朗日乘子,且λ i >0。上式就稱爲廣義拉格朗日函數的極小極大問題。在求解極小值問題時,還須要利用對偶性將極小極大問題轉換爲極大極小問題,即
圖片.png
根據如上介紹的拉格朗日數乘法,就能夠將目標函數從新表示爲
圖片.png
看似未知變量挺多,可是是能夠求最優的問題。
首先咱們求minw,b部分,知足最小的目標函數的參數值。
對w、b分別求導並令其導函數爲0:
圖片.png
在將求出的w值帶入原式子,求max α的部分。
圖片.png
原來的目標函數通過拉格朗日乘子法的變換,把二次規劃的問題變成關於拉格朗日乘子α求函數最大值的問題。接下來咱們的問題就是求知足條件的α。
即:
圖片.png
因爲限制條件是個等式,在最優化的時候會好求的多,若是全部的解都不能知足以上條件,則表明α只能在邊界取得最優化值,帶入多個邊界值,比較最優解。
這種算法很是繁瑣,因而延伸出一種很是好用的算法SMO算法。優化