支持向量機器 (Support vector machine)通常用在機器學習 (Machine learning)。是一種監督式學習 (Supervised Learning)的方法,主要用在分類 (Classification)和回歸 (Regression)上。現今多數人多簡稱之為SVM,在此來個SVM概念教學。
註:監督式學習,是一個機器學習中的技巧,可以由訓練資料中學到或建立一個模式(function / learning model),並依此模式推測新的實例 (instances)。訓練資料(training data)是由輸入物件(通常是向量)和預期輸出所組成。函數的輸出可以是一個連續的值(稱為迴歸分析),或是預測一個分類標籤(稱作分類)。
這次是我第三次聽課學SVM了!數學理論我頂多懂一半,但其實如果只想知道概念的話其實非常簡單。
首先我們想知道為什麼這個技術要叫做支持向量機器 (Support Vector Machine),而其中支持向量 (Support Vector)是指在訓練資料集 (Training data set)中,用於分類上給予最多資訊的點,其會落在如圖中所示的紅色框起來的資料點。
SVM是一個可以同時運用於線性及非線性資料的分類演算法。它將原始資料轉換到更高的維度 (dimension),從這些維度上,它可以利用在訓練資料集 (training data set)中所謂的super vectors來找到hyperplane,以用來分類資料。SVM主要是在尋找具有最大margin的hyperplane,也就是maximum marginal hyperplane,因為其具有較高的分類準確性,如圖中所示藍色箭頭指示的範圍。
我們來玩一下台大林智仁老師發展的LIBSVM吧~
先在黑色畫面中點出三種類別的資料。
跑出結果很完美地被分為三個區塊。
這時候我們很好奇,如果無法很漂亮地被區分,那麼會跑出什麼樣的結果?
如果對分類結果不滿意的話,還可以調整參數來達到理想效果。
以下參考連結有更詳盡的SVM教學。
參考:宅學習 – 一個介紹SVM的網頁、piaip 的 (lib)SVM 簡易入門、WiKi - 監督式學習、多媒體系統設計投影片 – SVMs、LIBSVM – A Library for Support Vector Machines。