Object Recognition and Scene Understanding(三)SVM

支持向量機,多年以來在模式識別上的最大發現,當然其利用核函數來尋找最優的分類的思路存在一定的侷限性,但一定程度上解決了很多問題。關於支持向量機在模式識別領域的前世今生,可以參考譚鐵牛等的論文。關於libsvm就去看臺灣大牛的網頁吧,faruto在如何應用libsvm上也有出彩的介紹。這裏就不一一列出了。

 

1.之前的一些介紹

libsvm的安裝,參考我之前發的小文Matlab安裝使用libsvm:http://blog.csdn.net/loadstar_kun/article/details/7712308

機器學習可用的數據庫:機器學習UCI數據庫:http://blog.csdn.net/loadstar_kun/article/details/7712327

 

2. 支持向量機簡單介紹

http://blog.csdn.net/carson2005/article/details/6453502

支持向量機SVM是從線性可分情況下的最優分類面提出的。所謂最優分類,就是要求分類線不但能夠將兩類無錯誤的分開,而且兩類之間的分類間隔最大,前者是保證經驗風險最小(爲0),而通過後面的討論我們看到,使分類間隔最大實際上就是使得推廣性中的置信範圍最小。推廣到高維空間,最優分類線就成爲最優分類面。

    支持向量機是利用分類間隔的思想進行訓練的,它依賴於對數據的預處理,即,在更高維的空間表達原始模式。通過適當的到一個足夠高維的非線性映射,分別屬於兩類的原始數據就能夠被一個超平面來分隔。如下圖所示:

       

空心點和實心點分別代表兩個不同的類,H爲將兩類沒有錯誤的區分開的分類面,同時,它也是一個最優的分類面。原因正如前面所述,當以H爲分類面時,分類間隔最大,誤差最小。而這裏的之間的距離margin就是兩類之間的分類間隔。支持向量機將數據從原始空間映射到高維空間的目的就是找到一個最優的分類面從而使得分類間隔margin最大。而那些定義最優分類超平面的訓練樣本,也就是上圖中過的空心點和實心點,就是支持向量機理論中所說的支持向量。顯然,所謂支持向量其實就是最難被分類的那些向量,然而,從另一個角度來看,它們同時也是對求解分類任務最有價值的模式。

    支持向量機的基本思想可以概括爲:首先通過非線性變換將輸入空間變換到一個高維空間,然後在這個新空間中求取最優線性分類面,而這種非線性變換是通過定義適當的內積函數來實現的。支持向量機求得的分類函數形式上類似於一個神經網絡,其輸出是若干中間層節點的線性組合,而每一箇中間層節點對應於輸入樣本與一個支持向量的內積,因此也被叫做支持向量網絡。如下圖所示:

由於最終的判別函數中實際只包含於支持向量的內積和求和,因此判別分類的計算複雜度取決於支持向量的個數。

不難發現,支持向量機作爲統計學習理論中的經典代表使用了與傳統方法完全不同的思路,即不是像傳統方法那樣首先試圖將原輸入空間降維(即特徵選擇和特徵變換),而是設法將輸入空間升維,以求在高維空間中問題變得線性可分或接近線性可分。因爲升維知識改變了內積運算,並沒有使得算法的複雜性隨着維數的增加而增加,而且在高維空間中的推廣能力並不受到維數的影響。     

    另外,需要說明的是,支持向量機採用不同的內積函數,將導致不同的支持向量機算法

目前得到研究的內積函數主要有以下三類:

(1)採用多項式形式的內積函數;

(2)採用核函數形式的內積函數;

    (3)採用S形函數作爲內積函數;

 

3. 利用SVM做手寫字符識別

參考之前博文:學習OpenCV——SVM 手寫數字檢測:http://blog.csdn.net/loadstar_kun/article/details/7718120

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章