看過了上一節(jié)的故事,相信你對SVM已經(jīng)有了一個直觀的認(rèn)識,故事中以二維平面上的點來介紹SVM算法屋吨,并且看到了可以直接用一條直線將數(shù)據(jù)點進(jìn)行準(zhǔn)確劃分以及不能用一條直線將數(shù)據(jù)點進(jìn)行準(zhǔn)確劃分的的情況针贬,這兩種情況我們分別稱為線性可分和線性不可分。我們會從線性可分的情況開始講起赋兵。
1笔咽、從線性分類器講起
SVM的故事很長,我們直接入題吧霹期。不過我不會一上來就介紹SVM叶组,我會從線性分類器開始講起。這里我們考慮的是一個二分類問題历造,數(shù)據(jù)點用x表示甩十,每個數(shù)據(jù)點是一個n維向量船庇,當(dāng)然,在平面上枣氧,數(shù)據(jù)點是二維的溢十。而類別用y來表示,可以定義兩個類別分別為1和-1(當(dāng)然0和1也可以达吞,不過為了方便我們SVM的推導(dǎo)张弛,我們選擇了1和-1),一個線性分類器酪劫,就是想要在n維空間中找到一個超平面吞鸭,將兩類數(shù)據(jù)點準(zhǔn)確的分隔開。這個超平面可以用如下的方程表示:
這里我們將超平面定義為一個向量相乘的形式覆糟,w為參數(shù)向量刻剥,x為n維數(shù)據(jù)點,二者都是定義為列向量形式滩字,即w和x的維度均為(n*1)造虏,所以為了二者可以相乘得到一個數(shù)(即1*1維), 我們對w進(jìn)行了轉(zhuǎn)置麦箍。那么漓藕,有了這個分類超平面之后,我們希望不同類別的數(shù)據(jù)點分別位于其兩側(cè)挟裂。我們可以用f(x)來表示我們的分類超平面享钞,那么顯然令f(x)=0的點是分類超平面上的點,那么在超平面兩側(cè)的點诀蓉,都會使f(x) <> 0,所以我們不妨假設(shè)類別為-1的點栗竖,其f(x) < 0,類別為1的點,其f(x) > 0渠啤。再次提示狐肢,我們這里從簡單的線性可分情況入手,所以不存在用超平面無法將數(shù)據(jù)點準(zhǔn)確分隔的情況沥曹。
下圖是一個在二維空間中線性分類器的例子:
如圖所示份名,紅藍(lán)顏色的數(shù)據(jù)點分別表示兩種不同的類別,紅顏色的線表示一個可行的超平面架专,基于前面的假定同窘,當(dāng)有一個新的數(shù)據(jù)點到來時玄帕,帶入超平面方程f(x)中部脚,如果f(x)<0,我們認(rèn)為該點屬于類別-1裤纹,如果f(x)>0委刘,我們認(rèn)為該點屬于類別1丧没。但是如果f(x)=0,即該點是超平面上的點锡移,就很難辦了呕童,因為根據(jù)此時的超平面方程,我們無法判斷該點屬于哪一類別淆珊。不僅是使f(x)=0夺饲,只要是f(x)的值足夠小,我們都很難處理施符,因為我們在使用梯度下降或者是其他方法對損失函數(shù)進(jìn)行優(yōu)化時往声,實際上就是不斷旋轉(zhuǎn)我們的超平面,那么對離超平面很近的點戳吝,稍微的平面旋轉(zhuǎn)就可能使他們的類別發(fā)生改變浩销。因此,我們希望對于所有可行的超平面方程听哭,能夠找到一個較好的f(x)慢洋,使得所有點的f(x)值都是很大的正數(shù)或者是很小的負(fù)數(shù),這樣我們就能更加確信它是屬于其中某一類別的陆盘。
所以普筹,可以簡單的理解為,SVM是對線性分類器的一個改進(jìn)礁遣,我們不僅要求超平面能夠準(zhǔn)確地將數(shù)據(jù)點進(jìn)行分隔斑芜,同時我們想要使所有的點盡量都能夠遠(yuǎn)離我們的超平面,即所有點的f(x)值都是很大的正數(shù)或者是很小的負(fù)數(shù)祟霍。