支持向量機 (SVM) 是一種有監督機器學習算法,它能找到分離兩個類的數據點的最佳超平面。
支持向量機的工作原理
支持向量機是一種有監督機器學習算法,常用于信號處理、自然語言處理 (NLP)、語音和圖像識別等應用中的分類和回歸問題。SVM 算法的目標是找到一個超平面,該超平面以可能的最佳效果將一個類的數據點與另一個類的數據點分離。此超平面在二維空間中是一條直線,在 n 維空間中是一個平面,其中 n 是數據集中每個觀測值的特征數量。數據中可能存在多個可用于分離類的超平面。SVM 算法推斷出的最佳超平面是使兩個類之間邊距最大化的超平面。
邊距是指平行于超平面的內部不含數據點的平板的最大寬度。標記此平行平板的邊界且最接近分離超平面的數據點就是支持向量。支持向量指用于確定分離超平面的位置的訓練觀測值的子集。

使用 SVM 算法最大化兩個類之間的邊距寬度,這兩個類分別用加號和減號表示并由超平面分離。
SVM 建模的工作流
構建支持向量機模型的典型工作流包括以下步驟:
預處理數據
使用原始數據訓練 SVM 模型通常效果不佳,因為存在缺失值、離群值以及信息冗余。您可以執行數據清洗來處理缺失值或離群值,并執行特征提取從數據中選擇合適的特征集。
特征提取將原始數據變換為可以處理的數值特征,同時保留原始數據集中的信息。降維方法,如主成分分析 (PCA),可以減少特征數量,同時保留最重要的信息。這種方法使支持向量機模型更穩健,能夠處理復雜數據集。
在數據處理完成后,將數據拆分為訓練集和測試集。使用交叉驗證以最佳方式拆分數據。SVM 模型基于訓練數據集進行訓練,測試數據集用于評估模型在陌生數據上的性能。
選擇核函數
根據數據分布,選擇合適的核函數(線性、多項式、RBF 等)。當無法線性分離時,核函數將數據變換為更高維空間,使類更容易分離。
為 SVM 選擇合適的核函數

訓練 SVM 模型
構建 SVM 模型并使用訓練數據集對其進行訓練。訓練支持向量機 (SVM) 相當于求解一個二次優化問題,其目標是找到一個能夠最大化類別之間邊距的超平面。支持向量機算法識別支持向量并確定最佳超平面。使用經過訓練的模型基于最佳超平面對新數據和陌生數據點進行分類。
評估 SVM 模型
使用測試數據集測試模型。使用準確度、混淆矩陣、精確率、F1 分數或召回率等度量評估模型性能。
調節超參數
調整超參數以提高模型性能。使用貝葉斯優化等搜索方法,通過概率模型找到最佳超參數。
SVM 分類器的類型
線性支持向量機
線性 SVM 用于有且只有兩個類的線性可分數據。這種類型的支持向量機算法使用線性決策邊界來分離這兩個類的所有數據點。
該 SVM 算法只能為線性可分問題找到這樣的超平面。對于大多數復雜任務(其中數據不可分),支持向量機可以使用軟邊距,獲得一個可分離許多(但并非所有)數據點的超平面。算法最大化軟邊距,允許少量誤分類。

軟邊距 SVM 允許 class -1(藍色)中存在一個數據點誤分類。(參閱 MATLAB 文檔[1]。)
非線性支持向量機
SVM 也用于非線性分類和回歸任務。對于非線性可分數據,非線性支持向量機使用核函數來變換特征。變換后特征的數量由支持向量的數量確定。
核函數將數據映射到一個不同的(通常是更高維的)空間。這種變換可以將復雜的非線性決策邊界簡化為更高維映射特征空間中的線性邊界,從而使類更容易分離。在此過程(通常稱為核方法)中,不必對數據進行顯式變換,否則計算成本會很高。非線性數據的核函數包括多項式、徑向基函數(高斯)和多層感知器機或 Sigmoid(神經網絡)。

在 MATLAB 中使用高斯核函數訓練的非線性 SVM 分類器。(請參閱代碼[2]。)
支持向量回歸
SVM 主要用于分類任務,但也可經過調整用于回歸。SVM 回歸被視為一種非參數化方法,因為它依賴核函數。在線性回歸中,響應變量(輸出)和預測變量(輸入)之間的關系已知。與之不同,支持向量回歸 (SVR) 的目標是找到這種關系。SVR 通過識別在指定的容差邊距(簡稱為邊距)內能夠最優擬合數據的超平面來實現這一點,同時保持預測誤差為最小。
SVR 的工作原理與支持向量機分類器相同,只是 SVR 旨在預測連續值而非離散類。SVR 可以通過使用不同的核類型處理線性和非線性數據。使用核方法,您可以通過將數據映射到高維空間來執行非線性回歸。
為什么支持向量機很重要
SVM 的優點
SVM 是機器學習和人工智能中最受歡迎的有監督學習算法之一,主要是因為它們能有效處理高維數據和復雜決策邊界。支持向量機的主要優點包括:
數據通用性。SVM 在處理高維和非結構化數據集時特別有效。支持向量機可用于線性和非線性數據,使其廣泛適用于許多應用。
穩健性。由于正則化參數控制在訓練數據上實現低誤差和最小化權重范數之間的權衡,SVM 在高維空間中不易出現過擬合。
可解釋性。線性 SVM 分類器創建的決策邊界清晰且可解釋,有助于理解模型預測并作出明智決策。
準確性。SVM 對于較小數據集非常準確和有效,尤其是在維數超出采樣數的情況下。
SVM 應用
上述優點使支持向量機成為多種應用中數據建模的極具吸引力的選擇,這些應用有:
自然語言處理。SVM 廣泛用于 NLP 任務,如通過將文本分為若干類別來進行垃圾郵件檢測和情緒分析。
計算機視覺。SVM 可用于圖像分類任務,如手寫識別、人臉或目標檢測,以及作為醫學診斷工具對可能指示存在腫瘤的 MRI 影像進行分類。
信號處理。SVM 也應用于信號數據,用于異常檢測、語音識別和生物醫學信號分析等任務。
異常檢測。SVM 經過訓練可以找到將正常數據與異常分離的超平面。
生物信息學。SVM 應用于生物數據分類,如蛋白質分類和基因表達譜分析。

使用 SVM 分類器進行分類的高光譜圖像。(請參閱 MATLAB 代碼[3]。)
SVM 的缺點
與所有機器學習模型一樣,支持向量機也有局限性:
大型數據集。由于高計算成本和內存要求,SVM 不適合處理大型數據集。雖然核方法使支持向量機能夠處理非線性數據,但其計算成本高昂。SVM 需要求解二次優化問題。對于大型數據集,核矩陣也會很大,從而增加了內存要求。
含噪數據。SVM 不適合處理含噪數據,因為 SVM 旨在使類之間的邊距最大化。
可解釋性。雖然線性 SVM 可解釋,但非線性 SVM 不可解釋。非線性 SVM 中涉及的復雜變換使決策邊界難以解釋。

常見的機器學習算法的預測能力和可解釋性比較。
使用 MATLAB 的支持向量機
使用 MATLAB 和 Statistics and Machine Learning Toolbox,您可以訓練、評估 SVM 模型和使用 SVM 模型進行預測以用于分類和回歸。MATLAB 提供了構建高效支持向量機模型的工具,涵蓋特征選擇和超參數調節以及交叉驗證和性能度量等。MATLAB 中的低代碼機器學習 App 使您能夠以交互方式訓練和評估 SVM,生成 C/C++ 代碼并部署到 CPU 和微控制器,無需自己編寫代碼。
預處理數據
為確保結果準確,數據必須無離群值且準備好用于模型訓練。使用 MATLAB,您可以執行清洗任務,如處理缺失值和離群值、歸一化數據和平滑數據。您可以使用數據預處理實時編輯器任務或數據清洗器以交互方式預處理數據。這些 App 還可以生成代碼。
MATLAB 支持各種數據類型,如時間序列數據、文本、圖像和音頻。專用工具箱,如 Audio Toolbox 和 Signal Processing Toolbox,提供特征提取功能,可用于測量不同領域的獨特特征并重用中間計算。
訓練 SVM 模型
您可以使用 fitcsvm 和 fitrsvm 函數訓練 SVM 模型以執行二類分類或多類分類以及回歸任務。對于非線性支持向量機,支持若干核函數(如線性、多項式和 RBF),您也可以創建并指定自定義核函數(如 Sigmoid)。
您還可以使用分類學習器和回歸學習器以交互方式訓練 SVM 模型。通過這些 App,您可以執行從訓練到調節的 SVM 模型完整工作流,而無需編寫代碼。您可以使用這些 App 瀏覽數據、選擇特征、執行自動化訓練、優化超參數和評估結果。

使用分類學習器創建的驗證混淆矩陣。(請參閱 MATLAB 代碼[4]。)
這些 App 可以生成 C/C++ 代碼并導出 SVM 模型,便于您共享結果并在 App 外進一步研究。例如,您可以從分類學習器或回歸學習器導出支持向量機模型,并將其導入試驗管理器中以執行其他任務,如更改訓練數據、調整超參數搜索范圍和運行自定義訓練試驗。
進行預測
在訓練 SVM 模型后,使用 predict 函數預測標簽。您可以在 Simulink 中使用 ClassificationSVM Predict 或 RegressionSVM Predict 模塊對經過訓練的 SVM 模型進行仿真。
評估結果
您可通過編程方式使用 confusionchart 和 rocmetrics 等函數或以交互方式評估 SVM 模型的性能。使用機器學習 App 可以比較不同模型的性能,找到最適合您的數據的模型。
在分類學習器中訓練分類器后,您可以基于準確性比較模型,通過繪制類預測可視化分類器結果,以及使用混淆矩陣、ROC 曲線或精確率召回率曲線檢查性能。
同樣,在回歸學習器中,您可以基于模型度量比較模型,在響應圖中或通過繪制實際響應對預測響應的圖可視化回歸結果,以及使用殘差圖評估模型。

在回歸學習器中訓練的回歸模型的實際響應對預測響應的圖。點越接近線,預測效果越好。(請參閱 MATLAB 代碼[5]。)
-
matlab
+關注
關注
189文章
3020瀏覽量
237776 -
支持向量機
+關注
關注
0文章
72瀏覽量
12985 -
機器學習
+關注
關注
66文章
8544瀏覽量
136351
原文標題:什么是支持向量機(SVM)?
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于支持向量機的預測函數控制
基于改進支持向量機的貨幣識別研究
基于支持向量機(SVM)的工業過程辨識
多分類孿生支持向量機研究進展
支持向量機的故障預測模型
什么是支持向量機 什么是支持向量

使用MATLAB的支持向量機解決方案
評論