SVM原理以及Tensorflow 实现SVM分类(附代码讲了一下原理)
- 1.1. SVM介紹
- 1.2. 工作原理
- 1.2.1. 幾何間隔和函數(shù)間隔
- 1.2.2. 最大化間隔
- 1.3. 軟間隔
- 1.4. SMO算法
- 1.5. 核函數(shù)
- 1.6. 實(shí)例
1.1. SVM介紹
SVM(Support Vector Machines)——支持向量機(jī)是在所有知名的數(shù)據(jù)挖掘算法中最健壯,最準(zhǔn)確的方法之一,它屬于二分類(lèi)算法,可以支持線性和非線性的分類(lèi)。發(fā)展到今天,SVM已經(jīng)可以支持多分類(lèi)了,但在這一章里,我們著重講支持向量機(jī)在二分類(lèi)問(wèn)題中的工作原理。
假設(shè)在一個(gè)二維線性可分的數(shù)據(jù)集中,圖一A所示,我們要找到一個(gè)超平面把兩組數(shù)據(jù)分開(kāi),這時(shí),我們認(rèn)為線性回歸的直線或邏輯回歸的直線也能夠做這個(gè)分類(lèi),這條直線可以是圖一B中的直線,也可以是圖一C中的直線,或者圖一D中的直線,但哪條直線才最好呢,也就是說(shuō)哪條直線能夠達(dá)到最好的泛化能力呢?那就是一個(gè)能使兩類(lèi)之間的空間大小最大的一個(gè)超平面。
這個(gè)超平面在二維平面上看到的就是一條直線,在三維空間中就是一個(gè)平面...,因此,我們把這個(gè)劃分?jǐn)?shù)據(jù)的決策邊界統(tǒng)稱(chēng)為超平面。離這個(gè)超平面最近的點(diǎn)就叫做支持向量,點(diǎn)到超平面的距離叫間隔。支持向量機(jī)就是要使超平面和支持向量之間的間隔盡可能的大,這樣超平面才可以將兩類(lèi)樣本準(zhǔn)確的分開(kāi),而保證間隔盡可能的大就是保證我們的分類(lèi)器誤差盡可能的小,盡可能的健壯。
圖一
1.2. 工作原理
1.2.1. 幾何間隔和函數(shù)間隔
在最大化支持向量到超平面距離前,我們首先要定義我們的超平面h(x)h(x)(稱(chēng)為超平面的判別函數(shù),也稱(chēng)給定ww和bb的泛函間隔),其中ww為權(quán)重向量,bb為偏移向量:
?
h(x)=wTx+bh(x)=wTx+b
?
樣本xx到最優(yōu)超平面的幾何間隔為:
?
r=h(x)||w||=wTx+b||w||r=h(x)||w||=wTx+b||w||
?
||w||||w||是向量ww的內(nèi)積,是個(gè)常數(shù),即||w||=w02+w12+...+wn2????????????????√||w||=w02+w12+...+wn2,而h(x)h(x)就是下面要介紹的函數(shù)間隔。
函數(shù)間隔:
?
r?=h(x)r^=h(x)
?
函數(shù)間隔h(x)h(x)它是一個(gè)并不標(biāo)準(zhǔn)的間隔度量,是人為定義的,它不適合用來(lái)做最大化的間隔值,因?yàn)?#xff0c;一旦超平面固定以后,如果我們?nèi)藶榈姆糯蠡蚩s小ww和bb值,那這個(gè)超平面也會(huì)無(wú)限的放大或縮小,這將對(duì)分類(lèi)造成嚴(yán)重影響。而幾何間隔是函數(shù)間隔除以||w||||w||,當(dāng)ww的值無(wú)限放大或縮小時(shí),||w||||w||也會(huì)放大或縮小,而整個(gè)rr保持不變,它只隨著超平面的變動(dòng)而變動(dòng),不受兩個(gè)參數(shù)的影響。因而,我們用幾何間隔來(lái)做最大化間隔度量。
1.2.2. 最大化間隔
在支持向量機(jī)中,我們把幾何間隔rr作為最大化間隔進(jìn)行分析,并且采用-1和1作為類(lèi)別標(biāo)簽,什么采用-1和+1,而不是0和1呢?這是由于-1和+1僅僅相差一個(gè)符號(hào),方便數(shù)學(xué)上的處理。我們可以通過(guò)一個(gè)統(tǒng)一公式來(lái)表示間隔或者數(shù)據(jù)點(diǎn)到分隔超平面的距離,同時(shí)不必?fù)?dān)心數(shù)據(jù)到底是屬于-1還是+1類(lèi)。
我們一步一步的進(jìn)行分析,首先如下圖,在這個(gè)R2R2空間中,假設(shè)我們已經(jīng)確定了一個(gè)超平面,這個(gè)超平面的函數(shù)關(guān)系式應(yīng)該是h(x)=wTx+b=0h(x)=wTx+b=0,這個(gè)式子表示我們圖中的那條虛線,很明顯,這個(gè)式子意思是說(shuō)點(diǎn)x在超平面上,但我們要想使所有的點(diǎn)都盡可能的遠(yuǎn)離這個(gè)超平面,我們只要保證離這個(gè)超平面最近的點(diǎn)遠(yuǎn)離這個(gè)超平面,也就是說(shuō)這些叫支持向量的點(diǎn)x?x?需要盡可能的遠(yuǎn)離它。
?
我們把其中一個(gè)支持向量x?x?到最優(yōu)超平面的距離定義為:
?
r?=h(x?)||w||=?????????1||w||?1||w||if:y?=h(x?)=+1if:y?=h(x?)=?1r?=h(x?)||w||={1||w||if:y?=h(x?)=+1?1||w||if:y?=h(x?)=?1
?
這是我們通過(guò)把函數(shù)間隔h(x)h(x)固定為1而得來(lái)的。我們可以把這個(gè)式子想象成還存在兩個(gè)平面,這兩個(gè)平面分別是wTxs+b=1wTxs+b=1和wTxs+b=?1wTxs+b=?1,對(duì)應(yīng)上圖中的兩根實(shí)線。這些支持向量xsxs就在這兩個(gè)平面上,這兩個(gè)平面離最優(yōu)超平面的距離越大,我們的間隔也就越大。對(duì)于其他的點(diǎn)xixi如果滿(mǎn)足wTxi+b>1wTxi+b>1,則被分為1類(lèi),如果滿(mǎn)足滿(mǎn)足wTxi+b<?1wTxi+b<?1,則被分為-1類(lèi)。即有約束條件:
?
?????wTxi+b?1wTxi+b??1yi=+1yi=?1{wTxi+b?1yi=+1wTxi+b??1yi=?1
?
支持向量到超平面的距離知道后,那么分離的間隔ρρ很明顯就為:
?
ρ=2r?=2||w||ρ=2r?=2||w||
?
這下我們就要通過(guò)找到最優(yōu)的ww和bb來(lái)最大化ρρ了,感覺(jué)又像回到了邏輯回歸或線性回歸的例子。但是這里,我們最大化ρρ值需要有條件限制,即:
?
???????maxw,b2||w||yi(wTxi+b)?1,?(i=1,..,n){maxw,b2||w||yi(wTxi+b)?1,?(i=1,..,n)
?
yi(wTxi+b)yi(wTxi+b)的意思是通過(guò)判斷yiyi和wTxi+bwTxi+b是否同號(hào)來(lái)確定分類(lèi)結(jié)果。
接著,為了計(jì)算方便,我們把上式最大化ρρ換成:
?
???????minw,b12||w||2yi(wTxi+b)?1,?(i=1,..,n){minw,b12||w||2yi(wTxi+b)?1,?(i=1,..,n)
?
這種式子通常我們用拉格朗日乘數(shù)法來(lái)求解,即:
?
L(x)=f(x)+∑αg(x)L(x)=f(x)+∑αg(x)
?
f(x)f(x)是我們需要最小化的目標(biāo)函數(shù),g(x)g(x)是不等式約束條件,即前面的yi(wTxi+b)?1yi(wTxi+b)?1,αα是對(duì)應(yīng)的約束系數(shù),也叫拉格朗日乘子。為了使得拉格朗日函數(shù)得到最優(yōu)化解,我們需要加入能使該函數(shù)有最優(yōu)化解法的KKT條件,或者叫最優(yōu)化條件、充要條件。即假設(shè)存在一點(diǎn)x?x?
1.2.2.0.0.1.?L(x?)L(x?)對(duì)x?x?求導(dǎo)為0
1.2.2.0.0.2.?αigi(x?)=0αigi(x?)=0,對(duì)于所有的i=1,.....,ni=1,.....,n
這樣構(gòu)建我們的拉格朗日函數(shù)為:
?
L(w,b,α)=12wTw?∑i=1nαi[yi(wTxi+b)?1]L(w,b,α)=12wTw?∑i=1nαi[yi(wTxi+b)?1]
?
以上的KKT條件αi[yi(wTxi+b)?1]=0αi[yi(wTxi+b)?1]=0表示,只有距離最優(yōu)超平面的支持向量(xi,yi)(xi,yi)對(duì)應(yīng)的αα非零,其他所有點(diǎn)集的αα等于零。綜上所述,引入拉格朗日乘子以后,我們的目標(biāo)變?yōu)?#xff1a;
?
minw,bmaxα?0L(w,b,α)minw,bmaxα?0L(w,b,α)
?
即先求得αα的極大值,再求ww和bb的極小值。可以把該問(wèn)題轉(zhuǎn)為為等價(jià)的凸優(yōu)化和對(duì)偶問(wèn)題來(lái)求解,對(duì)于凸優(yōu)化和對(duì)偶問(wèn)題可以參考《凸優(yōu)化》這本書(shū),因?yàn)樵摾碚摽梢哉靡槐緯?shū)來(lái)介紹了,筆者在這里也只能點(diǎn)到為止了。通過(guò)對(duì)偶,我們的目標(biāo)可以又變成:
?
maxα?0minw,bL(w,b,α)maxα?0minw,bL(w,b,α)
?
即先求得ww和bb的極小值,在求αα的極大值。用L(w,b,α)L(w,b,α)對(duì)ww和bb分別求偏導(dǎo),并令其等于0:
?
????????L(w,b,α)?w=0??L(w,b,α)?b=0{?L(w,b,α)?w=0??L(w,b,α)?b=0
?
得:
?
???w=∑ni=1αiyixi?∑ni=1αiyi=0{w=∑i=1nαiyixi?∑i=1nαiyi=0
?
把該式代入原來(lái)的的拉格朗日式子可得(推導(dǎo)過(guò)程省略):
?
W(α)=∑i=1nαi?12∑i=1n∑j=1nαiαjyiyjxiTxjW(α)=∑i=1nαi?12∑i=1n∑j=1nαiαjyiyjxiTxj
?
?
∑i=1nαiyi=0?,αi?0(i=1,...,n)∑i=1nαiyi=0?,αi?0(i=1,...,n)
?
該W(α)W(α)函數(shù)消去了向量ww和向量bb,僅剩αα這個(gè)未知參數(shù),只要我們能夠最大化W(α)W(α),就能求出對(duì)應(yīng)的αα,進(jìn)而求得ww和bb。對(duì)于如何求解αα,SMO算法給出了完美的解決方案,下一節(jié)我們?cè)敿?xì)講述。這里我們假設(shè)通過(guò)SMO算法確定了最優(yōu)α?α?,則
?
w?=∑i=1nαi?yixiw?=∑i=1nαi?yixi
?
最后使用一個(gè)正的支持向量xsxs,就可以計(jì)算出bb:
?
b?=1?w?Txsb?=1?w?Txs
?
1.3. 軟間隔
在4.2節(jié)中我們推導(dǎo)了如何計(jì)算ww、bb和αα,但別忘了以上所有的推導(dǎo)都是在線性可分的條件下進(jìn)行的,但是現(xiàn)實(shí)世界的許多問(wèn)題并不都是線性可分的,尤其存在許多復(fù)雜的非線性可分的情形。如果樣本不能被完全線性分開(kāi),那么情況就是:間隔為負(fù),原問(wèn)題的可行域?yàn)榭?#xff0c;對(duì)偶問(wèn)題的目標(biāo)函數(shù)無(wú)限,這講導(dǎo)致相應(yīng)的最優(yōu)化問(wèn)題不可解。
要解決這些不可分問(wèn)題,一般有兩種方法。第一種是放寬過(guò)于嚴(yán)格的間隔,構(gòu)造軟間隔。另一種是運(yùn)用核函數(shù)把這些數(shù)據(jù)映射到另一個(gè)維度空間去解決非線性問(wèn)題。在本節(jié)中,我們首先介紹軟間隔優(yōu)化。
假設(shè)兩個(gè)類(lèi)有幾個(gè)數(shù)據(jù)點(diǎn)混在一起,這些點(diǎn)對(duì)最優(yōu)超平面形成了噪聲干擾,軟間隔就是要擴(kuò)展一下我們的目標(biāo)函數(shù)和KKT條件,允許少量這樣的噪聲存在。具體地說(shuō),就要引入松馳變量ξiξi來(lái)量化分類(lèi)器的違規(guī)行為:
?
???????minw,b12||w||2+C∑ni=1ξiyi(wTxi+b)?1?ξi,ξi?0,(i=1,..,n){minw,b12||w||2+C∑i=1nξiyi(wTxi+b)?1?ξi,ξi?0,(i=1,..,n)
?
參數(shù)C用來(lái)平衡機(jī)器的復(fù)雜度和不可分?jǐn)?shù)據(jù)點(diǎn)的數(shù)量,它可被視為一個(gè)由用戶(hù)依據(jù)經(jīng)驗(yàn)或分析選定的“正則化”參數(shù)。松馳變量ξiξi的一個(gè)直接的幾何解釋是一個(gè)錯(cuò)分實(shí)例到超平面的距離,這個(gè)距離度量的是錯(cuò)分實(shí)例相對(duì)于理想的可分模式的偏差程度。對(duì)上式的化解,可得:
?
W(α)=∑i=1nαi?12∑i=1n∑j=1nαiαjyiyjxiTxjW(α)=∑i=1nαi?12∑i=1n∑j=1nαiαjyiyjxiTxj
?
?
∑i=1nαiyi=0,0?αi?C(i=1,...,n)∑i=1nαiyi=0,0?αi?C(i=1,...,n)
?
可以看到,松馳變量ξiξi沒(méi)有出現(xiàn)在W(α)W(α)中,線性可分與不可分的差異體現(xiàn)在約束αi?0αi?0被替換成了約束0?αi?C0?αi?C。但是,這兩種情況下求解ww和bb是非常相似的,對(duì)于支持向量的定義也都是一致的。
在不可分情況下,對(duì)應(yīng)的KKT條件為:
?
αi[yi(wTxi+b)?1+ξi]=0,(i=1,...,n)αi[yi(wTxi+b)?1+ξi]=0,(i=1,...,n)
?
1.4. SMO算法
1996年, John Platt發(fā)布了一個(gè)稱(chēng)為SMO的強(qiáng)大算法,用于訓(xùn)練SVM。 SMO表示序列最小優(yōu)化(Sequential Minimal Optimization)。 Platt的SMO算法是將大優(yōu)化問(wèn)題分解為多個(gè)小優(yōu)化問(wèn)題來(lái)求解,這些小優(yōu)化問(wèn)題往往很容易求解,并且對(duì)它們進(jìn)行順序求解的結(jié)果與將它們作為整體來(lái)求解的結(jié)果是完全一致的。
SMO算法的目標(biāo)是求出一系列αα,一旦求出了這些αα,就很容易計(jì)算出權(quán)重向量ww和bb,并得到分隔超平面。
SMO算法的工作原理是:每次循環(huán)中選擇兩個(gè)αα進(jìn)行優(yōu)化處理。一旦找到一對(duì)合適的αα,那么就增大其中一個(gè)同時(shí)減小另一個(gè)。這里所謂的“合適”就是指兩個(gè)αα必須要符合一定的條件,條件之一就是這兩個(gè)αα必須要在間隔邊界之外,而其第二個(gè)條件則是這兩個(gè)αα還沒(méi)有進(jìn)行過(guò)區(qū)間化處理或者不在邊界上。
對(duì)SMO具體的分析如下,在4.3節(jié)中我們已經(jīng)得出了
?
W(α)=∑i=1nαi?12∑i=1n∑j=1nαiαjyiyjxiTxjW(α)=∑i=1nαi?12∑i=1n∑j=1nαiαjyiyjxiTxj
?
?
∑i=1nαiyi=0,0?αi?C(i=1,...,n)∑i=1nαiyi=0,0?αi?C(i=1,...,n)
?
其中(xi,yi)(xi,yi)已知,C可以預(yù)先設(shè)定,也是已知數(shù),現(xiàn)在就是要最大化W(α)W(α),求得參數(shù)α=[α1,α2,...,αn]α=[α1,α2,...,αn]。SMO算法是一次選擇兩個(gè)αα進(jìn)行優(yōu)化,那我們就選擇α1α1和α2α2,然后把其他參數(shù)[α3,α4,...,αn][α3,α4,...,αn]固定,這樣α1α1、α2α2表示為下面的式子,其中ζζ是實(shí)數(shù)值:
?
α1y1+α2y2=?∑i=3nαiyi=ζα1y1+α2y2=?∑i=3nαiyi=ζ
?
然后用α2α2來(lái)表示α1α1:
?
α1=(ζ?α2y2)y1α1=(ζ?α2y2)y1
?
把上式帶入W(α)W(α)中:
?
W(α)=W(α1,α2,...,αn)=W((ζ?α2y2)y1,α2,...,αn)W(α)=W(α1,α2,...,αn)=W((ζ?α2y2)y1,α2,...,αn)
?
省略一系列化解過(guò)程后,最后會(huì)化解成我們熟悉的一元二次方程,a,b,c均是實(shí)數(shù)值:
?
W(α2)=aα22+bα2+cW(α2)=aα22+bα2+c
?
最后對(duì)α2α2求導(dǎo),解得α2α2的具體值,我們暫時(shí)把這個(gè)實(shí)數(shù)值叫α?2α2?。而這個(gè)α?2α2?需要滿(mǎn)足一個(gè)條件L?α?2?HL?α2??H,其中LL和HH是什么呢?如下圖所示:
(圖片來(lái)自網(wǎng)絡(luò))
根據(jù)之前的條件0?αi?C0?αi?C和等式α1y1+α2y2=ζα1y1+α2y2=ζ知α1α1和α2α2要在矩形區(qū)域內(nèi),并且在直線上。當(dāng)y1y1和y2y2異號(hào)時(shí):
?
???L=max(0,α2?α1)H=min(C,C+α2?α1){L=max(0,α2?α1)H=min(C,C+α2?α1)
?
當(dāng)y1y1和y2y2同號(hào)時(shí):
?
???L=max(0,α2+α1?C)H=min(C,α2+α1){L=max(0,α2+α1?C)H=min(C,α2+α1)
?
最后,滿(mǎn)足條件的α2α2應(yīng)該由下面的式子得到,α??2α2??才為最終的值:
?
α??2=?????????????Hα?2L,α?2>H,L≤α?2≤H,α?2<Lα2??={H,α2?>Hα2?,L≤α2?≤HL,α2?<L
?
求得α??2α2??后我們就可以求得α??1α1??了。然后我們重復(fù)地按照最優(yōu)化(α1,α2)(α1,α2)的方式繼續(xù)選擇(α3,α4)(α3,α4),(α5,α6)(α5,α6)....(αn?1,αn)(αn?1,αn)進(jìn)行優(yōu)化求解,這樣α=[α1,α2,...,αn]α=[α1,α2,...,αn]求解出來(lái)后,整個(gè)線性劃分問(wèn)題就迎刃而解。
1.5. 核函數(shù)
對(duì)于以上幾節(jié)講的SVC算法,我們都在線性可分或存在一些噪聲點(diǎn)的情況下進(jìn)行的二分類(lèi),但是如果我們存在兩組數(shù)據(jù),它們的散點(diǎn)圖如下圖所示,你可以看出這完全是一個(gè)非線性不可分的問(wèn)題,我們無(wú)法使用之前講的SVC算法在這個(gè)二維空間中找到一個(gè)超平面把這些數(shù)據(jù)點(diǎn)準(zhǔn)確的分開(kāi)。
?
解決這個(gè)劃分問(wèn)題我們需要引入一個(gè)核函數(shù),核函數(shù)能夠恰當(dāng)?shù)挠?jì)算給定數(shù)據(jù)的內(nèi)積,將數(shù)據(jù)從輸入空間的非線性轉(zhuǎn)變到特征空間,特征空間具有更高甚至無(wú)限的維度,從而使得數(shù)據(jù)在該空間中被轉(zhuǎn)換成線性可分的。如下圖所示,我們把二維平面的一組數(shù)據(jù),通過(guò)核函數(shù)映射到了一個(gè)三維空間中,這樣,我們的超平面就面成了一個(gè)平面(在二維空間中是一條直線),這個(gè)平面就可以準(zhǔn)確的把數(shù)據(jù)劃分開(kāi)了。
?
核函數(shù)有Sigmoid核、線性核、多項(xiàng)式核和高斯核等,其中高斯核和多項(xiàng)式核比較常用,兩種核函數(shù)均可以把低維數(shù)據(jù)映射到高維數(shù)據(jù)。高斯核的公式如下,σσ是達(dá)到率,即函數(shù)值跌落到0的速度參數(shù):
?
K(x1,x2)=exp(?||x1?x2||22σ2)K(x1,x2)=exp(?||x1?x2||22σ2)
?
多項(xiàng)式核函數(shù)的公式如下,RR為實(shí)數(shù),dd為低維空間的維數(shù):
?
K(x1,x2)=(?x1,x2?+R)dK(x1,x2)=(?x1,x2?+R)d
?
應(yīng)用于我們的上個(gè)例子,我們先定義,用?:x→H?:x→H表示從輸入空間x?Rnx?Rn到特征空間H的一個(gè)非線性變換。假設(shè)在特征空間中的問(wèn)題是線性可分的,那么對(duì)應(yīng)的最優(yōu)超平面為:
?
w?T?(x)+b=0w?T?(x)+b=0
?
通過(guò)拉格朗日函數(shù)我們推導(dǎo)出:
?
w??=∑i=1nαi?yi?(xi)w??=∑i=1nαi?yi?(xi)
?
帶入上式得特征空間的最優(yōu)超平面為:
?
∑i=1nαi?yi?T(xi)?(x)+b=0∑i=1nαi?yi?T(xi)?(x)+b=0
?
這里的?T(xi)?(x)?T(xi)?(x)表示內(nèi)積,用核函數(shù)代替內(nèi)積則為:
?
∑i=1nαi?yiK(xi,x)+b=0∑i=1nαi?yiK(xi,x)+b=0
?
這說(shuō)明,我們的核函數(shù)均是內(nèi)積函數(shù),通過(guò)在低維空間對(duì)輸入向量求內(nèi)積來(lái)映射到高維空間,從而解決在高維空間中數(shù)據(jù)線性可分的問(wèn)題,至于具體的推導(dǎo)過(guò)程,這里就不再進(jìn)行了,感興趣的可以自己再推導(dǎo)一次,加深理解。
為什么核函數(shù)可以把低維數(shù)據(jù)映射成高維數(shù)據(jù)呢,我們以多項(xiàng)式核來(lái)解釋一下。
假設(shè)有兩個(gè)輸入樣本,它們均為二維行向量x1=[x1,x2]x1=[x1,x2],x2=[x3,x4]x2=[x3,x4],他們的內(nèi)積為:
?
?x1,x2?=x1x2T=[x1x2][x3x4]=x1x3+x2x4?x1,x2?=x1x2T=[x1x2][x3x4]=x1x3+x2x4
?
用多項(xiàng)式核函數(shù)進(jìn)行映射,令R=0R=0,d=2d=2:
?
K(x1,x2)=(?x1,x2?)2=(x1x3+x2x4)2=x12x32+2x1x2x3x4+x22x42=?(x1)?(x2)K(x1,x2)=(?x1,x2?)2=(x1x3+x2x4)2=x12x32+2x1x2x3x4+x22x42=?(x1)?(x2)
?
按照線性代數(shù)中的標(biāo)準(zhǔn)定義,?(x1)?(x1)和?(x2)?(x2)為映射后的三維行向量和三維列向量,即:
?
?(x1)=[x122–√x1x2x22]?(x1)=[x122x1x2x22]
?
?
?(x2)=????????x322–√x3x4x42?????????(x2)=[x322x3x4x42]
?
它們的內(nèi)積用向量的方式表示則更直觀:
?
?(x1)?(x2)=[x122–√x1x2x22]????????x322–√x3x4x42????????=x12x32+2x1x2x3x4+x22x42?(x1)?(x2)=[x122x1x2x22][x322x3x4x42]=x12x32+2x1x2x3x4+x22x42
?
這樣我們就把二維數(shù)據(jù)映射成了三維數(shù)據(jù),對(duì)于高斯核的映射,會(huì)用到泰勒級(jí)數(shù)展開(kāi)式,讀者可以自行推導(dǎo)一下。
對(duì)于核函數(shù)我們就暫時(shí)介紹到這里。下一節(jié)我們開(kāi)始運(yùn)用tensorflow來(lái)進(jìn)行實(shí)戰(zhàn),由于沒(méi)有找到線性不可分的數(shù)據(jù)集,我們的例子中就沒(méi)有用到核函數(shù)來(lái)建模,因?yàn)槲覀冎徽业搅艘粋€(gè)線性可分的數(shù)據(jù)集,所以下一節(jié)我們僅運(yùn)用tensorflow來(lái)進(jìn)行線性二分類(lèi)的分類(lèi)器構(gòu)建。
1.6. 實(shí)例
我們?cè)诰W(wǎng)上下載了一組鳶尾花數(shù)據(jù)集,這組數(shù)據(jù)集有100個(gè)樣本點(diǎn),我們用SVM來(lái)預(yù)測(cè)這些鳶尾花數(shù)據(jù)集中哪些是山鳶尾花,哪些是非山鳶尾花。
- 首先需要加載數(shù)據(jù)集,加載數(shù)據(jù)集需要用到sklearn、scipy、mkl庫(kù),sklearn直接在Pycharm中安裝即可,而另外兩個(gè)庫(kù)需要在網(wǎng)上下載安裝,下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/
- 分離測(cè)試集與訓(xùn)練集
- 定義模型和loss函數(shù)
- 開(kāi)始訓(xùn)練數(shù)據(jù)
- 繪制圖像
訓(xùn)練后的結(jié)果
轉(zhuǎn)載注明出處http://www.cnblogs.com/vipyoumay/p/7560061.html
以上內(nèi)容有任何錯(cuò)誤或不準(zhǔn)確的地方請(qǐng)大家指正,不喜勿噴! 本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。如果覺(jué)得還有幫助的話,可以點(diǎn)一下右下角的【推薦】,希望能夠持續(xù)的為大家?guī)?lái)好的技術(shù)文章!想跟我一起進(jìn)步么?那就【關(guān)注】我吧。
來(lái)源:https://www.cnblogs.com/vipyoumay/p/7560061.html
總結(jié)
以上是生活随笔為你收集整理的SVM原理以及Tensorflow 实现SVM分类(附代码讲了一下原理)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python实现鸢尾花数据集分类问题——
- 下一篇: Pycharm如何自动换行