1. 程式人生 > >機器學習---演算法---支援向量機---線性SVM--第一部分

機器學習---演算法---支援向量機---線性SVM--第一部分

轉自:https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html

什麼是SVM?

SVM的英文全稱是Support Vector Machines,我們叫它支援向量機。支援向量機是我們用於分類的一種演算法。讓我們以一個小故事的形式,開啟我們的SVM之旅吧。

在很久以前的情人節,一位大俠要去救他的愛人,但天空中的魔鬼和他玩了一個遊戲。

魔鬼在桌子上似乎有規律放了兩種顏色的球,說:"你用一根棍分開它們?要求:儘量在放更多球之後,仍然適用。"

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

於是大俠這樣放,乾的不錯?

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

然後魔鬼,又在桌上放了更多的球,似乎有一個球站錯了陣營。顯然,大俠需要對棍做出調整。

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

SVM就是試圖把棍放在最佳位置,好讓在棍的兩邊有儘可能大的間隙。這個間隙就是球到棍的距離。

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

現在好了,即使魔鬼放了更多的球,棍仍然是一個好的分界線。

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

魔鬼看到大俠已經學會了一個trick(方法、招式),於是魔鬼給了大俠一個新的挑戰。

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

現在,大俠沒有棍可以很好幫他分開兩種球了,現在怎麼辦呢?當然像所有武俠片中一樣大俠桌子一拍,球飛到空中。然後,憑藉大俠的輕功,大俠抓起一張紙,插到了兩種球的中間。

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

現在,從空中的魔鬼的角度看這些球,這些球看起來像是被一條曲線分開了。

機器學習實戰教程(八):支援向量機原理篇之手撕線性SVM

再之後,無聊的大人們,把這些球叫做data,把棍子叫做classifier, 找到最大間隙的trick

叫做optimization,拍桌子叫做kernelling, 那張紙叫做hyperplane

更為直觀地感受一下吧(需要FQ):https://www.youtube.com/watch?v=3liCbRZPrZA

概述一下:

當一個分類問題,資料是線性可分的,也就是用一根棍就可以將兩種小球分開的時候,我們只要將棍的位置放在讓小球距離棍的距離最大化的位置即可,尋找這個最大間隔的過程,就叫做最優化。但是,現實往往是很殘酷的,一般的資料是線性不可分的,也就是找不到一個棍將兩種小球很好的分類。這個時候,我們就需要像大俠一樣,將小球拍起,用一張紙代替小棍將小球進行分類。想要讓資料飛起,我們需要的東西就是核函式(kernel),用於切分小球的紙,就是超平面。

也許這個時候,你還是似懂非懂,沒關係。根據剛才的描述,可以看出,問題是從線性可分延伸到線性不可分的。那麼,我們就按照這個思路,進行原理性的剖析。