原文章位址:寒小陽http://blog.csdn.net/han_xiaoyang/article/details/52678373
1.引言
欠的總是要還的,SVM這麼神聖的算法是每個從事資料挖掘/資料分析的朋友可能會頭疼的東西,又是不得不面對的,
因為最近準備應聘,是以又将機器學習的這些算法又整理一遍,複習一下,希望我好運!
2.支援向量機(SVM)的學習目标
SVM的目标是利用訓練資料集的間隔最大化找到一個最優分離超平面
首先SVM和樸素貝葉斯一樣,需要一些用于訓練的資料進行訓練模型,也就是說SVM是一個有監督學習算法.
SVM也是一個分類算法,和樸素貝葉斯一樣,可以用來預測資料屬于哪個類别。比如Kg比賽典型的例子:泰坦尼克号生存結果和垃圾郵件分類.
舉一個簡單的例子友善了解:
圖中是人的身高和體重繪制的散點圖,使用支援向量機(SVM),可以嘗試一下這些問題:
給定一個特征的資料點(重量和身高),這個人的性别是什麼?
比如現在有一個人身高為175cm,體重為80kg,他是男性還是女性呢?
很顯然,結合上邊的圖,此人為男性。
3.什麼是分離超平面
結合上圖很容易就可以看出,我們是有辦法可以分離這兩類樣本點的.比如可以畫一條直線,使的将男性和女性分開,在SVM中我們把這條線叫做分離超平面,大概就是下圖的這個樣子:
那麼問題來了:這明明是一條直線,為什麼稱他為一個超平面
上邊的小例子中知識隻是在二維空間中的,那麼如果如果在三維空間中呢?
所謂超平面是平面的一般化:
在一維空間中,它是點
在二維空間中,它是線
在三維空間中,它是面
在四維以及更高維的空間中,我們就稱為超平面
什麼是最優分離超平面?
回到剛才的例子當中,我們可以找到好幾個分離超平面,他們每一個都是正确的,可以成功按照性劃分
顯然不能随便選擇一條分割線,就确定最終的結果,那就太荒唐了!
是以我們選擇選擇這樣的一個超平面:最可能的遠離所有類别的資料點;
我們選擇這條線為最優,看起來好多了,可以将他們好好的分對了!
這就是SVM要做的事情,支援向量機就是要找到這樣一個最優分類超平面,保證:
1.準确無誤的将訓練資料進行分類
2.對測試集資料也要進行很好的分類
那麼最早說這篇部落客要說Margin/間隔有什麼關系呢?又怎麼找到呢?
結合上邊的圖,簡單的說就是:Margin就是最優分離超平面的間隔
給定一個特征的超平面,我們可以計算出這個超平面與和他最接近的資料點之間的距離.間隔就是二倍的這個距離
一般的說,間隔中間是無點區域.這意味着裡邊不會有任何的資料元素.(如果資料中存在噪聲的,可能不會這麼理想)
從剛才的圖中選一個,間隔hi看起來像這個樣子:
可以看到:圖中B的間隔小于A的間隔.
我們有以下的觀察結果:
1.如果一個超平面有非常接近的一個資料點,那麼間隔會小
2.如果一個超平面離資料點越遠,那麼間隔越大.
這就意味着 "最優超平面将有最大的間隔"
接下來準備寫SVM是利用間隔最大化求得最優分離超平面的!
小陽大佬部落格寫的非常不錯,經常學習,學到了很多東西,這次自己學習寫了一下!再次緻謝!