今天要來介紹SVM(Support Vector Machine),我們直接以一個實際的例子來看看SVM是怎麼運作的。
下方有兩群的圓形,一種為紅色圓形、另一種為藍色圓形,而我們的工作就是將這些圓形以一條線給區隔開來。從這個例子來看非常簡單吧,一條直直的斜線就可以區分開來了。
那我如果這時候又加入了兩顆像下面的圓圈呢?
也非常的簡單,只需要稍微調整隔開的線就可以將它們區分開來了。
但如果今天我的圓圈們分佈長得像下面這樣呢?是不是好像就不是那麼好分了。
看了看這些球,好像沒有辦法只用一條線就將他們區隔開來,但如果仔細觀察會發現這些球的重量、材質、密度好像都有些不同。如果把每個因素當作一個軸來看,讓空間從2D變成更高維度的,那我們就可以將他們給區隔開了。
那實際上SVM是如何決定他的線應該擺在哪裡的呢?拿我們的第一張圖來看,這條區隔的線所要做的事就是將兩個分類給分開來,但符合條件的線有很多條,SVM是如何選擇的呢?下方的兩條虛線距離實線是等距的SVM選擇的根據就是讓兩條虛線之間的距離能夠最大化,而這就是SVM所得出的最佳解。
以上就是SVM大致上如何運作的方式,我們下一張會來看看SVM在python上實作應該如何使用。