什么是支持向量機(Support vector machine)和其原理

作為機器學習的基礎算法,SVM被反復提及,西瓜書、wiki都能查到詳細介紹,但是總是覺得還差那么點,于是決定自己總結一下。

一、什么是SVM?

1、解決什么問題?

SVM,最原始的版本是用于最簡單的線性二分類問題。當我們被給了一個新的數據點,其形式是一個p-維的向量,我們想知道它應該屬于被一個(p-1)-維超平面分開的兩半中哪一半。那么我們就想要通過已有數據找到“最有代表性的”超平面。這個超平面就是我們的分類標準。因為我們用到的是超平面而不是曲面,所以這是一個線性的問題。(加入核方法等可以改進為非線性分類)

2、怎么找超平面??

以下是一個取p=2的示例圖,從圖里可以看出,有許多超平面可以對數據進行分類。(在二維,超平面就是一條直線,需要確定直線的斜率和截距。)最佳超平面的一個合理選擇是代表兩個類別之間最大分離度或邊際的超平面。因此,我們在選擇超平面時,要使它到兩側最近數據點的距離最大。如果存在這樣一個超平面,它就被稱為最大邊際超平面(maximum-margin hyperplane),而它所定義的線性分類器就被稱為最大邊際分類器(maximum-margin classifier);或者等同于最佳穩定性感知器(the perceptron of optimal stability)。【from wiki】

3、如何定義“最大距離”?

這一步博客?

支持向量機(SVM)——原理篇

里講的很清晰了,基本也和西瓜書一致,我就不加贅述,簡而言之,就是設出超平面的參數方程,代入求距離最近的點(min),再調整參數方程讓最近的點距離盡量遠(max)。

這種二次規劃問題,一眼要用到拉格朗日乘子法求對偶問題,都是很基礎的優化方法。

最終得到:

4、為什么叫“支持向量機”?

接下來這段話很簡單但是清晰說明了SVM的本質:

?也就是說,最終我們只會考慮支持向量。

定義:距離超平面最近的幾個訓練樣本點使得\alpha_i \neq 0,這幾個樣本(由向量表示)被稱為支持向量。兩個異類支持向量到超平面的距離之和為\frac{2}{||\omega||},被稱為間隔(margin)。

5、總結

SM,就是把分類問題或者回歸問題,轉化為基于已知的分類點求一個分類效果最好的分割超平面,進而可以用優化方法求解。

二、一些特殊的優化技巧??

1、核方法

a. 解決什么問題?

?基礎的SVM需要假設所有樣本是線性可分的,但是實際任務可能不是,而是需要一個曲面。

對這樣的問題,可將樣本從原始空間映射到一個更高維的特征空間,使得樣本在這個特征空間內線性可分:例如在圖6.3中,若將原始的二維空間映射到一個合適的三維空間,就能找到一個合適的劃分超平面,幸運的是,如果原始空間是有限維,即屬性數有限,那么一定存在一個高維特征空間使樣本可分。【引自西瓜書】

b.如何實現?

簡單來說,就是找一個映射,把原本的數據\vec{x}映射到\phi(\vec{x}),通過推演我們發現

具體實現細節可以參考西瓜書或者以下博客:?
j??????????????淺入淺出核方法 (Kernel Method) - 知乎

2、軟間隔

a. 解決什么問題?

即使我們用了核方法讓原本不是線性可分的數據變得貌似線性可分,我們也不知道是不是過擬合了,緩解方法之一就是允許算法在一些樣本上出錯、也就是把硬間隔變成軟間隔。

那么問題就變成如何讓不滿足約束的樣本盡量少。?

線性SVM之硬間隔和軟間隔的直覺和原理 - 知乎

這個講得還挺清晰的。。。????????

?

三、支持向量回歸

回歸問題和分類問題不同,分類是希望樣本盡量遠離預測的超平面,而回歸是希望樣本盡量靠近預測的超平面。一般來說就是落入間隔帶。?

細節不表。可參考西瓜書。

參考文獻:

[1]?https://en.wikipedia.org/wiki/Support_vector_machine

[2]《機器學習》周志華

[3]支持向量機(SVM)——原理篇

[4]淺入淺出核方法 (Kernel Method) - 知乎?

[5]?線性SVM之硬間隔和軟間隔的直覺和原理 - 知乎

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

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

相關文章

藍橋杯備賽第五篇(動態規劃)

1.數位dp public class Main {static long[] limit;static int length;static long[][] dp;public static long dfs(int pos, int pre, boolean flag, boolean lead) {if (pos length) return 1;if (!flag && !lead && dp[pos][pre] ! -1) return dp[pos][pr…

總結 HashTable, HashMap, ConcurrentHashMap 之間的區別

1.多線程環境使用哈希表 HashMap 不行,線程不安全 更靠譜的,Hashtable,在關鍵方法上加了synchronized 后來標準庫又引入了一個更好的解決方案;ConcurrentHashMap 2.HashMap 首先HashMap本身線程不安全其次HashMap的key值可以為空(當key為空時,哈希會…

【Java數據結構】——五道算法題讓你靈活運用Map和Set

目錄 一.只出現一次的數字 二.寶石與石頭 三.舊鍵盤 四.給定一個數組,統計每個元素出現的次數 五.前K個高頻單詞 一.只出現一次的數字 136. 只出現一次的數字 - 力扣(LeetCode) 算法原理:我們將nums中每個元素都存入到set中…

C/C++嵌入式開發環境搭建,Qt交叉編譯,cmake交叉編譯,clion/vscode遠程開發

目錄 交叉編譯簡介cmake 交叉編譯clion 交叉編譯vscode 遠程嵌入式開發Qt交叉編譯1.安裝交叉編譯工具2.交叉編譯qt庫3.將交叉編譯的Qt庫復制到板子上4.安裝和配置 Qt Creator,支持交叉編譯5.QT嵌入式開發6.QT嵌入式開發報錯解決QIconvCodec::convertToUnicode: usin…

ASUS華碩天選5筆記本電腦FX607JV原裝出廠Win11系統下載

ASUS TUF Gaming F16 FX607JV天選五原廠Windows11系統 適用型號: FX607JU、FX607JI、FX607JV、 FX607JIR、FX607JVR、FX607JUR 下載鏈接:https://pan.baidu.com/s/1l963wqxT0q1Idr98ACzynQ?pwd0d46 提取碼:0d46 原廠系統自帶所有驅動、…

TypeScript中 “ <> “ 語法 和 “ : “ 怎么使用

在 TypeScript 中&#xff0c;尖括號語法(<Type>)和as關鍵字(value as Type)都是用于類型斷言&#xff0c;而冒號(:)用于類型注解。這三種語法在不同的場景下使用&#xff1a; 尖括號語法和as關鍵字&#xff1a; 尖括號語法(<Type>value)&#xff1a; 這種語法在…

[LeetBook]【學習日記】鏈表反轉

來源于「Krahets」的《圖解算法數據結構》 https://leetcode.cn/leetbook/detail/illustration-of-algorithm/ 鏈表反轉的遞歸要點 遞歸終止條件為當前節點為空&#xff0c;表明遍歷到了鏈表尾部遞歸函數傳入參數為當前節點的下一個節點按照是否重新開辟存儲空間分類下面只寫…

python自動化學習--3.8python操作EXCEL文件python日志收集處理

1、Excel文件處理 安裝 openpxl 第三方庫 openpxl 模塊三大組件: 1、工作簿 &#xff08;包含多個sheet工作表&#xff09; 2、工作表 &#xff08;某個數據包含在某個工作表&#xff09; 3、單元格 1、創建excel工作簿 import openpyxl"""Excel表格的創建…

【簡說八股】Spring事務失效可能是哪些原因?

Spring事務介紹 Spring事務是指在Spring框架中對數據庫操作進行管理的一種機制&#xff0c;它確保一組數據庫操作要么完全執行成功&#xff08;提交&#xff09;&#xff0c;要么完全不執行&#xff08;回滾&#xff09;&#xff0c;從而保持數據一致性和完整性。 Spring框架…

GotoXy控制臺光標的位置更新

光標控制解釋 控制臺的光標更新方法, 用于控制數據輸出位置 void gotoXY(int x, int y)//新函數&#xff1a;更新光標 {COORD c;c.X x;c.Y y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c); }代碼解釋 這段代碼定義了一個名為 gotoXY 的函數&#xff0c;…

設計模式-裝飾者模式應用實踐

裝飾者模式&#xff08;Decorator Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許動態地向一個現有的對象添加新的功能&#xff0c;同時不改變其結構。這種模式通過創建一個裝飾類來包裝原有的類&#xff0c;提供額外的行為。 下面是一個使用 Java 實現裝飾者模式…

【Spring Boot】實現全局異常處理

1.定義基礎異常接口類 /*** description: 服務接口類* author: MrVK* date: 2021/4/19 21:39*/ public interface BaseErrorInfoInterface {/*** 錯誤碼* return*/String getResultCode();/*** 錯誤描述* return*/String getResultMsg(); } 2.定義錯誤處理枚舉類 /*** desc…

小伙伴詢問AI該怎么學習?本人的一點總結,以思維導圖呈現

如有需要思維導圖的在后臺請留郵箱&#xff0c;相關知識結構目錄 部分導圖

nn.Linear() 使用提醒

原本以為它是和nn.Conv2d()一樣&#xff0c;就看第二個維度的數值&#xff0c;今天才知道&#xff0c;它是只看最后一個維度的數值&#xff01;&#xff01;&#xff01; 例子1 Descripttion: Result: Author: Philo Date: 2024-02-27 14:33:50 LastEditors: Philo LastEditT…

git使用merge命令把dev分支的mian.js文件和src下面的vuex文件夾以及config文件夾單獨合并到master分支上

使用 git merge 命令來單獨合并特定文件或文件夾到另一個分支通常不是最直接的方法&#xff0c;因為 merge 命令是用來合并兩個分支的所有更改的。然而&#xff0c;你可以通過 git cherry-pick 命令或者通過創建臨時補丁&#xff08;patch&#xff09;來實現這一點。 下面是一個…

秒殺的時候怎么使用Redis?

商品信息存儲&#xff1a;在Redis中存儲秒殺商品的庫存信息。可以使用Redis的Hash數據類型&#xff0c;將商品ID作為字段&#xff0c;庫存數量作為值存儲在Hash中。例如&#xff0c;HSET seckill_goods stock_1 100表示商品ID為stock_1的商品庫存數量為100。 秒殺訂單存儲&…

如何使用“Ubuntu 20.04桌面版,安裝MariaDB數據庫“?win10系統?

1、更新軟件包 sudo apt update 2、 安裝MariaDB服務器和客戶端 sudo apt install mariadb-server mariadb-client 3、 查看MeriaDB是否運行 service mysql status :q"退回命令行狀態 4、 設置MariaDB root用戶的密碼 sudo mysql_secure_installation 5、 MariaD…

斐波那契數列模型----三步問題

面試題 08.01. 三步問題 - 力扣&#xff08;LeetCode&#xff09; 1、狀態表示&#xff1a; 題目要求&#xff1a;上到n階臺階&#xff0c;有多少種方法。那么n逐漸簡化&#xff0c;上1階臺階有多少種方法&#xff1b;上2階臺階有多少種方法……直到上n階臺階有多少種方法。 …

c++ [[nodiscard]]關鍵字詳解

如果一個函數聲明了[[nodiscard]]&#xff0c;則該函數的返回值不能沒有承接&#xff0c;如果沒有承接&#xff0c;就會編譯報warning [[nodiscard]]是c17新特性&#xff0c;但本地用c11標準編譯也能編譯過&#xff0c;尚不清楚原因&#xff0c;c20加入了warning后的額外文字描…

代碼隨想錄第45天|● 70. 爬樓梯 (進階) ● 322. 零錢兌換 ● 279.完全平方數

文章目錄 ● 70. 爬樓梯 &#xff08;進階&#xff09;思路&#xff1a;- 排列 先value后weight代碼&#xff1a; ● 322. 零錢兌換思路&#xff1a;代碼 ● 279.完全平方數思路&#xff1a;代碼 ● 70. 爬樓梯 &#xff08;進階&#xff09; 思路&#xff1a;- 排列 先value后…