一問看懂——支持向量機SVM(Support Vector Machine)

?

目錄

蕪湖~~~支持向量機(SVM)

1. 引言

2. 基本思想

3. 數學模型

3.1 超平面定義

3.2 分類間隔與目標函數

3.3 軟間隔與松弛變量

4. 核函數方法(Kernel Trick)

4.1 核函數定義

4.2 常用核函數

5. SVM 的幾種類型

6. SVM 的訓練與預測流程

6.1 模型訓練

6.2 模型預測

7. 優點與局限

7.1 優點

7.2 局限

8. SVM 與多分類問題

9.代碼示例

9. 應用場景

10. 小結



蕪湖~~~支持向量機(SVM)


1. 引言

????????支持向量機(Support Vector Machine,簡稱 SVM)是一種基于統計學習理論的監督學習模型,最早由 Vladimir Vapnik 等人提出,廣泛應用于分類(Classification)回歸(Regression)任務中。由于其優越的泛化能力和堅實的理論基礎SVM 成為現代機器學習領域的重要算法之一,特別適合于高維小樣本以及非線性問題。


2. 基本思想

SVM 的核心思想是:

在特征空間中尋找一個最優分離超平面(Optimal Hyperplane),使得該超平面能夠最大限度地將不同類別的樣本分隔開,并具有? ?最大化間隔(Margin Maximization) 的特性。

????????如下圖所示,對于線性可分問題,SVM 會選取離兩個類別最近樣本點(即支持向量)距離最大的分割平面作為最終分類器。


3. 數學模型

3.1 超平面定義

在 n 維空間中,一個超平面的定義如下:

w^T x + b = 0

其中:

  • w:法向量,決定超平面方向;

  • b :偏置項,決定超平面距離原點的位置;

  • x :輸入樣本。


3.2 分類間隔與目標函數

對于樣本 (x_i, y_i),其分類間隔定義為:

\gamma_i = \frac{y_i(w^T x_i + b)}{\|w\|}

SVM 的目標是最大化所有樣本的最小分類間隔,即:

\max_{w,b} \min_i \gamma_i

為簡化計算,通常轉化為以下凸優化問題(硬間隔 SVM):

\min_{w,b} \frac{1}{2} \|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1


3.3 軟間隔與松弛變量

當數據線性不可分時,引入松弛變量 \xi_i 和懲罰系數 C,得到軟間隔 SVM:

\min_{w,b,\xi} \frac{1}{2} \|w\|^2 + C \sum_i \xi_i \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1 - \xi_i,\quad \xi_i \geq 0

其中:

  • C :控制對誤分類的懲罰程度;

  • \xi_i:表示樣本違反間隔的程度。


4. 核函數方法(Kernel Trick)

????????許多實際問題是非線性可分的。SVM 借助核函數技術將數據映射高維特征空間,在高維空間中實現線性可分。

4.1 核函數定義

核函數 K(x_i, x_j) 實際上是一個隱式內積:

K(x_i, x_j) = \phi(x_i)^T \phi(x_j)

其中 \phi(\cdot)是非線性映射函數,無需顯式計算。

4.2 常用核函數

核函數表達式說明
線性核(Linear)K(x_i, x_j) = x_i^T x_j適用于線性問題
多項式核(Polynomial)K(x_i, x_j) = (\gamma x_i^T x_j + r)^d控制多項式的復雜度
RBF核(高斯核)K(x_i, x_j) = \exp(-\gamma \|x_i - x_j\|^2)廣泛使用,處理非線性問題
Sigmoid核K(x_i, x_j) = \tanh(\gamma x_i^T x_j + r)類似神經網絡激活函數

5. SVM 的幾種類型

類型描述
C-SVC最常用的分類 SVM,帶懲罰系數 C
NU-SVC用參數 \nu 替代 C 控制支持向量數量
EPS-SVR支持向量回歸(SVR)類型,用于回歸問題
NU-SVR\nu 形式的回歸模型

6. SVM 的訓練與預測流程

6.1 模型訓練

  • 輸入:訓練樣本(特征向量 + 標簽

  • 設置 SVM 參數(核函數、C、γ等)

  • 求解優化問題(使用 SMO、梯度下降等方法)

  • 得到模型(支持向量、權重、偏置)

6.2 模型預測

預測函數定義為:

f(x) = \text{sign} \left( \sum_i \alpha_i y_i K(x_i, x) + b \right)

其中,\alpha_i 是拉格朗日乘子,僅對支持向量不為零。


7. 優點與局限

7.1 優點

  • 理論基礎堅實(VC維理論)

  • 高維小樣本數據表現良好

  • 可處理非線性問題(通過核方法

  • 具有稀疏解(依賴于少數支持向量)

7.2 局限

  • 對大規模數據訓練速度,內存消耗大

  • 核函數和參數選擇依賴經驗

  • 不易處理多分類問題(需借助一對一/一對多策略)


8. SVM 與多分類問題

SVM 原生為二分類模型,但可通過以下策略擴展為多分類:

  • 一對一(One-vs-One, OvO):為每兩個類別訓練一個分類器,投票決定最終分類;

  • 一對多(One-vs-Rest, OvR):為每一個類別與其余類別訓練一個分類器,選擇概率最大者;

  • 結構 SVM:直接擴展的多類模型(不常見于 OpenCV 實現中)。


9.代碼示例

基于 Python 的 scikit-learnmatplotlib 實現。這個代碼會:

  • 創建兩類可分數據;

  • 用 SVM 訓練分類器;

  • 可視化:

    • 支持向量(用圈標出)

    • 決策邊界(黑線)

    • 間隔邊界(虛線)

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs# 生成兩個類別的樣本數據
X, y = make_blobs(n_samples=40, centers=2, random_state=6)# 擬合一個線性支持向量分類器
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(X, y)# 獲取模型的參數
w = clf.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(min(X[:, 0]) - 1, max(X[:, 0]) + 1)
yy = a * xx - (clf.intercept_[0]) / w[1]# 計算邊界線(間隔)
margin = 1 / np.linalg.norm(w)
yy_down = yy - np.sqrt(1 + a ** 2) * margin
yy_up = yy + np.sqrt(1 + a ** 2) * margin# 繪圖
plt.figure(figsize=(8, 6))# 分類點
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm, s=30)# 決策邊界
plt.plot(xx, yy, 'k-')# 間隔邊界
plt.plot(xx, yy_down, 'k--')
plt.plot(xx, yy_up, 'k--')# 支持向量
plt.scatter(clf.support_vectors_[:, 0],clf.support_vectors_[:, 1],s=150, facecolors='none', edgecolors='k', linewidths=1.5, label='Support Vectors')plt.legend()
plt.title("SVM Decision Boundary with Margin and Support Vectors")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.grid(True)
plt.show()


9. 應用場景

SVM 被廣泛應用于以下任務:

  • 圖像分類、人臉識別、字符識別(如 OCR)

  • 基因數據分析與醫學診斷

  • 文字情感分類與垃圾郵件檢測

  • 股票趨勢預測與回歸任務


10. 小結

????????支持向量機是一種功能強大的分類與回歸工具,其“最大間隔 + 核技巧”的方法為機器學習提供了堅實的模型選擇方式。在合適的參數和核函數配置下,SVM 能夠提供強魯棒性與良好的泛化能力。對于中小規模問題,SVM 是值得優先嘗試的模型之一。

用一句最簡單的話講明白SVM支持向量機

????????SVM支持向量機是一種機器學習算法,它通過找到一個最優的超平面來分類數據點,使得不同類別的數據點盡可能分開

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

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

相關文章

藍橋杯 拼數(字符串大小比較)

題目描述 設有 n 個正整數 a1?…an?,將它們聯接成一排,相鄰數字首尾相接,組成一個最大的整數。 輸入格式 第一行有一個整數,表示數字個數 n。 第二行有 n 個整數,表示給出的 n 個整數 ai?。 輸出格式 一個正整…

Elasticsearch 系列專題 - 第三篇:搜索與查詢

搜索是 Elasticsearch 的核心功能之一。本篇將介紹如何構建高效的查詢、優化搜索結果,以及調整相關性評分,幫助你充分發揮 Elasticsearch 的搜索能力。 1. 基礎查詢 1.1 Match Query 與 Term Query 的區別 Match Query:用于全文搜索,會對查詢詞進行分詞。 GET /my_index/_…

本地電腦使用sshuttle命令將網絡流量代理到ssh連接的電腦去實現訪問受限網絡

本地電腦使用sshuttle命令將網絡流量代理到ssh連接的電腦去實現訪問受限網絡 安裝使用 工作過程中, 經常會遇到, 需要訪問客戶內網環境的問題, 一般都需要安轉各式各樣的VPN客戶端到本地電腦上, 軟件多了也會造成困擾, 所有, 找了一款還不錯的命令工具去解決這個痛點 安裝 官方…

雙相機結合halcon的條碼檢測

以下是針對提供的C#代碼的詳細注釋和解釋,結合Halcon庫的功能和代碼結構進行說明: --- ### **代碼整體結構** 該代碼是一個基于Halcon庫的條碼掃描類GeneralBarcodeScan,支持單臺或雙臺相機的條碼檢測,并通過回調接口返回結果。…

python基礎語法12-迭代器與生成器

Python 生成器與迭代器詳解 在 Python 中,生成器和迭代器是處理大量數據時的強大工具。它們能夠幫助我們節省內存,避免一次性加載過多數據。生成器通過 yield 關鍵字實現,允許我們逐步產生數據,而迭代器通過實現特定的接口&#…

公司內部建立pypi源

有一篇建立apt源的文章在這里,需要的可以查看:公司內部建立apt源-CSDN博客 server: pip install pypiserver mkdir -d pypi/packages cp test.whl pypi/packages pypi-server run --port 8080 /home/xu/pypi/packages & 網頁訪問:http:…

VMware Workstation/Player 的詳細安裝使用指南

以下是 VMware Workstation/Player 的完整下載、安裝指南,包含詳細步驟、常見問題及解決方法,以及進階使用技巧,適用于 Windows 和 macOS 用戶。 VMware Workstation/Player 的詳細安裝使用指南—目錄 一、下載與安裝詳細指南1. 系統要求2. 下…

藍橋杯python組考前準備

1.保留k位小數 round(10/3, 2) # 第二個參數表示保留幾位小數 2.輸入代替方案(加速讀取) import sys n int(sys.stdin.readline()) # 讀取整數(不加int就是字符串) a, b map(int, sys.stdin.readline().split()) # 一行讀取多個…

【JSON2WEB】16 login.html 登錄密碼加密傳輸

【JSON2WEB】系列目錄 【JSON2WEB】01 WEB管理信息系統架構設計 【JSON2WEB】02 JSON2WEB初步UI設計 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代碼前端框架介紹 【JSON2WEB】05 前端開發三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

計算機網絡起源

互聯網的起源和發展是一個充滿創新、突破和變革的歷程,從20世紀60年代到1989年,這段時期為互聯網的誕生和普及奠定了堅實的基礎。讓我們詳細回顧這一段激動人心的歷史。 計算機的發展與ARPANET的建立(20世紀60年代) 互聯網的誕生…

洛谷P1824進擊的奶牛簡單二分

題目如下 代碼如下 謝謝觀看

如何建立高效的會議機制

建立高效的會議機制需做到:明確會議目標、制定并提前分發議程、控制會議時長、確保有效溝通與反饋、及時跟進執行情況。其中,明確會議目標是核心關鍵,它直接決定了會議的方向與效率。只有明確目標,會議才不會偏離初衷,…

開源AI大模型AI智能名片S2B2C商城小程序:科技浪潮下的商業新引擎

摘要: 本文聚焦于科技迅猛發展背景下,開源AI大模型、AI智能名片與S2B2C商城小程序的融合應用。通過分析元宇宙、人工智能、區塊鏈、5G等前沿科技帶來的商業變革,闡述開源AI大模型AI智能名片S2B2C商城小程序在整合資源、優化服務、提升用戶體驗…

基于大模型構建金融客服的技術調研

OpenAI-SB api接口 https://openai-sb.com/ ChatGPT與Knowledge Graph (知識圖譜)分享交流 https://www.bilibili.com/video/BV1bo4y1w72m/?spm_id_from333.337.search-card.all.click&vd_source569ef4f891360f2119ace98abae09f3f 《要研究的方向和準備》 https://ww…

WSA(Windows Subsystem for Android)安裝LSPosed和應用教程

windows安卓子系統WSA的Lsposed和shamiko的安裝教程 WSA(Windows Subsystem for Android)安裝LSPosed和應用教程 一、環境準備 在開始之前,請確保: 已經安裝好WSA(Windows Subsystem for Android)已經安裝好ADB工具下載好LSPosed和Shamiko框架安裝包 二、連接WSA 首先需要…

辛格迪客戶案例 | 河南宏途食品實施電子合約系統(eSign)

01 河南宏途食品有限公司:食品行業的數字化踐行者 河南宏途食品有限公司(以下簡稱“宏途食品”)作為國內食品行業的創新企業,專注于各類食品的研發、生產和銷售。公司秉承“質量為先、創新驅動、服務至上”的核心價值觀&#xff…

手機靜態ip地址怎么獲取?方法與解析?

而在某些特定情境下,我們可能需要為手機設置一個靜態IP地址。本文將詳細介紹手機靜態IP地址詳解及獲取方法 一、什么是靜態IP地址? 靜態IP:由用戶手動設置的固定IP地址,不會因網絡重啟或設備重連而改變。 動態IP:由路…

天下飛飛【老飛飛服務端】+客戶端+數據庫測試帶視頻教程

天下飛飛服務器搭建測試視頻 天下飛飛【老飛飛服務端】客戶端數據庫測試帶視頻教程 完整安裝教程。 測試環境 系統server2019 sql2022數據庫 sql的安裝 odbc搭建 sql加載數據庫 此測試端能用于服務器搭建測試。 下載地址為:https://download.csdn.net/d…

Gitea的安裝和配置以及應用

Gitea的安裝和配置以及應用 一、安裝 1、創建數據庫和數據庫賬戶(pg) su – postgres -c "psql" CREATE ROLE gitea WITH LOGIN PASSWORD gitea; CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE …

如何更改OCP與metadb集群的連接方式 —— OceanBase運維管理

背景 許多用戶都會借助OCP平臺來進行OceanBase集群的運維與監控,且因為考慮單節點的OCP部署,在遇故障時可能會短時間出現無法管控 OceanBase集群,多數用戶傾向于采用多節點方式來部署OCP,即 OCP的 metadb集群也是三節點的集群部署…