機器學習實戰05:支持向量機

- 基於最大間隔分隔數據

關於支持向量機
優點:泛化錯誤率低,計算開銷不大,結果易解釋。
缺點:對參數調節和核函數的選擇敏感,原始分類器不加修改僅適用於處理二類問題。
適用數據類型:數值型和標稱型數據。

如果數據點離決策邊界越遠,那麼其最後的預測結果也就越可信。 我們希望找到離分隔超平面最近的點,確保它們離分隔面的距離儘可能遠。這裏點到分隔面的距離被稱爲間隔。我們希望間隔儘可能地大,這是因爲如果我們犯錯或者在有限數據上訓練分類器的話,我們希望分 類器儘可能健壯。支持向量就是離分隔超平面最近的那些點。接下來要試着最大化支持向量到分隔面的距離,需要找到此問題的優化求解方法 。

- 尋找最大間距
在這裏插入圖片描述
約束條件爲:
在這裏插入圖片描述
這裏的常數C用於控制“最大化間隔”和“保證大部分點的函數間隔小於1.0”這兩個目標的權重。在優化算法的實現代碼中,常數C是一個參數,因此我們就可以通過調節該參數得到不同的結果。一旦求出了所有的alpha,那麼分隔超平面就可以通過這些alpha來表達。這一結論十分直接, SVM中的主要工作就是求解這些alpha 。

- SMO 高效優化算法

Platt的SMO算法是將大優化問題分解爲多個小優化問題來求解的。這些小優化問題往往很容易求解,並且對它們進行順序求解的結果與將它們作爲整體來求解的結果是完全一致的。在結果完全相同的同時, SMO算法的求解時間短很多。

SMO算法的目標是求出一系列alpha和b,一旦求出了這些alpha,就很容易計算出權重向量w並得到分隔超平面。

SMO算法的工作原理是:每次循環中選擇兩個alpha進行優化處理。一旦找到一對合適的alpha,那麼就增大其中一個同時減小另一個。這裏所謂的“合適”就是指兩個alpha必須要符合一定的條件,條件之一就是這兩個alpha必須要在間隔邊界之外,而其第二個條件則是這兩個alpha還沒有進行過區間化處理或者不在邊界上。

- 在複雜數據上應用核函數
在這裏插入圖片描述
前面我們用這類數據來描述非線性可分的情況。顯而易見,在該數據中存在某種可以識別的模式。其中一個問題就是,我們能否像線性情況一樣,利用強大的工具來捕捉數據中的這種模式?顯然,答案是肯定的。接下來,我們就要使用一種稱爲核函數的工具將數據轉換成易於分類器理解的形式,並介紹一種稱爲徑向基函數最流行的核函數,最後,將該核函數應用於我們前面得到的分類器。

在圖6-6中,數據點處於一個圓中,人類的大腦能夠意識到這一點。然而,對於分類器而言,它只能識別分類器的結果是大於0還是小於0。如果只在x和y軸構成的座標系中插入直線進行分類的話,我們並不會得到理想的結果。我們或許可以對圓中的數據進行某種形式的轉換,從而得到某些新的變量來表示數據。在這種表示情況下,我們就更容易得到大於0或者小於0的測試結果。

在這個例子中,我們將數據從一個特徵空間轉換到另一個特徵空間。在新空間下,我們可以很容易利用已有的工具對數據進行處理。數學家們喜歡將這個過程稱之爲從一個特徵空間到另一個特徵空間的映射。在通常情況下,這種映射會將低維特徵空間映射到高維空間

SVM優化中一個特別好的地方就是,所有的運算都可以寫成內積的形式。向量的內積指的是兩個向量相乘,之後得到單個標量或者數值。我們可以把內積運算替換成核函數,而不必做簡化處理。將內積替換成核函數的方式被稱爲核技巧或者核“變電”。核函數並不僅僅應用於支持向量機,很多其他的機器學習算法也都用到核函數。

- 徑向基核函數

徑向基函數是SVM中常用的一個核函數。徑向基函數是一個採用向量作爲自變量的函數,能夠基於向量距離運算輸出一個標量。這個距離可以是從<0,0>向量或者其他向量開始計算的距離。徑向基函數高斯版本的具體公式爲:
在這裏插入圖片描述

上述高斯核函數將數據從其特徵空間映射到更高維的空間,具體來說這裏是映射到一個無窮維的空間。 在上面的例子中,數據點基本上都在一個圓內。對於這個例子,我們可以直接檢查原始數據,並意識到只要度量數據點到圓心的距離即可。然而,如果碰到了一個不是這種形式的新數據集,那麼我們就會陷入困境。在該數據集上,使用高斯核函數可以得到很好的結果。當然,該函數也可以用於許多其他的數據集,並且也能得到低錯誤率的結果。

- 示例:手寫識別問題回顧
儘管之前所使用的kNN方法效果不錯,但是需要保留所有的訓練樣本。而對於支持向量機而言,其需要保留的樣本少了很多(即只保留支持向量),但是能獲得可比的效果。

(1)收集數據:提供的文本文件。
(2) 準備數據:基於二值圖像構造向量。
(3)分析數據:對圖像向量進行目測。
(4) 訓練算法:採用兩種不同的核函數,並對徑向基核函數採用不同的設置來運行SMO算法 。
(5) 測試算法:編寫一個函數來測試不同的核函數並計算錯誤率。
(6)使用算法:一個圖像識別的完整應用還需要一些圖像處理的知識。

- 本章小結
支持向量機是一種分類器。之所以稱爲“機”是因爲它會產生一個二值決策結果,即它是一種決策“機”。支持向量機的泛化錯誤率較低,也就是說它具有良好的學習能力,且學到的結果具有很好的推廣性。這些優點使得支持向量機十分流行,有些人認爲它是監督學習中最好的定式算法。

核方法或者說核技巧會將數據(有時是非線性數據)從一個低維空間映射到一個高維空間,可以將一個在低維空間中的非線性問題轉換成高維空間下的線性問題來求解。核方法不止在SVM中適用,還可以用於其他算法中。而其中的徑向基函數是一個常用的度量兩個向量距離的核函數。

支持向量機是一個二類分類器。當用其解決多類問題時,則需要額外的方法對其進行擴展。SVM的效果也對優化參數和所用核函數中的參數敏感 。

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