支持向量機 二 :非線性支持向量機

如果您還未了解 線性向量機,建議首先閱讀

支持向量機 一:線性支持向量機

一、爲什麼要用非線性支持向量機?

線性支持向量機不香嗎?爲什麼還要用非線性支持向量機?
線性支持向量機香是香,但並不適合大多數數據集啊。比如下圖這個數據,使用線性SVM就無法劃分。
非線性SVM的話便可以解決這個問題,因爲非線性SVM通過將低維的數據集變換成高位的數據集,從而使線性不可分的數據可分。上圖的數據經變換成下圖的方式,數據便可分了。
在這裏插入圖片描述

二、低維怎麼到高維的呢?— 核函數介紹

對於線性不可分數據集D={(x1,y1),(x2,y2),...,(xn,yn)}D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},其中xix_i是第ii個實例,yiy_ixix_i的類標籤,並且有yi{1,1}y_i∈\{-1,1\}。我們需要通過變換將數據集DD轉換到較高的維度,核函數就是一個很好的方法。我們假設原數據集的空間爲X\Chi,我們的數據集一般可以度量並且可以計算內積,但我們的數據集不能存在極限,所以X\Chi屬於歐式空間。

2.1 核函數是什麼

我們來看看核函數是什麼,我們希望將輸入空間X\Chi(歐式空間)映射到特徵空間H\Eta(希爾伯特空間),如果存在一個從X\ChiH\Eta的映射ϕ(x):XH\phi(x):\Chi\rarr\Eta使得對所有 xi,xjXx_i,x_j∈\Chi,函數K(xi,xj)K(x_i,x_j)滿足條件K(xi,xj)=ϕ(xi).ϕ(xj)K(x_i,x_j)=\phi(x_i).\phi(x_j)則稱K(xi,xj)K(x_i,x_j)爲核函數,ϕ(x)\phi(x)爲映射函數,式中ϕ(xi).ϕ(xj)\phi(x_i).\phi(x_j)ϕ(xi)\phi(x_i)ϕ(xj)\phi(x_j)的內積。

2.2 簡單介紹一下 歐式空間 與 希爾伯特空間

如果你是入門者,你可能感嘆“天哪!什麼跟什麼啊!這就是核函數啦?什麼是歐式空間?什麼是希爾伯特空間?”簡單說一句,以便你理解歐式空間與希爾伯特空間。

歐式空間裏的元素是可以計算距離的,並且歐式空間中的元素之間的角度也是可以通過內積計算的。如下圖,v1,v2v_1,v_2的距離是可度量的,並且通過內積可以計算其夾角。“可度量,有內積?這就夠了嗎?”不夠。考慮一下我們日常使用的數據,首先你會提出極限值,因爲極限值是無法度量的,你或許會用一個很大的值代表無限,但是這個很大的值並不是無限的度量。另外你的數據中某個實例肯定是有限維的,就比如你研究你和某人合不合適,你會分析多少個方面(維度呢),但無論多少個都不會是無限個,即使你子子孫孫無窮盡也也不會子子孫孫去分析無限個。再比如,雖然說大數據時代數據特徵特別高,但是也是有限度的,不然電腦和硬盤存不下,而且你也會對這些特徵進行特徵篩選獲取最主要的特徵。因此除了可度量,有內積,歐式空間還是不考慮極限,維度有限的。最後一點就是歐式空間屬於實數域
在這裏插入圖片描述

希爾伯特空間又是什麼?“希爾伯特空間=歐式空間+維度無限+可定義極限”,希爾伯特空間是在歐式空間的基礎上加了完備性,也就是說希爾伯特空間除了可度量,有內積之外,其內的元素存在無極限的情況,而且允許維度無限維,並且屬於複數域。也因爲希爾伯特空間允許無限維度和極限值,所以希爾伯特空間往往是更高維的空間,甚至是無窮維的空間。目前希爾伯特空間多運用在泛函分析和量子力學中。

三、核函數如何與SVM產生聯繫

我在《支持向量機:線性支持向量機》中已經介紹了線性支持向量機最終要解決的對偶問題,即:mina  12i=1Nj=1Naiajyiyj(xi.xj)i=1Nai  ...  (1) s.t.  i=1Naiyi=0,     i=1,2,.,N  ...  (2) 0aiC,    i=1,2,.,N  ...  (3)min_a\ \ \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^Na_ia_jy_iy_j(x_i.x_j)-\sum_{i=1}^Na_i \ \ ... \ \ (1) \\\ s.t.\ \ \sum_{i=1}^Na_iy_i=0, \ \ \ \ \ i=1,2,.,N \ \ ...\ \ (2)\\\ 0\leq a_i\leq C,\ \ \ \ i=1,2,.,N\ \ ...\ \ (3)非線性支持向量機便是使用K(xi,xj)K(x_i,x_j)代替式(1)中的(xi,xj)(x_i,x_j)。不要誤會,雖然我們這裏是從式(1)開始替換,但其實從數據集DD開始將xix_i映射到ϕ(xi)\phi(x_i)的,只不過最後得到式子與從式(1)開始替換一樣。並且從式(1)替換還有另外一個原因,就是找到一個映射ϕ(x):XH\phi(x):\Chi\rarr\Eta是很難的操作,所以研究人員往往先確定K(xi,xj)K(x_i,x_j)再從K(xi,xj)=ϕ(xi).ϕ(xj)K(x_i,x_j)=\phi(x_i).\phi(x_j)反推得到ϕ(x)\phi(x)。因此我們得到了非線性支持向量機最終要解決的對偶問題,即:mina  12i=1Nj=1NaiajyiyjK(xi.xj)i=1Nai  ...  (4) s.t.  i=1Naiyi=0,     i=1,2,.,N  ...  (5) 0aiC,    i=1,2,.,N  ...  (6)min_a\ \ \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^Na_ia_jy_iy_jK(x_i.x_j)-\sum_{i=1}^Na_i \ \ ... \ \ (4) \\\ s.t.\ \ \sum_{i=1}^Na_iy_i=0, \ \ \ \ \ i=1,2,.,N \ \ ...\ \ (5)\\\ 0\leq a_i\leq C,\ \ \ \ i=1,2,.,N\ \ ...\ \ (6)

四、非線性SVM的 分離超平面 與 目標決策函數

首先,我們來回顧以下線性SVM的分離超平面i=1Naiyi(xix)+b=0  ...  (7)\sum_{i=1}^Na_i^*y_i(x_i·x)+b^*=0\ \ ...\ \ (7)以及線性SVM分類決策函數f(x)=sign(i=1Naiyi(xix)+b)  ...  (8)f(x)=sign(\sum_{i=1}^Na_i^*y_i(x_i·x)+b^*)\ \ ... \ \ (8)
並且在線性SVM中,我們確定參數bb的規則是b=yji=1Naiyi(xi.xj)  ...  (9)b^*=y_j-\sum_{i=1}^Na_i^*y_i(x_i.x_j)\ \ ...\ \ (9)式(7)(8)(9)的獲得已在《支持向量機:線性支持向量機》中解釋,想了解的請移步以下。

根據式(7)(8)(9),我們來求解以下非線性SVM的分離超平面和分類決策函數。

首先,通過SMO算法我們求得式(4)(5)(6)的最優解a=(a1,a2,...,aN)Ta=(a_1^*,a_2^*,...,a_N^*)^T其次,我們從aa^*中選擇一個分量aja_j^*(要求0ajC0\leq a_j^*\leq C,這也表明bb^*不唯一),根據式(9)有b=yji=1NaiyiK(xi,x)b^*=y_j-\sum_{i=1}^Na_i^*y_iK(x_i,x)於是,我們求得分離超平面:i=1NaiyiK(xi,x)+b=0\sum_{i=1}^Na_i^*y_iK(x_i,x)+b^*=0還有分類決策函數:f(x)=sign(i=1NaiyiK(xi,x)+b)f(x)=sign(\sum_{i=1}^Na_i^*y_iK(x_i,x)+b^*)

五、介紹幾個常用的核函數

隨便寫一個K(xi,xj)K(x_i,x_j)就是核函數了嗎?當然不是,K(xI,xj)K(x_I,x_j)必須滿足一定的條件纔會是核函數,而這個條件就是核函數必須是正定核函數。我們對什麼是正定核不做多餘的解釋,但是我們可以介紹兩個成功的核函數。

  1. 多項式核函數K(xi,x)=(xix+1)pK(x_i,x)=(x_i·x+1)^p其對應的決策函數f(x)=sign(i=0Naiyi(xix+1)p+b)f(x)=sign(\sum_{i=0}^Na_i^*y_i(x_i·x+1)^p+b^*)
  2. 高斯核函數K(xi,x)=exp(xix22σ2)K(x_i,x)=\exp(-\frac{||x_i-x||^2}{2\sigma^2})其對應的決策函數f(x)=sign(i=0Naiyiexp(xix22σ2))f(x)=sign(\sum_{i=0}^Na_i^*y_i\exp(-\frac{||x_i-x||^2}{2\sigma^2}))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章