算法系列——有監督學習——4.支持向量機

一、概述

支持向量機(Support Vector Machine,SVM)是一種應用范圍非常廣泛的算法,既可以用于分類,也可以用于回歸。

本文將介紹如何將線性支持向量機應用于二元分類問題,以間隔(margin)最大化為基準,得到更好的決策邊界。雖然該算法的決策邊界與邏輯回歸一樣是線性的,但有時線性支持向量機得到的結果更好。

下面對同一數據分別應用線性支持向量機和邏輯回歸,并比較其結果

左圖是學習前的數據,右圖是從數據中學習后的結果。右圖中用黑色直線標記的是線性支持向量機的決策邊界,用藍色虛線標記的是邏輯回歸的決策邊界。線性支持向量機的分類結果更佳。線性支持向量機的學習方式是:以間隔最大化為基準,讓決策邊界盡可能地遠離數據。下面來看一下線性支持向量機是如何從數據中學習的。

二、算法說明

間隔的定義:

以平面上的二元分類問題為例進行說明,并且假設數據可以完全分類。線性支持向量機通過線性的決策邊界將平面一分為二,據此進行二元分類。此時,訓練數據中最接近決策邊界的數據與決策邊界之間的距離就稱為間隔

右圖的間隔大于左圖的間隔。支持向量機試圖通過增大決策邊界和訓練數據之間的間隔來獲得更合理的邊界。

三、示例代碼

下面生成線性可分的數據,將其分割成訓練數據和驗證數據,使用訓練數據訓練線性支持向量機,使用驗證數據評估正確率。另外,由于使用了隨機數,所以每次運行的結果可能有所不同。
?

"""
LinearSVC:線性支持向量分類模型。
make_blobs:生成模擬數據集。
train_test_split:劃分訓練集和測試集。
accuracy_score:計算分類準確率。
"""from sklearn.svm import LinearSVC
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
"""
生成 50個樣本,分為兩類,每類25個樣本。
數據特征為二維,圍繞兩個中心點 (-1, -0.125) 和 (0.5, 0.5) 生成。
cluster_std=0.3 標準差表示數據點圍繞中心點的分布較集中
"""
centers = [(-1, -0.125), (0.5, 0.5)]
X, y = make_blobs(n_samples=50, n_features=2,
centers=centers, cluster_std=0.3)                
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)  # 15個樣本作為測試集(30%)
model = LinearSVC()
model.fit(X_train, y_train)  # 訓練
y_pred = model.predict(X_test)
print(accuracy_score(y_pred, y_test))  """
評估函數說明:
輸入參數:y_pred:模型對測試集的預測結果(由 model.predict(X_test) 生成)
y_test:測試集的真實標簽(實際正確答案)
輸出結果:
返回一個 0~1 之間的浮點數,表示預測正確的樣本比例。
例如:0.85 表示 85% 的測試樣本被正確分類。
"""

四、詳細說明

軟間隔和支持向量

目前我們了解的都是數據可以線性分離的情況,這種不允許數據進入間隔內側的情況稱為硬間隔。但一般來說,數據并不是完全可以線性分離的,所以要允許一部分數據進入間隔內側,這種情況叫作軟間隔。通過引入軟間隔,無法線性分離的數據也可以如圖所示進行學習。

基于線性支持向量機的學習結果,我們可以將訓練數據分為以下3種。
1. 與決策邊界之間的距離比間隔還要遠的數據:間隔外側的數據。
2. 與決策邊界之間的距離和間隔相同的數據:間隔上的數據。
3. 與決策邊界之間的距離比間隔近,或者誤分類的數據:間隔內側的數據。


其中,我們將間隔上的數據和間隔內側的數據特殊對待,稱為支持向量。支持向量是確定決策邊界的重要數據。間隔外側的數據則不會影響決策邊界的形狀。由于間隔內側的數據包含被誤分類的數據,所以乍看起來通過調整間隔,使間隔內側不存在數據的做法更好。但對于線性可分的數據,如果強制訓練數據不進入間隔內側,可能會導致學習結果對數據過擬合。使用由兩個標簽組成的訓練數據訓練線性支持向量機而得到的結果如圖所示。

左圖是不允許數據進入間隔內側的硬間隔的情況,右圖是允許數據進入間隔內側的軟間隔的情況。
另外,在藍色點表示的訓練數據中特意加上了偏離值

比較兩個結果可以發現,使用了硬間隔的左圖上的決策邊界受偏離值的影響很大;而在引入軟間隔的右圖上的學習結果不容易受到偏離值的影響。在使用軟間隔時,允許間隔內側進入多少數據由超參數決定。

與其他算法一樣,在決定超參數時,需要使用網格搜索(grid search)和隨機搜索(random search)等方法反復驗證后再做決定。
?

?

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

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

相關文章

【Mani_skill】success判斷的核心調用邏輯

1. 可視化調用流程(from Deepseek-r1-Cursor) [RL算法調用 env.step()]↓ 調用 env.get_info()↓ 調用 env.evaluate() → 返回包含 success 的字典↓ 將 success 存入 info 字典↓ 在 step() 中處理終止條件: terminated success | fail

【圖像處理基石】什么是HDR圖片?

1. 什么是HDR圖片? HDR(高動態范圍圖像,High Dynamic Range)是一種通過技術手段擴展照片明暗細節的成像方式。以下是關于HDR的詳細說明: 核心原理 動態范圍:指圖像中最亮和最暗區域之間的亮度差。人眼能…

嵌入式筆記 | 正點原子STM32F103ZET6 4 | 中斷補充

1. 外設引腳重映射 1.1 定義 在STM32中,每個外設的引腳都有默認的GPIO端口,但有些引腳可以通過重映射寄存器將功能映射到其他端口。這種機制稱為引腳重映射,主要用于解決引腳復用沖突或優化PCB布線。 1.2 重映射的類型 部分重映射&#x…

如何選擇合適的 AI 模型?(開源 vs 商業 API,應用場景分析)

1. 引言 在 AI 迅猛發展的今天,各類 AI 模型層出不窮,從開源模型(如 DeepSeek、Llama、Qwen)到商業 API(如 OpenAI 的 ChatGPT、Anthropic 的 Claude、Google Gemini),每種方案都有其優勢與適用…

攻克 3D 模型網站建設難題,看迪威系統優勢

在當今數字化時代,3D 模型廣泛應用于建筑設計、游戲開發、工業制造、文化創意等諸多領域。擁有一個功能強大的 3D 模型網站,對于企業展示產品、設計師分享作品、教育機構開展教學等都具有重要意義。然而,構建這樣一個網站卻并非易事&#xff…

使用uniapp的vite版本進行微信小程序開發,在項目中使用mqtt連接、訂閱、發布信息

1、保證在微信公眾平臺配置socket合法域名 2、項目中使用mqtt 建議在package.json中配置"mqtt": “4.1.0”,使用這個版本的依賴 頁面中引入mqtt并配置連接 // ts-ignoreimport * as mqtt from mqtt/dist/mqtt.js; //要使用這里面的const state reacti…

【FAQ】HarmonyOS SDK 閉源開放能力 —Map Kit(6)

1.問題描述: 使用華為內置的MapComponent, 發現顯示不出來。查看日志, MapRender底層有報錯。 解決方案: 麻煩按以下步驟檢查下地圖服務,特別是簽名證書指紋那部分。 1.一般沒有展示地圖,可能和沒有配置…

現代復古像素風品牌海報游戲排版設計裝飾英文字體 Psygen — Modern Pixel Font

Psygen 是一種像素化等寬字體,具有強烈的復古未來主義和網絡風格美學。塊狀的、基于網格的字體采用了早期的計算機界面、街機游戲排版和 ASCII 藝術。 該字體支持拉丁文、西里爾文和希臘文腳本,使其適用于多語言設計。擴展的字符集還具有唯一的符號和方…

小科普《DNS服務器》

DNS服務器詳解 1. 定義與核心作用 DNS(域名系統)服務器是互聯網的核心基礎設施,負責將人類可讀的域名(如www.example.com)轉換為機器可識別的IP地址(如192.0.2.1),從而實現設備間的…

lunar是一款無第三方依賴的公歷 python調用

lunar是一款無第三方依賴的公歷(陽歷)、農歷(陰歷、老黃歷)、佛歷和道歷工具,支持星座、儒略日、干支、生肖、節氣、節日、彭祖百忌、吉神(喜神/福神/財神/陽貴神/陰貴神)方位、胎神方位、沖煞、納音、星宿、八字、五行、十神、建除十二值星、青龍名堂等十二神、黃道…

力扣hot100——三數之和(雙指針)

題目:三數之和 排序 雙指針 本題的難點在于如何去除重復解。 算法流程: 1、特判,對于數組長度 n,如果數組為 null 或者數組長度小于 3,返回 []。 2、對數組進行排序。 3、遍歷排序后數組: &#xff08…

操作系統為ubantu的服務器上部署nginx軟件基礎步驟總結

今天在這里,我們總結一下ubantu的服務器上部署nginx軟件,請按照以下步驟進行安裝: 1、更新包列表: 首先更新你系統中的可用軟件包列表,以確保你可以安裝最新版本。 sudo apt update2、 Ubuntu上更新已安裝軟件包&…

記錄一次,rabbitmq開啟stomp插件之后,還是連不上15674端口的問題

原因是裝在docker 里面的rabbitmq 沒有映射15674端口,需重新刪除容器之后重新運行 docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -p 15674:15674 -p 1883:1883 -p 15675:15675 rabbitmq:版本號 進入docker容器開啟插件 docker exec -it rabbitm…

MATLAB 控制系統設計與仿真 - 27

狀態空間的標準型 傳遞函數和狀態空間可以相互轉換,接下來會舉例如何有傳遞函數轉成狀態空間標準型。 對角標準型 當 G(s)可以寫成: 即: 根據上圖可知: 約當標準型 當 G(s)可以寫成: 即: 根據上圖…

1.FastAPI簡介與安裝

文章目錄 為什么選擇FastAPI?FastAPI支持的功能FastAPI的安裝第一個FastAPI應用運行應用 為什么選擇FastAPI? python web開發: Django: 適合大型復雜項目;Flask:適合靈活開發,搭建小型項目;FastAPI: 兼具開…

【MyDB】一個仿照MySQL的輪子項目系列文章匯總

迄今所有系列文章內容如下: 代碼位于xianghua-2/MYDB: 一個仿MySQL的簡易數據庫 1 項目環境配置以及整體項目結構 【MyDB】1-MyDB環境配置及項目結構-CSDN博客 2 TransactionManager事務管理模塊 【MyDB】2-TransactionManager 事務管理-CSDN博客 3 DataManage…

2025年汽車加氣站操作工考試精選題庫

汽車加氣站操作工題庫中題目及答案: 單項選擇題 1、按壓力容器的設計壓力分為( )個壓力等級。 A. 3 B. 4 C. 5 答案:B 2、緩沖罐的安裝位置在天然氣壓縮機( )。 A. 前 B. 后 C. 中間 答案&#…

【Unity Bug 隨記】使用Rider debug功能時Unity Reload Domain卡死問題

使用Rider debug功能時Unity Reload Domain卡死 檢查是否使用unity version control版本控制系統(VCS),使用的話刪除這個包,再嘗試,如果能正常斷點調試,說明確實是VCS的問題。 我和幾個網友都是這個原因…

麒麟銀河V10服務器RabbitMQ安裝

安裝步驟 rabbitMQ依賴于erlang的環境,所以需要先安裝erlang,erlang跟rabbitMQ是有版本之間的關聯關系的,根據對應的版本去安裝下載,保證少出問題。 可以通過官網來查看RabbitMQ和erlang之間的版本對應關系 rabbitMQ和erlang之間…

springboot操作redis集群,注意事項

整合redis可查看博文 springboot 整合redis_springboot整合redis csdn-CSDN博客 集群中操作注意事項 1 多鍵操作失敗: 當使用multiGet等需要同時訪問多個鍵的方法時,如果沒有使用Hash Tags,這些鍵可能會被分配到不同的槽中。如果這些槽位于…