R語言數據挖掘實踐——五個場景全面讀懂支持向量機

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

到目前為止,我們已經學習了隨機森林、樸素貝葉斯算法、關聯規則、聚類分析等。這裡再介紹另外一個重要的機器學習算法——支持向量機模型。

什麼是支持向量機?

支持向量機(SVM)是一種有監督學習的算法,它可以用來處理分類和迴歸的問題。然而,實際應用中,SVM 主要用來處理分類問題。在這個算法中,首先我們將所有點畫在一個 n 維空間中(其中 n 代表特徵個數)。然後我們通過尋找較好區分兩類樣本的超平面來對數據進行分類處理。

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

支持向量是觀測值的座標,支持向量機是隔離兩個類別的最佳邊界(超平面)。

支持向量機的運行原理

首先,我們已經熟悉瞭如何利用超平面來區分兩個類別的數據。如今急需解決的問題是:“如何找出最佳的超平面?下面分五個場景來講解。

場景一:我們有三個超平面(A、B 和 C)。現在我們需要的是找出區分星星和圓圈的最佳超平面。

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

我們需要記住一個識別最佳超平面的經驗法則:“選擇能更好區分兩個類別的超平面。”在這個例子中,超平面“B”是最佳分割平面。

場景二:我們有三個超平面(A、B 和 C),它們都很好地區分兩個類別的數據。那麼我們要如何選出最佳的超平面呢?

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

在這裡,我們可以通過最大化超平面和其最近的各個類別中數據點的距離來尋找最佳超平面。這個距離我們稱之為邊際距離。

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

場景三:利用分類精確度來識別最佳超平面

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

如果從較大邊際距離來看,最佳超平面是B。但是SVM 選擇超平面時更看重分類的準確度。在上圖中,超平面 B 存在一個錯分點而超平面 A 的分類則全部正確。因此,最佳超平面是 A。

場景四:由於存在異常值,我們無法通過一條直線將這兩類數據完全區分開來。

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

上圖中,另一端的星星可以被視為異常值。SVM 可以忽略異常值並尋找具有最大邊際距離的超平面。

場景五:我們無法通過線性超平面區分這兩類數據。

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

SVM 模型可以非常容易地解決這個問題。通過引入新的變量信息,我們可以很容易解決這個問題。比如我們引入新的變量

z = x^2 + y^2

然後我們對x和z構建散點圖:

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

由於新引入的變量z,是由變量x、變量y的平方和構建的,所以z恆大於零。 原始圖中,紅圈數據分佈在原點附近,它們的 z 值比較小;而星星數據則遠離原點區域,它們具有較大的 z 值。

在 SVM 模型中,我們可以很容易地找到分割兩類數據的線性超平面。但是另外一個急需解決的問題是:我們應該手動增加變量信息從而獲得該線性超平面分割嗎?答案是否定的!SVM 模型有一個工具叫做 kernel trick。該函數可以將輸入的低維空間信息轉化為高維空間信息。在解決非線性分割問題時,我們經常用到這個函數。簡單地說,該函數可以轉換一些極其複雜的數據,然後根據自己所定義的標籤或輸出結果尋找區分數據的超平面。

我們可以在原始圖中畫出最佳超平面:

R語言數據挖掘實踐——五個場景全面讀懂支持向量機

相關推薦

推薦中...