如果您還未了解 線性向量機,建議首先閱讀
《支持向量機 一:線性支持向量機》
一、爲什麼要用非線性支持向量機?
線性支持向量機不香嗎?爲什麼還要用非線性支持向量機?
線性支持向量機香是香,但並不適合大多數數據集啊。比如下圖這個數據,使用線性SVM就無法劃分。
非線性SVM的話便可以解決這個問題,因爲非線性SVM通過將低維的數據集變換成高位的數據集,從而使線性不可分的數據可分。上圖的數據經變換成下圖的方式,數據便可分了。
二、低維怎麼到高維的呢?— 核函數介紹
對於線性不可分數據集D={(x1,y1),(x2,y2),...,(xn,yn)},其中xi是第i個實例,yi是xi的類標籤,並且有yi∈{−1,1}。我們需要通過變換將數據集D轉換到較高的維度,核函數就是一個很好的方法。我們假設原數據集的空間爲X,我們的數據集一般可以度量並且可以計算內積,但我們的數據集不能存在極限,所以X屬於歐式空間。
2.1 核函數是什麼
我們來看看核函數是什麼,我們希望將輸入空間X(歐式空間)映射到特徵空間H(希爾伯特空間),如果存在一個從X到H的映射ϕ(x):X→H使得對所有 xi,xj∈X,函數K(xi,xj)滿足條件K(xi,xj)=ϕ(xi).ϕ(xj)則稱K(xi,xj)爲核函數,ϕ(x)爲映射函數,式中ϕ(xi).ϕ(xj)爲ϕ(xi)與ϕ(xj)的內積。
2.2 簡單介紹一下 歐式空間 與 希爾伯特空間
如果你是入門者,你可能感嘆“天哪!什麼跟什麼啊!這就是核函數啦?什麼是歐式空間?什麼是希爾伯特空間?”簡單說一句,以便你理解歐式空間與希爾伯特空間。
歐式空間裏的元素是可以計算距離的,並且歐式空間中的元素之間的角度也是可以通過內積計算的。如下圖,v1,v2的距離是可度量的,並且通過內積可以計算其夾角。“可度量,有內積?這就夠了嗎?”不夠。考慮一下我們日常使用的數據,首先你會提出極限值,因爲極限值是無法度量的,你或許會用一個很大的值代表無限,但是這個很大的值並不是無限的度量。另外你的數據中某個實例肯定是有限維的,就比如你研究你和某人合不合適,你會分析多少個方面(維度呢),但無論多少個都不會是無限個,即使你子子孫孫無窮盡也也不會子子孫孫去分析無限個。再比如,雖然說大數據時代數據特徵特別高,但是也是有限度的,不然電腦和硬盤存不下,而且你也會對這些特徵進行特徵篩選獲取最主要的特徵。因此除了可度量,有內積,歐式空間還是不考慮極限,維度有限的。最後一點就是歐式空間屬於實數域。
希爾伯特空間又是什麼?“希爾伯特空間=歐式空間+維度無限+可定義極限”,希爾伯特空間是在歐式空間的基礎上加了完備性,也就是說希爾伯特空間除了可度量,有內積之外,其內的元素存在無極限的情況,而且允許維度無限維,並且屬於複數域。也因爲希爾伯特空間允許無限維度和極限值,所以希爾伯特空間往往是更高維的空間,甚至是無窮維的空間。目前希爾伯特空間多運用在泛函分析和量子力學中。
三、核函數如何與SVM產生聯繫
我在《支持向量機:線性支持向量機》中已經介紹了線性支持向量機最終要解決的對偶問題,即:mina 21i=1∑Nj=1∑Naiajyiyj(xi.xj)−i=1∑Nai ... (1) s.t. i=1∑Naiyi=0, i=1,2,.,N ... (2) 0≤ai≤C, i=1,2,.,N ... (3)非線性支持向量機便是使用K(xi,xj)代替式(1)中的(xi,xj)。不要誤會,雖然我們這裏是從式(1)開始替換,但其實從數據集D開始將xi映射到ϕ(xi)的,只不過最後得到式子與從式(1)開始替換一樣。並且從式(1)替換還有另外一個原因,就是找到一個映射ϕ(x):X→H是很難的操作,所以研究人員往往先確定K(xi,xj)再從K(xi,xj)=ϕ(xi).ϕ(xj)反推得到ϕ(x)。因此我們得到了非線性支持向量機最終要解決的對偶問題,即:mina 21i=1∑Nj=1∑NaiajyiyjK(xi.xj)−i=1∑Nai ... (4) s.t. i=1∑Naiyi=0, i=1,2,.,N ... (5) 0≤ai≤C, i=1,2,.,N ... (6)
四、非線性SVM的 分離超平面 與 目標決策函數
首先,我們來回顧以下線性SVM的分離超平面:i=1∑Nai∗yi(xi⋅x)+b∗=0 ... (7)以及線性SVM分類決策函數:f(x)=sign(i=1∑Nai∗yi(xi⋅x)+b∗) ... (8)
並且在線性SVM中,我們確定參數b的規則是b∗=yj−i=1∑Nai∗yi(xi.xj) ... (9)式(7)(8)(9)的獲得已在《支持向量機:線性支持向量機》中解釋,想了解的請移步以下。
根據式(7)(8)(9),我們來求解以下非線性SVM的分離超平面和分類決策函數。
首先,通過SMO算法我們求得式(4)(5)(6)的最優解a=(a1∗,a2∗,...,aN∗)T其次,我們從a∗中選擇一個分量aj∗(要求0≤aj∗≤C,這也表明b∗不唯一),根據式(9)有b∗=yj−i=1∑Nai∗yiK(xi,x)於是,我們求得分離超平面:i=1∑Nai∗yiK(xi,x)+b∗=0還有分類決策函數:f(x)=sign(i=1∑Nai∗yiK(xi,x)+b∗)
五、介紹幾個常用的核函數
隨便寫一個K(xi,xj)就是核函數了嗎?當然不是,K(xI,xj)必須滿足一定的條件纔會是核函數,而這個條件就是核函數必須是正定核函數。我們對什麼是正定核不做多餘的解釋,但是我們可以介紹兩個成功的核函數。
- 多項式核函數K(xi,x)=(xi⋅x+1)p其對應的決策函數f(x)=sign(i=0∑Nai∗yi(xi⋅x+1)p+b∗)
- 高斯核函數K(xi,x)=exp(−2σ2∣∣xi−x∣∣2)其對應的決策函數f(x)=sign(i=0∑Nai∗yiexp(−2σ2∣∣xi−x∣∣2))