支持向量機(SVM)分類

??支持向量機(Support Vector Machine,SVM)是一種經典的監督學習算法,主要用于分類任務,也可擴展到回歸問題(稱為支持向量回歸,SVR)。其核心思想是通過尋找一個最優超平面,最大化不同類別數據之間的間隔(Margin),從而實現高效分類。

一、核心思想

??SVM的目標是找到一個決策邊界(超平面),將不同類別的數據分開,并確保該邊界到最近數據點(支持向量)的距離最大。這種“最大化間隔”的策略使得模型具有更好的泛化能力。

超平面(Hyperplane):

??在n維空間中,一個超平面是n-1維的子空間。對于二維數據,超平面是一條直線;三維數據中是一個平面。

支持向量(Support Vectors):

??距離最優超平面最近的樣本點稱為支持向量,它們是決定超平面位置的關鍵樣本。其他樣本的位置對超平面無影響,這也是“SVM”名稱的由來。

間隔(Margin):

??超平面到兩類最近支持向量的距離之和。SVM的目標是最大化間隔。
??設超平面方程為 w ? x + b = 0 w\cdot x+b=0 w?x+b=0(其中 w w w是權重向量, b b b是偏置),則單個樣本點 x i x_i xi?到超平面的距離為:
距離 = ∣ w ? x i + b ∣ ∣ ∣ w ∣ ∣ 距離=\frac{\left| w\cdot x_i+b \right|}{\left| \left| w \right| \right|} 距離=ww?xi?+b?

??最優超平面需滿足:對于正類樣本,有 w ? x i + b ≥ 1 w\cdot x_i+b\geq1 w?xi?+b1;對于負類樣本,有 w ? x i + b ≤ ? 1 w\cdot x_i+b\leq-1 w?xi?+b?1 。此時,間隔為 2 ∣ ∣ w ∣ ∣ \frac{2}{\left| \left| w \right| \right|} w2?,最大化間隔等價于最小化 ∣ ∣ w ∣ ∣ 2 \left| \left| w \right| \right|^{2} w2

二、線性可分情況(硬間隔SVM)

??假設數據線性可分,SVM的優化問題可表示為

???? min ? w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min_{w,b}{\frac{1}{2}\left| \left| w \right| \right|^{2}} minw,b?21?w2 ? s.t. y i ( w ? x i + b ) ≥ 1 ( ? i ) y_i(w\cdot x_i+b)\geq1 \quad (\forall i) yi?(w?xi?+b)1(?i)

??目標:最小化 ∣ ∣ w ∣ ∣ \left| \left| w \right| \right| w(等價于最大化間隔 2 ∣ ∣ w ∣ ∣ \frac{2}{\left| \left| w \right| \right|} w2?)。
??約束:確保所有樣本被正確分類且位于間隔邊界之外。

三、非線性可分情況(軟間隔SVM)

??當樣本無法被線性超平面分隔時,SVM 通過以下方法處理:

1. 引入松弛變量(Slack Variables)

??允許部分樣本跨越超平面,但需在優化目標中加入懲罰項(即正則化參數 C C C),平衡間隔最大化和分類錯誤最小化

???? min ? w , b 1 2 ∣ ∣ x ∣ ∣ 2 + C ∑ i ξ i \min_{w,b}{\frac{1}{2}\left| \left| x \right| \right|^{2}}+C\sum_{i}{\xi_i} minw,b?21?x2+Ci?ξi? ? s.t. y i ( w ? x i + b ) ≥ 1 ? ξ i , ξ i ≥ 0 y_i(w\cdot x_i+b)\geq 1-\xi_i,\quad \xi_i\geq0 yi?(w?xi?+b)1?ξi?,ξi?0

?? C C C的作用:控制分類錯誤的懲罰力度。 C C C越大,模型越嚴格(可能過擬合); C C C越小,允許更多錯誤(可能欠擬合)。

2. 核技巧(Kernel Trick)

??對于非線性可分數據,SVM通過核函數將原始空間映射到高維特征空間,使數據在新空間中線性可分。常見核函數有
??線性核: K ( x i , x j ) = x i ? x j K(x_i,x_j)=x_i\cdot x_j K(xi?,xj?)=xi??xj?
??多項式核: K ( x i , x j ) = ( x i ? x j + c ) d K(x_i,x_j)=(x_i\cdot x_j+c)^{d} K(xi?,xj?)=(xi??xj?+c)d
??高斯徑向基核(RBF): K ( x i , x j ) = e x p ( ? γ ∣ ∣ x i ? x j ∣ ∣ 2 ) K(x_i,x_j)=exp(-\gamma \left| \left| x_i-x_j \right| \right|^{2}) K(xi?,xj?)=exp(?γxi??xj?2)
??Sigmoid核: K ( x i , x j ) = t a n h ( α x i ? x j + c ) K(x_i,x_j)=tanh(\alpha x_i\cdot x_j+c) K(xi?,xj?)=tanh(αxi??xj?+c)

四、優化與求解

??SVM通常轉化為對偶問題,利用拉格朗日乘子法求解:

???? m a x α ∑ i α i ? 1 2 ∑ i , j α i α j y i y j K ( x i , x j ) max_{\alpha}{\sum_{i}{\alpha_i}}-\frac{1}{2}\sum_{i,j}{\alpha_i\alpha_jy_iy_jK(x_i,x_j)} maxα?i?αi??21?i,j?αi?αj?yi?yj?K(xi?,xj?) ?s.t. 0 ≤ α i ≤ C , ∑ i α i y i = 0 0\leq\alpha_i\leq C,\sum_{i}{\alpha_iy_i=0} 0αi?C,i?αi?yi?=0

??通過拉格朗日對偶性轉化為對偶問題,優勢在于:

????a) 將高維空間中的內積運算轉化為核函數計算(避免直接處理高維數據);
????b) 解的形式僅依賴于支持向量,計算效率更高。

五、Python實現示例

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加載鳶尾花數據集
iris = datasets.load_iris()
X = iris.data  # 特征
y = iris.target  # 標簽# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)# 創建SVM分類器
clf = SVC(kernel='linear')  # 使用線性核函數# 訓練模型
clf.fit(X_train, y_train)# 預測
y_pred = clf.predict(X_test)# 評估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"模型準確率: {accuracy:.2f}")# 預測新樣本
new_samples = [[5.1, 3.5, 1.4, 0.2], [6.3, 3.3, 4.7, 1.6]]
predictions = clf.predict(new_samples)
print(f"新樣本預測結果: {[iris.target_names[p] for p in predictions]}")

在這里插入圖片描述



End.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90024.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux操作系統從入門到精通!第二天(命令行)

一、Linux的命令行 1.Linux介紹:剛出世的時候,沒有什么節目,所有的操作都是靠命令行來執行,后來Linux發展迅速,也出現了圖形界面,但是由于命令行的執行速度比圖形界面塊,所以也得到了…

使用Go高效對接印度金融市場數據:K線、新股與實時行情開發指南

使用Go高效對接印度金融市場數據:K線、新股與實時行情開發指南 印度國家交易所(NSE)日均交易額超79億美元,孟買交易所(BSE)覆蓋上市公司超5000家,雙交易所體系為投資者提供了豐富機會。本文基于…

【計算機網絡】補充

僅供參考 如果本地域名服務器無緩存,當采用遞歸方法解析另一網絡某主機域名時,用戶主機和本地域名服務器發送的域名請求條數分別為() A.1條 1條 B.1條 多條 C.多條 1條 D.多條 多條 A CSMA/CD的中文含義是(&#x…

最新PDF轉markdown軟件MonkeyOCR整合包,文檔圖片解析工具

MonkeyOCR是上個月剛發布的一款文檔解析工具,可以將PDF文檔或圖片識別轉換為markdown格式文件。官方測試顯示性能極佳。我基于當前最新版制作了免安裝一鍵啟動整合包,支持批量操作,并降低了顯卡要求。 MonkeyOCR官方介紹 MonkeyOCR 采用結構…

創客匠人深度剖析:家庭教育賽道創始人 IP 打造與知識變現的破局之道

在知識付費領域,家庭教育賽道的競爭日益激烈,如何從 0-1 打造創始人 IP 并實現高效拓客,成為創業者的核心難題。創客匠人服務的慈航德教育創始人陳向杰老師,通過視頻號運營、產品矩陣設計與社群生態構建,實現單月拓客 …

UDP服務器主要是指什么意思?

UDP的全稱為用戶數據報協議,是一種在計算機網絡中常用的傳輸協議,屬于是傳輸層協議,UDP屬于是一種無連接的協議,在發送數據信息之前,發送方和接收方不需要建立任何握手連接,主要是用于發送小量數據的實時應…

arm 精準總線錯誤與非精準總線錯誤

一、總線錯誤 1.1 arm總線設計 要了解什么是總線錯誤,就要先了解arm的總線設計。 AMBA(Advanced Micro-Controller Bus Architecture)是由ARM Limited公司推出的On-Chip Bus片上總線規范,是目前芯片總線的主流標準(該標準在不斷演進&#…

Unity UGUI的Canvas以及內部元素之間遮擋關系調整

調UI遮擋關系有三種思路: 調Sorting Layer,層級越后渲染到越前面調Order in Layer,數字越大渲染到越前面修改UI材質調RenderQueue,數字越大越后渲染 對前兩種比較陌生的同學可以看一下我以前寫的這篇,不看也沒事&…

SpringCloud系列(46)--SpringCloud Bus實現動態刷新全局廣播

前言:上一節中我們簡單的介紹了什么是SpringCloud Bus,SpringCloud Bus的用處,而本節內容則是使用SpringCloud Bus來實現動態刷新全局廣播。 實現動態刷新全局廣播的設計思想的架構圖 注:在實現SpringCloud Bus動態刷新全局廣播前…

Java+Vue開發的電子招投標管理系統,實現全流程線上操作,高效規范,助力招投標活動透明公正開展

前言: 在數字化浪潮席卷全球的當下,傳統招投標模式面臨著效率低下、信息不透明、管理成本高等諸多挑戰。電子招投標管理系統應運而生,它借助先進的互聯網技術和信息化手段,實現了招投標全流程的電子化、自動化和智能化管理。該系…

MyBatisPlus-02-核心功能

文章目錄【README】【1】MyBatis-plus常見注解【2】MyBatis-Plus常見配置【2.1】MyBatis-Plus配置示例【3】MyBatisPlus核心內容【3.1】條件構造器【3.1.1】業務場景1-帶多字段條件的查詢-使用QueryWrapper【3.1.2】業務場景2-帶條件的更新-使用QueryWrapper【3.1.3】業務場景3…

ZYNQ MPSOC GTH aurora8b10b IP的修改與仿真

1 ip設置好后的頂層模塊接口: 根據自己的開發板修改接口如下: odule gtwizard_ultrascale_0_example_top (// Differential reference clock inputsinput wire mgtrefclk0_x0y1_p,input wire mgtrefclk0_x0y1_n,// Serial data ports for transceiver channel 0input w…

機器學習之線性回歸

主要參考: 機器學習| 算法筆記-線性回歸(Linear Regression) - 知乎 (zhihu.com) 2-2 線性回歸_嗶哩嗶哩_bilibili Python機器學習實戰:線性回歸模型預測波士頓房價_嗶哩嗶哩_bilibili 回歸分析 在數學和統計學中,回歸…

Boost.Asio學習(2):同步讀寫

Asio 的 buffer 是什么? boost::asio::buffer(...) 是一個函數模板,用于創建一個通用的 buffer 對象,可傳遞給 I/O 函數(如 read, write, read_some, write_some 等)。 它返回的是 mutable_buffer 或 const_buffer 的…

Java中如何枚舉正則表達式捕獲組的名字

在使用正則表達式在匹配文本時&#xff0c;除了可以通過表達式捕獲命中的文本串外&#xff0c;還可以對捕獲的文本串進行命名。尤其是在解析日志的場景中&#xff0c;經常會被用到。表達式如下&#xff1a; \<(?<pri>\d)\>(?<time>.*) (?<host>\S)…

CentOS 系統高效部署 Dify 全攻略

系列文章目錄 CentOS系統高效部署fastGPT全攻略 文章目錄 系列文章目錄一、前言二、準備工作與系統要求三、安裝 Docker 與 Docker Compose四、部署 Dify 核心服務五、數據庫與存儲配置六、網絡與安全優化七、監控與運維八、升級與擴展九、附錄與資源關鍵命令速查表官方文檔…

xyctf2025第三屆京麒CTF

一.MISC 1.XGCTF 直接ai搜索一遍找到了出題人的博客LamentXU 2024-2025年終總結 - LamentXU - 博客園 知道了原題是ciscn中的 在LamentXU的博客亂逛Patriot CTF 2024 MISC 部分 wp - LamentXU - 博客園 找到了博客網站,讓后搜索ciscn扎到了博客 CISCN華東南WEB-Polluted |…

Python爬蟲 模擬登錄 requests版

前言 網站必須是登錄狀態才能查看網站信息,是最常見的反爬手段,下面我分享一下request模擬登錄狀態進行請求 目錄 模擬登錄的原理 直接復制網站Cookie模擬登錄狀態 通過登錄接口信息破解出Cookie模擬登錄狀態 模擬登錄的原理 網站是使用Cookie和session記錄網站的登錄狀態…

一些改進策略

1.要計算一個神經網絡模型的總參數量、可訓練參數量以及計算量&#xff08;FLOPs&#xff09;&#xff0c;可以使用以下步驟&#xff1a; ### 計算總參數量和可訓練參數量&#xff1a; 1. **逐層計算參數量**&#xff1a; - 對于每一層&#xff0c;確定該層的參數量。這通…

React Native響應式布局實戰:告別媒體查詢,擁抱跨屏適配新時代

前言:當設計師說"這個頁面要適配所有手機和平板…" “什么?React Native不支持CSS媒體查詢?那怎么實現響應式布局?”——這是很多剛接觸React Native的開發者會遇到的靈魂拷問。 但別慌,沒有@media,我們照樣能玩轉多端適配!想象一下:你的App在iPhone SE的小…