機器學習算法_支持向量機

一、支持向量機

  • 支持向量機只能做二分類任務

  • SVM全稱支持向量機,即尋找到一個超平面使樣本分成兩類,且間隔最大

  • 硬間隔:如果樣本線性可分,在所有樣本分類都正確的情況下,尋找最大間隔;如果出現異常值或樣本線性不可分,此時硬間隔無法實現

  • 軟間隔:允許部分樣本,在最大間隔之內,甚至在錯誤的一邊,尋找最大間隔;目標是盡可能保持間隔寬闊和限制間隔違例之間尋找良好的平衡

  • 懲罰系數:通過懲罰系數來控制這個平衡,C值越小,則間隔越寬,分錯的樣本個數也就越多;反之,C值越大,則間隔越窄,分錯的樣本個數越少

二、LinearSVC_API

class sklearn.svm LinearSVC(C = 1.0)
  • 示例
from plot_util import plot_decision_boundary_svc, plot_decision_boundary
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.svm import LinearSVCX, y = load_iris(return_X_y= True)x = X[y < 2, :2]
y = y[y < 2]plt.scatter(x[y == 0, 0], x[y == 0, 1], c = 'r')
plt.scatter(x[y == 1, 0], x[y == 1, 1], c = 'b')
plt.show()# 特征處理
transform = StandardScaler()
x_tran = transform.fit_transform(x)# 模型訓練
model = LinearSVC(C = 30)
model.fit(x_tran, y)
y_pre = model.predict(x_tran)
print(accuracy_score(y, y_pre))# 可視化處理
plot_decision_boundary_svc(model, axis = [-3, 3, -3, 3])
plt.scatter(x_tran[y == 0, 0], x_tran[y == 0, 1], c = 'r')
plt.scatter(x_tran[y == 1, 0], x_tran[y == 1, 1], c = 'b')
plt.show()# 模型訓練
model = LinearSVC(C = 0.01)
model.fit(x_tran, y)
y_pre = model.predict(x_tran)
print(accuracy_score(y, y_pre))# 可視化處理
plot_decision_boundary_svc(model, axis = [-3, 3, -3, 3])
plt.scatter(x_tran[y == 0, 0], x_tran[y == 0, 1], c = 'r')
plt.scatter(x_tran[y == 1, 0], x_tran[y == 1, 1], c = 'b')
plt.show()

三、SVM算法原理

要去求一組參數(w, b),使其構建的超平面函數能夠最優地分離兩個集合

樣本空間中任一點x到超平面(w, b)的距離可寫成: r = w T x + b ∣ ∣ w ∣ ∣ r = \frac{w^Tx+b}{||w||} r=∣∣w∣∣wTx+b?,想要找到具有最大間隔的劃分超平面,也就是要找到能滿足下式中約束的參數w和b,使得間隔 γ \gamma γ最大

? { w T x i + b ? + 1 , y i = + 1 ; w T x i + b ? ? 1 , y i = ? 1. \begin{cases} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i} + b \geqslant +1, & y_{i} = +1; \\ \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i} + b \leqslant -1, & y_{i} = -1. \end{cases} {wTxi?+b?+1,wTxi?+b??1,?yi?=+1;yi?=?1.?

距離超平面最近的幾個訓練樣本點使上式等號成立,他們被稱為“支持向量”,兩個異類支持向量到超平面的距離之和為(最大間隔距離表示): 2 ∣ ∣ w ∣ ∣ \frac{2}{||w||} ∣∣w∣∣2?

  • 訓練樣本: { w T x i + b ? + 1 , y i = + 1 ; w T x i + b ? ? 1 , y i = ? 1. \begin{cases} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i} + b \geqslant +1, & y_{i} = +1; \\ \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i} + b \leqslant -1, & y_{i} = -1. \end{cases} {wTxi?+b?+1,wTxi?+b??1,?yi?=+1;yi?=?1.?則目標函數可以寫成: m a x w , b = 2 ∣ ∣ w ∣ ∣ s . t . y i ( w T x i + b ) ? 1 ,其中 i = 1 , 2 , 3 , … , m max_{w, b} = \frac{2}{||w||}s.t.y_i(w^Tx_i+b) \geqslant 1,其中i=1,2,3,\dots, m maxw,b?=∣∣w∣∣2?s.t.yi?(wTxi?+b)?1,其中i=1,2,3,,m

  • 將目標函數進一步優化: m i n w , b = 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ? 1 , 其中 i = 1 , 2 , 3 , … , m min_{w, b} = \frac{1}{2}||w||^2 s.t.y_i(w^Tx_i+b) \geqslant 1,其中i = 1, 2, 3, \dots, m minw,b?=21?∣∣w2s.t.yi?(wTxi?+b)?1,其中i=1,2,3,,m

  • 添加核函數,將目標函數轉化成以下形式:KaTeX parse error: {align*} can be used only in display mode.

  • 構建拉格朗日函數:其中 α i \alpha_i αi?為拉格朗日乘子(相當于 λ i \lambda_i λi?): L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 ? ∑ i = 1 n α i ( 1 ? y i ( w T ? Φ ( x i ) + b ) ? 1 ) … … ① L(w, b, \alpha) = \frac{1}{2}||w||^2-\sum_{i = 1}^{n} \alpha_i\left(1 - y_{i} \left(\boldsymbol{w}^{\mathrm{T}} \cdot \boldsymbol{\varPhi}(x_{i}) + b\right)-1\right) \dots \dots ① L(w,b,α)=21?∣∣w2?i=1n?αi?(1?yi?(wT?Φ(xi?)+b)?1)……

  • 要想求得極小值,上式后半部分應該取的極大值: m i n w , b m a x α L ( w , b , α ) < = = > m a x α m i n w , b L ( w , b , α ) min_{w, b}max_{\alpha}L(w, b, \alpha) <==> max_{\alpha }min_{w, b}L(w, b, \alpha) minw,b?maxα?L(w,b,α)<==>maxα?minw,b?L(w,b,α)

  • 要找 m i n w , b L ( w , b , α ) min_{w, b}L(w, b, \alpha) minw,b?L(w,b,α),既要先對 w , b w, b w,b求導

    • w w w求偏導,并令其為0: L = 1 2 ∣ ∣ w ∣ ∣ 2 ? ∑ i = 1 n α i ( y i w T φ ( x i ) + y i b ? 1 ) = 1 2 ∣ ∣ w ∣ ∣ 2 ? ∑ i = 1 n α i y i w T φ ( x i ) + α i y i b ? α i L=\frac{1}{2}||w||^2-\sum_{i = 1}^n \alpha_i(y_iw^T \varphi(x_i)+y_ib-1)=\frac{1}{2}||w||^2-\sum_{i = 1}^n \alpha_iy_iw^T \varphi(x_i)+\alpha_iy_ib-\alpha_i L=21?∣∣w2?i=1n?αi?(yi?wTφ(xi?)+yi?b?1)=21?∣∣w2?i=1n?αi?yi?wTφ(xi?)+αi?yi?b?αi?

      ? L ? w = w ? ∑ i = 1 n α i y i φ ( x i ) = 0 \frac{\partial L}{\partial w}= w-\sum_{i = 1}^n\alpha_iy_i \varphi(x_i) = 0 ?w?L?=w?i=1n?αi?yi?φ(xi?)=0

      得到: w = ∑ i = 1 n α i y i φ ( x i ) = 0 w =\sum_{i = 1}^n\alpha_iy_i \varphi(x_i) = 0 w=i=1n?αi?yi?φ(xi?)=0

    • 對b求偏導,并令其為0:
      L = 1 2 ∣ ∣ w ∣ ∣ 2 ? ∑ i = 1 n α i y i w T φ ( x i ) + α i y i b ? α i L = \frac{1}{2}||w||^2-\sum_{i = 1}^n \alpha_iy_iw^T\varphi(x_i)+\alpha_iy_ib-\alpha_i L=21?∣∣w2?i=1n?αi?yi?wTφ(xi?)+αi?yi?b?αi?

      ? L ? b = ∑ i = 1 n α i y i = 0 \frac{\partial L}{\partial b}=\sum_{i = 1}^n\alpha_iy_i=0 ?b?L?=i=1n?αi?yi?=0
      得到: ∑ i = 1 n α i y i = 0 \sum_{i = 1}^n\alpha _iy_i = 0 i=1n?αi?yi?=0

  • 將上面兩個求導的結果代入①式中,得到:KaTeX parse error: {align*} can be used only in display mode.

四、SVM核函數

  • 核函數作用:核函數將原始輸入空間映射到新的特征空間,從而使原本線性不可分的樣本可能在核空間可分
  • 核函數分類
    • 線性核: k ( x i , x j ) = x i T x j k(x_i, x_j)=x_i^Tx_j k(xi?,xj?)=xiT?xj?
    • 多項式核: k ( x i , x j ) = ( x i T x j ) d k(x_i, x_j) = (x_i^Tx_j)^d k(xi?,xj?)=(xiT?xj?)d
    • 高斯核(RBF, 徑向基函數): k ( x I , x j ) = e p x ( ? ∣ ∣ x i ? x j ∣ ∣ 2 2 σ 2 ) k(x_I, x_j) = epx(-\frac{||x_i-x_j||^2}{2\sigma^2}) k(xI?,xj?)=epx(?2σ2∣∣xi??xj?2?)——產生將樣本投射到無限維空間的運算效果,使得原來不可分的數據變得可分,使用最多
    • 拉普拉斯核: k ( x i , x j ) = e x p ( ? ∣ ∣ x i ? x j ∣ ∣ 2 σ ) k(x_i, x_j)=exp(-\frac{||x_i-x_j||^2}{\sigma}) k(xi?,xj?)=exp(?σ∣∣xi??xj?2?)
    • Sigmod核: k ( x i , x j ) = t a n h ( β x i T x j + θ ) k(x_i, x_j) = tanh(\beta x_i^Tx_j+\theta) k(xi?,xj?)=tanh(βxiT?xj?+θ)

1.高斯核

  • 公式: K ( x , y ) = e ? γ ∣ ∣ x ? y ∣ ∣ 2 K(x, y) = e^{-\gamma||x-y||^2} K(x,y)=e?γ∣∣x?y2,其中 γ = 1 2 σ 2 \gamma=\frac{1}{2\sigma^2} γ=2σ21?

    • γ \gamma γ是超參數,作用與標準差相反, γ \gamma γ越大(標準差越小),高斯分布越窄, γ \gamma γ越小,高斯分布越寬
  • API( γ \gamma γ較大,過擬合; γ \gamma γ較小,欠擬合)

from sklearn.svm import SVC
SVC(kernel = 'rbf', gamma=gamma)

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

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

相關文章

Linux : echo ~ tail 重定向符

&#x1f680; Linux 常用命令詳解&#xff1a;echo、tail 與重定向符號全解析&#xff08;含通俗案例&#xff09; &#x1f4c5; 更新時間&#xff1a;2025年6月17日 &#x1f3f7;? 標簽&#xff1a;Linux基礎 | Shell命令 | echo | tail | 輸出重定向 | Linux入門 文章目錄…

uniapp的更新流程【安卓、IOS、熱更新】

UniApp應用更新方案 兩種更新方式 APP全量升級&#xff1a;需要重新下載安裝包熱更新&#xff1a;通過下載wgt資源包實現&#xff0c;用戶只需重啟應用 Android更新實現 用戶需要授權安裝權限&#xff0c;流程為下載APK后自動彈出安裝界面 var dtask plus.downloader.cre…

火山引擎解碼生態型增長鐵律

“技術流量與力量的崛起&#xff0c;本質上是一場生態規模的競賽。每次浪潮的排頭兵&#xff0c;都是指尖沾著代碼的開發者——互聯網時代的Linux社區讓開源席卷全球&#xff0c;移動互聯網的App Store催生百萬開發者&#xff0c;而今天&#xff0c;大模型正在用API重構產業。”…

警惕GO的重復初始化

go的初始化方式有很多種&#xff0c;在某些情況下容易引起重復初始化導致錯誤。 事例如下&#xff1a; 當使用gorm連接數據庫時定義了全局DB var DB *gorm.DB 但是在后面某個函數內部初始化時導致DB重新初始化變成了局部變量&#xff0c;導致原來的全局變量DB還是nil func I…

python校園服務交流系統

目錄 技術棧介紹具體實現截圖系統設計研究方法&#xff1a;設計步驟設計流程核心代碼部分展示研究方法詳細視頻演示試驗方案論文大綱源碼獲取/詳細視頻演示 技術棧介紹 Django-SpringBoot-php-Node.js-flask 本課題的研究方法和研究步驟基本合理&#xff0c;難度適中&#xf…

AlexNet:圖像分類領域的里程碑網絡及其創新剖析

文章目錄 前言AlexNet一、網絡的背景二、網絡結構三、網絡的創新3.1 首次使用GPU訓練網絡3.2 使用Relu激活函數3.2.1 sigmoid激活函數和tanh激活函數3.2.1.1 sigmoid激活函數3.2.1.2 tanh激活函數 3.3 Relu激活函數3.4 使用LRN局部響應歸一化(已棄用)3.4.1 LRN的定義與起源3.4.…

iOS性能調優實踐:結合KeyMob等多個工具提升應用穩定性與流暢度

在iOS應用開發中&#xff0c;性能問題往往難以通過單一工具輕松解決。尤其是當App面臨用戶反饋的流暢度差、卡頓嚴重、內存泄漏等問題時&#xff0c;開發者需要依靠多種工具的組合&#xff0c;才能有效地排查和優化性能瓶頸。 在我們最近的一個項目中&#xff0c;開發團隊在處…

球形波方程的推導與解法

題目 問題 6. 一個球形波是三維波動方程的解,形式為 u ( r , t ) u(r,t) u(r,t),其中 r r r 是到原點的距離(球坐標)。波動方程的形式為: u t t = c 2 ( u r r + 2 r u r ) (球形波方程) . u_{tt} = c^{2} \left( u_{rr} + \frac{2}{r} u_{r} \right) \quad \text{(球形…

自動打電話軟件設計與實現

文章目錄 方案概述實現代碼1. 安裝必要的庫2. 主程序代碼3. HTML模板 (templates/index.html) 功能說明部署說明擴展功能建議注意事項 方案概述 使用Twilio的API進行電話呼叫實現基本的呼叫邏輯添加簡單的用戶界面 實現代碼 1. 安裝必要的庫 pip install twilio flask2. 主…

RedissonLock源代碼分析與鎖應用

文章目錄 前言一、RedissonLock源代碼分析1.1 嘗試加鎖2.2 解鎖 二、鎖業務應用1.服務層方法注解方式 注入鎖1.1 定義DistributedLock 注解類1.2 定義DistributedLockAspect 切片類1.3 嘗試獲取鎖代碼片斷1.4 釋放鎖代碼片斷1.5 服務層注入鎖注解 2.代碼行加鎖2.1 pom.xml文件引…

深入理解mysql索引

一、什么是索引&#xff1f; 索引&#xff08;Index&#xff09; 是數據庫管理系統中一種特殊的數據結構&#xff0c;存儲在磁盤上。它包含對數據表中一列或多列的值進行排序&#xff0c;并存儲了指向表中實際數據行物理位置或主鍵值的引用指針。可以把它類比為書籍的目錄&…

VMware vSphere Foundation 9.0 技術手冊 —— Ⅰ 安裝 ESXi 9.0 (虛擬機)

目錄 1. 安裝 ESXi 9.0 (虛擬機)&#xff08;1&#xff09;ESXi Standard Boot Menu&#xff08;2&#xff09;ESXi 安裝導向&#xff08;3&#xff09;最終用戶許可協議&#xff08;4&#xff09;選擇系統盤&#xff08;5&#xff09;選擇鍵盤類型&#xff08;6&#xff09;設…

UE5 游戲模板 —— TopDownGame 俯視角游戲

UE5 游戲模板 —— TopDownGame 俯視角游戲 前言一、模塊導入二、TopDownGameMode三、TopDownPlayerController1、構造函數2、SetupInputComponent初始化新輸入系統處理輸入邏輯 四、TopDownCharacter五、射線檢測總結 前言 上一篇文章介紹了一下PuzzleGame模板的流程&#xf…

基于深度學習的智能圖像分割系統:技術與實踐

前言 圖像分割是計算機視覺領域中的一個核心任務&#xff0c;其目標是將圖像劃分為多個有意義的區域或對象。圖像分割在醫學影像分析、自動駕駛、安防監控等多個領域有著廣泛的應用。近年來&#xff0c;深度學習技術&#xff0c;尤其是卷積神經網絡&#xff08;CNN&#xff09;…

【學習筆記】2.2 Encoder-Decoder

參考資料&#xff1a;https://github.com/datawhalechina/happy-llm 在 Transformer 中&#xff0c;使用注意力機制的是其兩個核心組件——Encoder&#xff08;編碼器&#xff09;和 Decoder&#xff08;解碼器&#xff09;。 2.2.1 Seq2Seq 模型 Seq2Seq&#xff08;序列到…

# 材料力學押題

材料力學押題 文章目錄 材料力學押題第一題第二題組合變形彎曲變形 第一題 Q 求力作用的銷釘位置的豎直偏移距離。 S 方法一:能量方法 材料應變能計算為: U ∫ 內力 2 2 剛度 d A U\int \frac{\text{內力}^2}{2\times 剛度}\text{d}A U∫2剛度內力2?dA 克拉珀龍原理&…

uniapp項目之小兔鮮兒小程序商城(一) 項目介紹,技術棧,小程序的基礎架構,封裝攔截器和請求函數

文章目錄 一.項目介紹和前置內容1.重要鏈接2.技術棧 二.創建uniapp項目1.使用HBuilderX創建2.使用命令行創建3.如何使用vscode開發uniapp項目?step1:把項目拉入vscode,開始下相關插件step2:ts類型校驗step3:設置json文件可以允許注釋 4.pages.json文件的作用是什么?5.示例:在…

Uniapp H5端SEO優化全攻略:提升搜索引擎排名與流量

在移動互聯網時代&#xff0c;H5頁面因其跨平臺、低成本、易傳播的特性&#xff0c;成為許多企業的首選。Uniapp作為一款優秀的前端跨端開發框架&#xff0c;能夠快速開發H5、小程序、App等多端應用。然而&#xff0c;由于Uniapp默認采用SPA&#xff08;單頁應用&#xff09;架…

一[3.3]、ubuntu18.04環境 利用 yolov8 實現列車軌道檢測,并提取正確的軌道線【全網最詳細】

一、參考文獻 https://blog.csdn.net/u010117029/category_12977729.html 一[3.2]、ubuntu18.04環境 利用 yolov8 訓練開源列車數據集,并實現列車軌道檢測【全網最詳細】-CSDN博客 火車軌道鐵路軌道檢測識別(附帶Python源碼+詳細解析)_軌道點云提取鐵軌代碼-CSDN博客

pp-ocrv5中的改進-跨階段特征融合(CSP-PAN)以及在 Neck 部分引入 CSP-PAN后為何就能解決小文本漏檢問題?

好的&#xff0c;我們來詳細解析一下 PP-OCRv5 中的**跨階段特征融合&#xff08;CSP-PAN&#xff09;**改進&#xff0c;以及它如何有效解決小文本漏檢問題。 背景&#xff1a;PP-OCR 的 Neck 部分與 PAN 在 PP-OCRv3 及之前的版本中&#xff0c;Neck 部分使用的是標準的 **…