支持向量機 (SVM) 是一種有監(jiān)督機器學(xué)習(xí)算法,它能找到分離兩個類的數(shù)據(jù)點的最佳超平面。
支持向量機的工作原理
支持向量機是一種有監(jiān)督機器學(xué)習(xí)算法,常用于信號處理、自然語言處理 (NLP)、語音和圖像識別等應(yīng)用中的分類和回歸問題。SVM 算法的目標是找到一個超平面,該超平面以可能的最佳效果將一個類的數(shù)據(jù)點與另一個類的數(shù)據(jù)點分離。此超平面在二維空間中是一條直線,在 n 維空間中是一個平面,其中 n 是數(shù)據(jù)集中每個觀測值的特征數(shù)量。數(shù)據(jù)中可能存在多個可用于分離類的超平面。SVM 算法推斷出的最佳超平面是使兩個類之間邊距最大化的超平面。
邊距是指平行于超平面的內(nèi)部不含數(shù)據(jù)點的平板的最大寬度。標記此平行平板的邊界且最接近分離超平面的數(shù)據(jù)點就是支持向量。支持向量指用于確定分離超平面的位置的訓(xùn)練觀測值的子集。
使用 SVM 算法最大化兩個類之間的邊距寬度,這兩個類分別用加號和減號表示并由超平面分離。
SVM 建模的工作流
構(gòu)建支持向量機模型的典型工作流包括以下步驟:
預(yù)處理數(shù)據(jù)
使用原始數(shù)據(jù)訓(xùn)練 SVM 模型通常效果不佳,因為存在缺失值、離群值以及信息冗余。您可以執(zhí)行數(shù)據(jù)清洗來處理缺失值或離群值,并執(zhí)行特征提取從數(shù)據(jù)中選擇合適的特征集。
特征提取將原始數(shù)據(jù)變換為可以處理的數(shù)值特征,同時保留原始數(shù)據(jù)集中的信息。降維方法,如主成分分析 (PCA),可以減少特征數(shù)量,同時保留最重要的信息。這種方法使支持向量機模型更穩(wěn)健,能夠處理復(fù)雜數(shù)據(jù)集。
在數(shù)據(jù)處理完成后,將數(shù)據(jù)拆分為訓(xùn)練集和測試集。使用交叉驗證以最佳方式拆分數(shù)據(jù)。SVM 模型基于訓(xùn)練數(shù)據(jù)集進行訓(xùn)練,測試數(shù)據(jù)集用于評估模型在陌生數(shù)據(jù)上的性能。
選擇核函數(shù)
根據(jù)數(shù)據(jù)分布,選擇合適的核函數(shù)(線性、多項式、RBF 等)。當無法線性分離時,核函數(shù)將數(shù)據(jù)變換為更高維空間,使類更容易分離。
為 SVM 選擇合適的核函數(shù)
訓(xùn)練 SVM 模型
構(gòu)建 SVM 模型并使用訓(xùn)練數(shù)據(jù)集對其進行訓(xùn)練。訓(xùn)練支持向量機 (SVM) 相當于求解一個二次優(yōu)化問題,其目標是找到一個能夠最大化類別之間邊距的超平面。支持向量機算法識別支持向量并確定最佳超平面。使用經(jīng)過訓(xùn)練的模型基于最佳超平面對新數(shù)據(jù)和陌生數(shù)據(jù)點進行分類。
評估 SVM 模型
使用測試數(shù)據(jù)集測試模型。使用準確度、混淆矩陣、精確率、F1 分數(shù)或召回率等度量評估模型性能。
調(diào)節(jié)超參數(shù)
調(diào)整超參數(shù)以提高模型性能。使用貝葉斯優(yōu)化等搜索方法,通過概率模型找到最佳超參數(shù)。
SVM 分類器的類型
線性支持向量機
線性 SVM 用于有且只有兩個類的線性可分數(shù)據(jù)。這種類型的支持向量機算法使用線性決策邊界來分離這兩個類的所有數(shù)據(jù)點。
該 SVM 算法只能為線性可分問題找到這樣的超平面。對于大多數(shù)復(fù)雜任務(wù)(其中數(shù)據(jù)不可分),支持向量機可以使用軟邊距,獲得一個可分離許多(但并非所有)數(shù)據(jù)點的超平面。算法最大化軟邊距,允許少量誤分類。
軟邊距 SVM 允許 class -1(藍色)中存在一個數(shù)據(jù)點誤分類。(參閱 MATLAB 文檔[1]。)
非線性支持向量機
SVM 也用于非線性分類和回歸任務(wù)。對于非線性可分數(shù)據(jù),非線性支持向量機使用核函數(shù)來變換特征。變換后特征的數(shù)量由支持向量的數(shù)量確定。
核函數(shù)將數(shù)據(jù)映射到一個不同的(通常是更高維的)空間。這種變換可以將復(fù)雜的非線性決策邊界簡化為更高維映射特征空間中的線性邊界,從而使類更容易分離。在此過程(通常稱為核方法)中,不必對數(shù)據(jù)進行顯式變換,否則計算成本會很高。非線性數(shù)據(jù)的核函數(shù)包括多項式、徑向基函數(shù)(高斯)和多層感知器機或 Sigmoid(神經(jīng)網(wǎng)絡(luò))。
在 MATLAB 中使用高斯核函數(shù)訓(xùn)練的非線性 SVM 分類器。(請參閱代碼[2]。)
支持向量回歸
SVM 主要用于分類任務(wù),但也可經(jīng)過調(diào)整用于回歸。SVM 回歸被視為一種非參數(shù)化方法,因為它依賴核函數(shù)。在線性回歸中,響應(yīng)變量(輸出)和預(yù)測變量(輸入)之間的關(guān)系已知。與之不同,支持向量回歸 (SVR) 的目標是找到這種關(guān)系。SVR 通過識別在指定的容差邊距(簡稱為邊距)內(nèi)能夠最優(yōu)擬合數(shù)據(jù)的超平面來實現(xiàn)這一點,同時保持預(yù)測誤差為最小。
SVR 的工作原理與支持向量機分類器相同,只是 SVR 旨在預(yù)測連續(xù)值而非離散類。SVR 可以通過使用不同的核類型處理線性和非線性數(shù)據(jù)。使用核方法,您可以通過將數(shù)據(jù)映射到高維空間來執(zhí)行非線性回歸。
為什么支持向量機很重要
SVM 的優(yōu)點
SVM 是機器學(xué)習(xí)和人工智能中最受歡迎的有監(jiān)督學(xué)習(xí)算法之一,主要是因為它們能有效處理高維數(shù)據(jù)和復(fù)雜決策邊界。支持向量機的主要優(yōu)點包括:
數(shù)據(jù)通用性。SVM 在處理高維和非結(jié)構(gòu)化數(shù)據(jù)集時特別有效。支持向量機可用于線性和非線性數(shù)據(jù),使其廣泛適用于許多應(yīng)用。
穩(wěn)健性。由于正則化參數(shù)控制在訓(xùn)練數(shù)據(jù)上實現(xiàn)低誤差和最小化權(quán)重范數(shù)之間的權(quán)衡,SVM 在高維空間中不易出現(xiàn)過擬合。
可解釋性。線性 SVM 分類器創(chuàng)建的決策邊界清晰且可解釋,有助于理解模型預(yù)測并作出明智決策。
準確性。SVM 對于較小數(shù)據(jù)集非常準確和有效,尤其是在維數(shù)超出采樣數(shù)的情況下。
SVM 應(yīng)用
上述優(yōu)點使支持向量機成為多種應(yīng)用中數(shù)據(jù)建模的極具吸引力的選擇,這些應(yīng)用有:
自然語言處理。SVM 廣泛用于 NLP 任務(wù),如通過將文本分為若干類別來進行垃圾郵件檢測和情緒分析。
計算機視覺。SVM 可用于圖像分類任務(wù),如手寫識別、人臉或目標檢測,以及作為醫(yī)學(xué)診斷工具對可能指示存在腫瘤的 MRI 影像進行分類。
信號處理。SVM 也應(yīng)用于信號數(shù)據(jù),用于異常檢測、語音識別和生物醫(yī)學(xué)信號分析等任務(wù)。
異常檢測。SVM 經(jīng)過訓(xùn)練可以找到將正常數(shù)據(jù)與異常分離的超平面。
生物信息學(xué)。SVM 應(yīng)用于生物數(shù)據(jù)分類,如蛋白質(zhì)分類和基因表達譜分析。
使用 SVM 分類器進行分類的高光譜圖像。(請參閱 MATLAB 代碼[3]。)
SVM 的缺點
與所有機器學(xué)習(xí)模型一樣,支持向量機也有局限性:
大型數(shù)據(jù)集。由于高計算成本和內(nèi)存要求,SVM 不適合處理大型數(shù)據(jù)集。雖然核方法使支持向量機能夠處理非線性數(shù)據(jù),但其計算成本高昂。SVM 需要求解二次優(yōu)化問題。對于大型數(shù)據(jù)集,核矩陣也會很大,從而增加了內(nèi)存要求。
含噪數(shù)據(jù)。SVM 不適合處理含噪數(shù)據(jù),因為 SVM 旨在使類之間的邊距最大化。
可解釋性。雖然線性 SVM 可解釋,但非線性 SVM 不可解釋。非線性 SVM 中涉及的復(fù)雜變換使決策邊界難以解釋。
常見的機器學(xué)習(xí)算法的預(yù)測能力和可解釋性比較。
使用 MATLAB 的支持向量機
使用 MATLAB 和 Statistics and Machine Learning Toolbox,您可以訓(xùn)練、評估 SVM 模型和使用 SVM 模型進行預(yù)測以用于分類和回歸。MATLAB 提供了構(gòu)建高效支持向量機模型的工具,涵蓋特征選擇和超參數(shù)調(diào)節(jié)以及交叉驗證和性能度量等。MATLAB 中的低代碼機器學(xué)習(xí) App 使您能夠以交互方式訓(xùn)練和評估 SVM,生成 C/C++ 代碼并部署到 CPU 和微控制器,無需自己編寫代碼。
預(yù)處理數(shù)據(jù)
為確保結(jié)果準確,數(shù)據(jù)必須無離群值且準備好用于模型訓(xùn)練。使用 MATLAB,您可以執(zhí)行清洗任務(wù),如處理缺失值和離群值、歸一化數(shù)據(jù)和平滑數(shù)據(jù)。您可以使用數(shù)據(jù)預(yù)處理實時編輯器任務(wù)或數(shù)據(jù)清洗器以交互方式預(yù)處理數(shù)據(jù)。這些 App 還可以生成代碼。
MATLAB 支持各種數(shù)據(jù)類型,如時間序列數(shù)據(jù)、文本、圖像和音頻。專用工具箱,如 Audio Toolbox 和 Signal Processing Toolbox,提供特征提取功能,可用于測量不同領(lǐng)域的獨特特征并重用中間計算。
訓(xùn)練 SVM 模型
您可以使用 fitcsvm 和 fitrsvm 函數(shù)訓(xùn)練 SVM 模型以執(zhí)行二類分類或多類分類以及回歸任務(wù)。對于非線性支持向量機,支持若干核函數(shù)(如線性、多項式和 RBF),您也可以創(chuàng)建并指定自定義核函數(shù)(如 Sigmoid)。
您還可以使用分類學(xué)習(xí)器和回歸學(xué)習(xí)器以交互方式訓(xùn)練 SVM 模型。通過這些 App,您可以執(zhí)行從訓(xùn)練到調(diào)節(jié)的 SVM 模型完整工作流,而無需編寫代碼。您可以使用這些 App 瀏覽數(shù)據(jù)、選擇特征、執(zhí)行自動化訓(xùn)練、優(yōu)化超參數(shù)和評估結(jié)果。
使用分類學(xué)習(xí)器創(chuàng)建的驗證混淆矩陣。(請參閱 MATLAB 代碼[4]。)
這些 App 可以生成 C/C++ 代碼并導(dǎo)出 SVM 模型,便于您共享結(jié)果并在 App 外進一步研究。例如,您可以從分類學(xué)習(xí)器或回歸學(xué)習(xí)器導(dǎo)出支持向量機模型,并將其導(dǎo)入試驗管理器中以執(zhí)行其他任務(wù),如更改訓(xùn)練數(shù)據(jù)、調(diào)整超參數(shù)搜索范圍和運行自定義訓(xùn)練試驗。
進行預(yù)測
在訓(xùn)練 SVM 模型后,使用 predict 函數(shù)預(yù)測標簽。您可以在 Simulink 中使用 ClassificationSVM Predict 或 RegressionSVM Predict 模塊對經(jīng)過訓(xùn)練的 SVM 模型進行仿真。
評估結(jié)果
您可通過編程方式使用 confusionchart 和 rocmetrics 等函數(shù)或以交互方式評估 SVM 模型的性能。使用機器學(xué)習(xí) App 可以比較不同模型的性能,找到最適合您的數(shù)據(jù)的模型。
在分類學(xué)習(xí)器中訓(xùn)練分類器后,您可以基于準確性比較模型,通過繪制類預(yù)測可視化分類器結(jié)果,以及使用混淆矩陣、ROC 曲線或精確率召回率曲線檢查性能。
同樣,在回歸學(xué)習(xí)器中,您可以基于模型度量比較模型,在響應(yīng)圖中或通過繪制實際響應(yīng)對預(yù)測響應(yīng)的圖可視化回歸結(jié)果,以及使用殘差圖評估模型。
在回歸學(xué)習(xí)器中訓(xùn)練的回歸模型的實際響應(yīng)對預(yù)測響應(yīng)的圖。點越接近線,預(yù)測效果越好。(請參閱 MATLAB 代碼[5]。)
-
matlab
+關(guān)注
關(guān)注
189文章
3010瀏覽量
236942 -
支持向量機
+關(guān)注
關(guān)注
0文章
72瀏覽量
12964 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8530瀏覽量
135959
原文標題:什么是支持向量機(SVM)?
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于支持向量機的預(yù)測函數(shù)控制
特征加權(quán)支持向量機
基于改進支持向量機的貨幣識別研究
基于支持向量機(SVM)的工業(yè)過程辨識

基于標準支持向量機的陣列波束優(yōu)化及實現(xiàn)

多分類孿生支持向量機研究進展
基于支持向量機的測深激光信號處理
支持向量機的故障預(yù)測模型
什么是支持向量機 什么是支持向量

評論