分類演算法-支援向量機 SVM

娃哈哈店長發表於2020-01-19

SVM(Support Vector Machine) 指的是支援向量機,是常見的一種判別方法。在機器學習領域,是一個有監督的學習模型,通常用來進行模式識別、分類及迴歸分析。與其他演算法相比,支援向量機在學習複雜的非線性方程時提供了一種更為清晰、更加強大的方式。

0x00線行方程組和非線性方程組的區別

線性方程組線性方程組是各個方程關於未知量均為一次的方程組(例如2元1次方程組)。

非線性方程非線性方程,就是因變數與自變數之間的關係不是線性的關係。

線性方程組:克萊姆法則.用克萊姆法則求解方程組 有兩個前提,一是方程的個數要等於未知量的個數,二是係數矩陣的行列式要不等於零。

用克萊姆法則求解方程組實際上相當於用逆矩陣的方法求解線性方程組,它建立線性方程組的解與其係數和常數間的關係,但由於求解時要計算n+1個n階行列式,其工作量常常很大,所以克萊姆法則常用於理論證明,很少用於具體求解。

矩陣消元法.將線性方程組的增廣矩陣通過行的初等變換化為行簡化階梯形矩陣 ,則以行簡化階梯形矩陣為增廣矩陣的線性方程組與原方程組同解。當方程組有解時,將其中單位列向量對應的未知量取為非自由未知量,其餘的未知量取為自由未知量,即可找出線性方程組的解。

非線性方程:

非線性代數方程又稱為多項式方程。令某多項式等於零可得一個多項式方程,

例如:

利用勘根法可以找出某個代數方程的解。

0x01支援向量機基礎知識

  • 線性可分
    如下圖,資料見分隔得足以分開,很容易在圖中畫出一條直線將資料分開,這組資料被稱為線行可分資料。
    分類演算法-支援向量機

  • 分隔超平面
    如上圖,上述將資料集分隔開來得直線成為分隔超平面,由於上面給出得資料都在二維平面上,因此此時分隔超平面就是一條直線。如果給出得資料集點是三維的,那麼用來分隔資料的就是一個平面。因此更高維的情況可以以此類推,如果資料是n維的,那麼就需要一個n-1維的物件來對資料進行分隔,這些統稱為超平面。。

  • 間隔
    如下圖所示,下面三個圖中的都可以將資料分隔,但是哪種方式最好呢?我們希望資料點到分隔超平面的距離儘可能地遠。在這裡點到分割面地距離被稱為間隔。間隔儘可能大是因為如果犯錯或者在有限資料上訓練分類器,我們希望分類器儘可能健壯。

  • 支援向量
    離分隔超平面最近的那些點是支援向量

分隔超平面的形式可以寫成  

超平面在二維空間裡就是直線,方程是ax+by+c=0超平面在三維空間裡就是平面,方程是ax+by+cz+d=0 在n維空間裡推廣就是就是ax+by+cz+........+k=0這裡的(a,b,c...)就是向量w,是由平面確定的數,(x,y,z..)是平面上任一點的座標,就是你方程裡的x,也是一個向量。

其中 w = (w1,w2,w3...wd)為法向量,決定了超平面的方向,其中d等於資料的維度,

這很好理解,假設二維的(x1,x2)點可以被 ax+b=0 分隔,這裡面直線 ax+b=0 是一維的,但是這裡面a和x都是二維的

b為位移項,決定了超平面與原點之間的距離

0x02最大支援向量到間隔的距離

參考資料:https://zhuanlan.zhihu.com/p/61959821

對於圖中A點到分隔直線的距離為  

距離的理解:

分類演算法-支援向量機 SVM

上述計算結果也就是: 

表示向量的模,,w與w共軛的內積再開方

向量的內積和外積區別

向量的內積(點乘/數量積)。對兩個向量執行點乘運算,就是對這兩個向量對應位一一相乘之後求和的操作,向量內積是一個向量在另一個向量上的投影長度乘以另一個向量的長度,,如下所示,對於向量a和向量b:
![分類演算法-支援向量機]
(https://cdn.learnku.com/uploads/images/202...)
a和b的點積公式為:

分類演算法-支援向量機

向量的外積(叉乘)
概括地說,兩個向量的外積,又叫叉乘、叉積向量積,其運算結果是一個向量而不是一個標量。並且兩個向量的外積與這兩個向量組成的座標平面垂直。

定義:向量a與b的外積a×b是一個向量,其長度等於|a×b| = |a||b|sin∠(a,b),其方向正交於a與b。並且,(a,b,a×b)構成右手系。
計算方法

分類演算法-支援向量機

向量外積的性質

a × b = -b × a. (反稱性)

(λa + μb) × c = λ(a ×c) + μ(b ×c). (線性)

向量外積的幾何意義

在三維幾何中,向量a和向量b的外積結果是一個向量,有個更通俗易懂的叫法是法向量,該向量垂直於a和b向量構成的平面。

在3D影象學中,外積的概念非常有用,可以通過兩個向量的外積,生成第三個垂直於a,b的法向量,從而構建X、Y、Z座標系。如下圖所示:

分類演算法-支援向量機

找到支援向量後我們需要對該間隔最大化,公式:
分類演算法-支援向量機

這裡的常數C用於控制最大化間隔和保證大部分點的函式間隔小於1.0這兩兩個目標的權重。因為所有的資料都可能有干擾資料,所以通過引入所謂的鬆弛變數,允許有些資料點可以處於分隔面錯誤的一側。
根據上式可知,只要求出所有的a(阿爾法),那麼分隔超平面就可以通過這些a(阿爾法)來表達,SVM的主要工作就是求解a(阿爾法)。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

文章!!首發於我的部落格Stray_Camel(^U^)ノ~YO

相關文章