機器學習--支持向量機

目錄

一、為什么需要 SVM?先解決 “怎么分才好” 的問題

二、SVM 的核心:什么是 “最好的超平面”?用 “間隔” 說話

1. 先搞懂兩個關鍵概念

2. 目標:把 “間隔” 拉到最大

三、從 “想要最大間隔” 到 “解數學問題”:SVM 的優化邏輯

1. 把目標 “轉個彎”:從最大化到最小化

2. 加上約束:不能分錯樣本

3. 用拉格朗日乘子法:解帶約束的優化問題

四、SVM 的 “進階技巧”:解決實際問題

1. 軟間隔:允許少量 “不完美”

2. 核函數:把 “低維不可分” 變成 “高維可分”

五、學完 SVM 的一點小感悟

六、機器學習總結


從 “找一條最好的線” 開始:我理解的支持向量機(SVM)核心邏輯

? ? ? 今天跟著課程啃完了機器學習里的支持向量機(SVM),一開始光聽到 “超平面”“間隔最大化” 這些詞還覺得有點繞,但順著邏輯一步步拆下來,發現它的核心思路其實特別 “樸素”—— 本質就是在樣本里找一條 “最穩妥” 的分界線。與其記一堆公式,不如先把背后的道理捋明白,所以想把今天的學習筆記整理出來,也幫自己再順一遍思路。

一、為什么需要 SVM?先解決 “怎么分才好” 的問題

? ? ? 最開始老師拋了個問題:如果給你一堆兩類樣本,比如左邊是紅色點、右邊是藍色點,你怎么畫一條線把它們分開?

? ? ? 我第一反應是 “隨便畫一條不就行?”,但老師緊接著舉了個例子:如果畫的線離某一邊的點特別近,萬一新進來的樣本稍微偏一點,不就分錯了?這時候才意識到,劃分的關鍵不是 “能分開”,而是 “分的穩”—— 也就是這條線對樣本的 “容錯性” 要足夠高,哪怕樣本稍微有點擾動,也不會輕易分錯。

? ? ? 這就是 SVM 的出發點:在樣本空間里找一個 “最優劃分超平面”(對二維數據來說是直線,三維是平面,更高維就是超平面),讓這個超平面能最大限度地 “遠離” 兩邊的樣本,這樣容錯性自然就高了。

二、SVM 的核心:什么是 “最好的超平面”?用 “間隔” 說話

? ? ? 既然要找 “最穩” 的超平面,那怎么量化 “穩不穩”?這里就引出了 “間隔(margin)” 的概念 —— 簡單說,就是超平面到它兩邊最近樣本的距離之和。

1. 先搞懂兩個關鍵概念

? ? ? 超平面本身:它不是隨便畫的,有固定的數學表達。比如 n 維空間里,超平面可以寫成w^T x + b = 0,其中w是超平面的法向量(決定超平面的方向),b是偏置(決定超平面的位置)。像我們熟悉的二維直線Ax + By + C = 0,其實就是超平面在二維空間的特殊情況。

? ? ? 點到超平面的距離:要算 “間隔”,得先知道單個樣本到超平面的距離。這個公式是從二維直線的距離公式拓展開的 —— 二維里點(x,y)Ax+By+C=0的距離是|Ax+By+C|/√(A2+B2),推廣到 n 維,就是|w^T x + b| / ||w||||w||w的范數,類似二維里的√(A2+B2))。

2. 目標:把 “間隔” 拉到最大

? ? ? SVM 里的 “最優超平面”,就是能讓 “間隔” 最大的那個。為什么是最大間隔?因為間隔越大,超平面離兩邊樣本越遠,后續新樣本進來時,不小心分錯的概率就越小 —— 這就像走馬路,走中間比走路邊更不容易被車碰到,一個道理。

? ? ? 不過這里有個小細節:間隔其實是 “超平面到兩邊最近樣本的距離之和”,我們把這兩個最近的樣本叫做 “支持向量”—— 沒錯,SVM 的名字就是從這來的!因為這兩個點直接決定了超平面的位置和間隔大小,其他樣本哪怕再多,只要不影響這兩個支持向量,對超平面就沒影響。這一點我覺得特別妙,相當于 SVM 只 “關注” 最關鍵的樣本,不被冗余信息干擾。

三、從 “想要最大間隔” 到 “解數學問題”:SVM 的優化邏輯

? ? ? 想清楚 “要最大化間隔” 之后,接下來就是把這個目標變成數學問題來解。這一步一開始有點繞,但跟著老師拆步驟,其實也沒那么難。

1. 把目標 “轉個彎”:從最大化到最小化

? ? ? 首先,我們已經知道間隔的核心是 “超平面到支持向量的距離”,假設這個距離是d,那間隔就是2d(兩邊各d)。要最大化間隔,其實就是最大化d

? ? ? 而d的公式是|w^T x + b| / ||w||,這里有個小技巧:我們可以通過調整wb的尺度,讓支持向量滿足|w^T x + b| = 1(因為wb成比例縮放時,超平面位置不變,只是|w^T x + b|的數值變了,所以可以固定這個值)。這樣一來,d就變成了1/||w||

? ? ? 所以 “最大化d” 就等價于 “最小化||w||”—— 不過為了計算方便(比如求導時更簡單),我們通常會最小化(1/2)||w||2(平方不影響最小值的位置,系數 1/2 是為了求導后抵消)。

2. 加上約束:不能分錯樣本

? ? ? 當然,優化不能沒有約束 —— 我們得保證所有樣本都被超平面正確分類。怎么表達?如果用y表示樣本類別(正例y=+1,負例y=-1),那么對于所有樣本,必須滿足y*(w^T x + b) ≥ 1。這個式子的意思是:正例的w^T x + b得是正的,負例的得是負的,而且它們的絕對值都至少是 1(也就是都在支持向量的外側),這樣才能保證分類正確,且間隔是1/||w||

3. 用拉格朗日乘子法:解帶約束的優化問題

? ? ? 到這里,問題就變成了 “在y*(w^T x + b) ≥ 1的約束下,最小化(1/2)||w||2”—— 這是一個帶不等式約束的優化問題,老師說這種問題通常用 “拉格朗日乘子法” 來解。

? ? ? 具體的推導過程我就不寫太細了(怕自己記混),核心是把 “帶約束的最小化問題” 轉換成 “無約束的對偶問題”—— 簡單說,就是引入拉格朗日乘子α,把約束條件融入到目標函數里,然后通過對wb求偏導,找到最優解的條件。

? ? ? 最后解出來的結果里,有兩個關鍵結論:

? ? ? (1)最優的w是所有支持向量乘以其類別和拉格朗日乘子后的總和(w = Σα_i y_i x_i);

? ? ? (2)所有非支持向量的α_i都是 0—— 再次印證了 “只有支持向量影響超平面”。

四、SVM 的 “進階技巧”:解決實際問題

? ? ? 理論上的 SVM 要求樣本 “完全線性可分”,但實際數據里難免有噪音(比如個別樣本放錯了類別),或者樣本本身就不是線性可分的(比如像螺旋線一樣繞在一起)。這時候就需要 SVM 的兩個 “進階技能”。

1. 軟間隔:允許少量 “不完美”

? ? ? 如果數據里有噪音,硬要求所有樣本都滿足y*(w^T x + b) ≥ 1,反而會讓超平面 “拐個彎” 去遷就噪音,導致泛化能力變差(也就是過擬合)。這時候就需要 “軟間隔”—— 允許少數樣本不滿足約束,但要對這些 “不滿足” 的樣本罰分。

? ? ? 具體來說,就是引入一個 “松弛因子”ξ_iξ_i ≥ 0),把約束條件改成y*(w^T x + b) ≥ 1 - ξ_iξ_i越大,說明這個樣本離 “理想位置” 越遠,罰分也越重。然后目標函數就變成了(1/2)||w||2 + C*Σξ_i,其中C是懲罰系數:

C越大,說明越不能容忍錯誤,超平面會盡量把所有樣本分對,但可能過擬合;

C越小,說明可以容忍更多錯誤,超平面更 “平緩”,但可能欠擬合。

2. 核函數:把 “低維不可分” 變成 “高維可分”

? ? ? 如果樣本在低維空間里根本沒法用直線(或超平面)分開,比如二維空間里的 “同心圓” 樣本,怎么辦?老師舉了個特別形象的例子:把二維平面 “掰彎” 成三維的圓錐面,原本的同心圓在三維空間里就變成了兩個平行的圓,這時候用一個平面就能分開了。

? ? ? 這個 “掰彎” 的過程,就是 “特征映射”—— 把低維空間的樣本映射到高維空間。但高維空間的計算量太大了(比如二維映射到 100 維,計算量會爆炸),這時候 “核函數” 就派上用場了。

? ? ? 核函數的神奇之處在于:它能直接計算兩個樣本在高維空間里的內積,而不用真的把樣本映射到高維空間。比如常用的 “高斯核”,就能把低維不可分的數據,在無形中映射到無窮維空間,從而實現線性可分。這一步我目前還沒完全吃透,但記住了核心結論:遇到非線性問題,試試用核函數,比如線性核(適合線性可分)、高斯核(適合非線性)。

五、學完 SVM 的一點小感悟

? ? ? 今天學完 SVM,最大的感受是 “數學是為解決問題服務的”。一開始看到w^T x + b、拉格朗日乘子這些公式會有點怵,但順著 “找最穩的超平面” 這個核心目標往下拆,每一步推導都有它的道理 —— 不是為了復雜而復雜,而是為了把 “穩” 這個模糊的需求,變成能計算、能求解的數學問題。

? ? ? 另外,SVM 的 “極簡主義” 也很打動我:它只關注支持向量,忽略冗余樣本,既保證了模型的簡潔性,又能有很好的泛化能力。難怪老師說,在小樣本、高維數據(比如文本分類)里,SVM 至今還是很常用的模型。

? ? ? 當然,現在只是搞懂了 SVM 的核心邏輯,后面還需要多做實驗(比如用真實數據集跑一跑,調調C和核函數的參數),才能真正掌握。不過今天能把 “從找線到解公式” 的邏輯串起來,已經很有成就感啦~

六、機器學習總結

? ? ? 今天這篇文章發完,機器學習的內容我們就告一段落啦,從機器學習的概論描述到KNN、決策樹、隨機森林、邏輯回歸、線性回歸、無監督學習、樸素貝葉斯、支持向量機這些算法學完之后相對于你對機器學習會有進一步的了解,可以用機器學習的算法對數據集完成基本的操作模型任務啦,接下來我會通過之前學習過的東西完成一個大任務哦,盡請期待吧!!!

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

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

相關文章

Multi-output Classification and Multi-label Classification|多輸出分類和多標簽分類

----------------------------------------------------------------------------------------------- 這是我在我的網站中截取的文章,有更多的文章歡迎來訪問我自己的博客網站rn.berlinlian.cn,這里還有很多有關計算機的知識,歡迎進行留言或…

【目標檢測】論文閱讀5

Small-object detection based on YOLOv5 in autonomous driving systems 發表期刊:Pattern Recognition Letters;發表時間:2023年 論文地址 摘要 隨著自動駕駛領域的快速發展,對更快、更準確的目標檢測框架的需求已經成為必要。…

Playwright進階指南 (6) | 自動化測試實戰

2025企業級測試解決方案:從單測到千級并發,打造高可用測試體系一、為什么傳統自動化測試難以落地?根據2025年最新行業調研,測試項目失敗的三大核心原因:失敗原因占比典型表現維護成本過高45%選擇器頻繁失效&#xff0c…

uv 簡單使用

二進制安裝 powershell -ExecutionPolicy Bypass -c "irm https://ghproxy.cn/https://github.com/astral-sh/uv/releases/download/0.8.13/uv-installer.ps1 | iex"版本號:0.8.13,自行更改github加速前綴:https://ghproxy.cn/ 配置…

Linux程序管理

目錄 一、Linux程序與進程 1、程序,進程,線程的概念 2、程序和進程的區別 3、進程和線程的區別 二、Linux進程基礎(生命周期) 1、進程生命周期 2、父子進程的關系 三、程序管理 1、課程目標 2、常見的軟件包類型 3、安裝方法 使用獨立的rpm包安裝 rpm包的命名方法…

Linux-進程替換exec

文章目錄進程替換exec 函數族使用說明查看命令的路徑 which測試 execl測試 execlp測試 execv測試 execvp進程替換 概述 在 Windows 平臺下,我們可以通過雙擊運行可執行程序,讓這個可執行程序成為一個進程;而在 Linux 平臺,我們可…

Seaborn數據可視化實戰:Seaborn數據可視化實戰入門

Seaborn數據可視化實戰:從數據到圖表的完整旅程 學習目標 通過本課程的學習,你將能夠掌握使用Seaborn進行數據可視化的完整流程,從數據準備到圖表設計,再到最終的圖表呈現。本課程將通過一個具體的項目案例,幫助你全面…

控制系統仿真之時域分析(二)

一、時域分析法時域分析法是從傳遞函數出發直接在時域上研究控制系統性能的方法,實質上是研究系統在某典型輸入信號下隨時間變化的曲線,從而分析系統性能。控制系統的時域響應決定于系統本身的參數和結構,還有系統的初始狀態,以及…

PDF 表單創建與分發

PDF 表單是一種交互式文檔,允許用戶填寫信息、做出選擇并提交數據。與靜態 PDF 不同,PDF 表單包含可交互的字段元素,如文本框、復選框、單選按鈕等。#mermaid-svg-sZe9We4UG0yKymyl {font-family:"trebuchet ms",verdana,arial,san…

Guava 簡介:讓 Java 開發更高效

Guava 簡介:讓 Java 開發更高效 Guava 是由 Google 開源的 Java 庫,旨在為開發者提供一系列實用的工具類,以提高開發效率。它包含了集合類、緩存、并發工具、字符串處理等實用方法。 Guava 的常用場景 集合處理:Guava 提供了多種擴…

「ECG信號處理——(24)基于ECG和EEG信號的多模態融合疲勞分析」2025年8月23日

目錄 一、引言 二、核心原理 2.1 心電 HRV 疲勞關聯原理 2.2 腦電 EEG 疲勞關聯原理 2.3 疲勞綜合指數 三、數據處理流程 四、結果展示與分析 參考文獻 一、引言 針對作業安全(如駕駛、精密操作)場景下的疲勞狀態實時監測需求,本文提…

EXCEL自動調整列寬適應A4 A3 A2

Public xlPaperA2%Sub 填滿頁面排版()xlPaperA2 66 A2編號66Dim ws As Worksheet: Set ws ActiveSheetDim FirstCol As Long, LastCol As Long, LastRow As LongDim TargetRange As RangeDim UsablePageWidth As DoubleDim CurrentWidth As DoubleDim StartFontSize As Doubl…

Linux系統性能優化全攻略:從CPU到網絡的全方位監控與診斷

引言 在Linux系統運維和開發過程中,系統性能優化是一個永恒的話題。無論是服務器負載過高,還是應用程序響應緩慢,準確快速地定位問題根源至關重要。本文將全面介紹Linux系統中常用的性能診斷工具和方法,幫助您從CPU、內存、磁盤I/…

uniapp+vue+uCharts開發常見問題匯總

項目結構:uniapp vue2 uni-ui uCharts 1、chunk-vendors.js:2765[Vue warn]: Invalid prop: custom validator check failed for prop "navigationBarTextStyle". 檢索發現原因: 在 pages.json 文件中,navigationBarTextStyle 屬…

【甲烷數據集】EPA-美國2012-2020年網格化甲烷清單

目錄 數據概述 數據特征 數據版本與年份 排放源類型(示例) 時間變化處理 數據下載 參考 根據美國環保署(EPA)官網 《U.S. Gridded Methane Emissions》頁面 的內容,以下是對 美國網格化甲烷清單(Gridded Methane GHGI) 的詳細介紹。 數據概述 EPA-U.S. Gridded Methan…

【溫室氣體數據集】NOAA CCGG 飛機觀測溫室氣體

目錄 數據集概述 采樣方式 測量氣體 數據用途 觀測站點 NOAA CCGG 飛機觀測站點信息 項目特色 數據訪問 參考 NOAA 全球監測實驗室(Global Monitoring Laboratory, GML)提供的 Carbon Cycle Greenhouse Gases Aircraft Program 數據集是一個關于溫室氣體在大氣中垂直分布的觀…

FreeRTOS,互斥量 (Mutex)

1. 信號量 (Semaphore) 通俗理解:信號量就像停車場的空位計數器。當有車進入時,計數器減1;當有車離開時,計數器加1。如果計數器為0,新車必須等待直到有空位。 #include "FreeRTOS.h" #include "semphr.…

SQL查詢-設置局部變量(PostgreSQL、MySQL)

😋博主在工作中編寫復雜SQL語句時,經常需要替換查詢值進行測試。所以需要用到局部變量設置,可以減輕測試時的壓力。 目錄使用場景1.常規寫法2.局部變量寫法(1)PostgreSQL示例注意事項(2)MySQL示…

2962 統計最大元素出現至少k次的子數組

2962 統計最大元素出現至少k次的子數組 文章目錄2962 統計最大元素出現至少k次的子數組1 題目2 解答1 題目 給你一個整數數組 nums 和一個 正整數 k 。 請你統計有多少滿足 「 nums 中的 最大 元素」至少出現 k 次的子數組,并返回滿足這一條件的子數組的數目。 子…

【Java SE】基于多態與接口實現圖書管理系統:從設計到編碼全解析

文章目錄一、系統整體設計:分層與職責劃分系統模塊結構二、核心模塊詳解:從數據到功能1. Book包:數據封裝1.1 Book類:圖書實體1.2 BookList類:書架管理2. User包:多態的核心體現2.1 User抽象類:…