svm分類器訓練詳細步驟_「五分鐘機器學習」向量支持機SVM——學霸中的戰斗機...

大家好,我是愛講故事的某某某。 歡迎來到今天的【五分鐘機器學習】專欄內容 --《向量支持機SVM》 今天的內容將詳細介紹SVM這個算法的訓練過程以及他的主要優缺點,還沒有看過的小伙伴歡迎去補番:

【五分鐘機器學習】向量支持機SVM——學霸中的戰斗機


在視頻的內容中,我們介紹了SVM的主要思想及Hard Margin SVM的優化過程。

在今天的專欄中,我們將填上視頻中的坑,本期專欄的主要內容有兩塊:

  1. 推導Hard Margin SVM兩個Margin Boundary之間的距離
  2. Soft-Margin SVM 的邏輯思路介紹

推導Hard Margin SVM兩個Margin Boundary之間的距離

我們假定一個Hard Margin SVM如下圖所示。

459d048b77b68e41455475e24b122d39.png

Fig1. Hard-Margin SVM實例

其中,決策分界面Decision Boundary的公式:

2fecafefbc8f9d91a5e9bb5abde8ce2b.png

Eq1. Decision Boundary

兩個邊界分界面Margin Boundary的公式:

ac00847171bc6149f4bf8ca876071506.png
7ae4be5f676686a4449ad208b6f58c05.png

Eq2. Margin Boundary

我們假定圖1中高光的點(

0cf1cb1c315d93b6dfe505526f1a4306.png

)在邊界分界面上面,即滿足Eq2中的條件b1x1+b2x2+b0 = +1(落在紅色的線上面)。那么根據點到直線的公式:

ff3ac21f129e900908d10b87ededf928.png

Eq3. 高光點HiSample到決策分界面DecBoundary的距離

根據定義:

d7157238d8fb44e61a15995851772182.png

所以Eq3可以寫成:

06685457313c7c53811bb9ee11dc7eca.png

Eq4. 高光點到決策分界面的距離

因為決策分界面正好在兩個邊界分界面的正中間,即兩個類別之間的間距為:

4217a2cdb6c7a3e6fd98c6045d21fea4.png

Eq5. 兩個邊界分界面之間的距離,即HardMargin

以上就是Hard-Margin SVM的兩個邊界分界面之間的距離的推導過程。


Soft-Margin SVM 的邏輯思路介紹

Soft-Margin SVM要解決的問題有兩個:

  1. 和Hard-MarginSVM一樣,需要最大化間距
  2. 在保證大局的正確性的同時,引入容錯率這個概念

對于第一點,如果你還記得我們的做法是將距離公式,轉化為Hard-margin SVM的Loss function。使其在最小化Loss的同時,也可以最大化Margin,即:

88f9a282a00b946a3bdc9ecdadc68de3.png

Eq6. Hard Margin SVM的Loss

在這個基礎上,我們引入Hinge Loss作為允許部分錯誤分類的過程。所以我們Soft-Margin SVM的Loss可以寫成:

e408357c0fe756ecf0993f8bc8b29084.png

Eq7. Soft Margin SVM的Loss

其中N表示樣本數量,C表示懲罰系數(Penalty Term),而Hinge loss 的部分為:

adf5caae4c0bfa244333aca46ce921be.png

Eq8. Hinge Loss 的定義

【重點】這里我們不妨仔細看下這個公式,他的邏輯分兩層,從內到外看:

  1. 對于下面的部分,他的計算結果表示錯誤分類的誤差和
adaf1db5d77c55062986c16be61d88ed.png

Eq9. Hinge Loss 的定義(2)

比如,當你y_n=1,并且b1x1+b2x2+b0=1時,表示通過分類器得到的結果和樣本真是標記相同,這個式子的輸出為0;反之,當你y_n=1,并且b1x1+b2x2+b0=-1時,表示通過分類器得到的結果和樣本真是標記相反,這個式子的輸出為2,表示為有誤差。

  1. max(0, ....) 這部分表示為取上面步驟的誤差計算結果和0這兩個數值中大的數值作為輸出

比如,如果SVM的分類結果沒錯,上面步驟的輸出應該是0,那么max(0,0)=0;

如果SVM的分類結果有誤,上面步驟的輸出應該大于0(比如2),那么max(0,2)=2;

【重點】所以通過這個部分,你可以看到優化Soft Margin SVM Loss的過程就是在平衡兩個點:1. 最大化間距(Hard SVM), 還是2. 允許部分誤差(Hinge Loss)。而為了更好的平衡這兩點,我們引入了懲罰因子C。當C變大時,意味著我們會更多的懲罰Hinge Loss,即盡可能少犯錯;當C變小時,意味著我們會盡可能懲罰Hard SVM,也就是Margin更大。


為了更好的理解,這里給你準備了一個例子,對比下Hard Margin SVM和Soft Margin SVM。可以看到Soft margin SVM 由于Hinge Loss的引入,增加了很多容錯率,從而保證大局上的正確率。

bac0104d7577a471a870f78ca8b768c8.png

Fig2. Toy Dataset example

8550c0a1ba77a25e534e596505b526f8.png

Fig3. Hard Margin SVM 分類結果

d9b9ba777b15615bf22dfb83f050fd70.png

Fig4. Soft Margin SVM分類結果


以上就是今天的【五分鐘機器學習】SVM篇的主要內容了。

如果你覺得本期內容有所幫助,歡迎素質三連。

您的支持將是我繼續發電的最大動力~

我是某某某

11b0de4c21ffd68c216751a48199c70e.png

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

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

相關文章

java一維數組的復制

題目 使用簡單數組(1)創建一個名為ArrayTest的類,在main()方法中聲明array1和array2兩個變量,他們是int[]類型的數組。(2)使用大括號{},把array1初始化為8個素數:2,3,5,7,11,13,17,19。(3)顯示array1的內容。(4)賦值array2變量等…

STL源碼剖析 數值算法 copy 算法

copy復制操作,其操作通過使用assignment operator 。針對使用trivial assignment operator的元素型別可以直接使用內存直接復制行為(使用C函數 memove或者memcpy)節約時間。還可以通過函數重載(function overloading)、型別特性(type traits)、偏特化(partial speci…

python輸入數字成數組_python – Numpy:將數值插入數組的最快方法,使得數組按順序排列...

假設我有一個數組my_array和一個奇異值my_val. (請注意,my_array始終排序). my_array np.array([1, 2, 3, 4, 5]) my_val 1.5 因為my_val是1.5,我想把它放在1和2之間,給我數組[1,1.5,2,3,4,5]. 我的問題是:當my_array任意增大時,生成有序輸出數組的最快方式(即以微…

java 一維數組的反轉

代碼 public class ReverseArray {public static void main(String[] args) {String[] str {"AA", "BB", "CC", "DD"};System.out.println(Arrays.toString(str));reverse1(str);System.out.println(Arrays.toString(str));reverse2…

STL源碼剖析 數值算法 copy_backward 算法

copy_backward 時間技巧和copy類似主要是將[first,last)區間范圍內的元素按照逆行方向復制到以result-1為起點,方向同樣是逆行的區間上返回的迭代器的類型是result - (last - first)copy_backward支持的類型必須是BidirectionalIterators ,才…

java線性查找和二分查找

線性查找 package lesson.l7_array;/*** Illustration** author DengQing* version 1.0* datetime 2022/6/23 14:19* function 線性查找*/ public class LineSearch {public static void main(String[] args) {String[]str{"AA","BB","CC"};boo…

python開發web項目_Django2:Web項目開發入門筆記(20)

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓 這一篇教程,我們一起來了解如何在CentOS系統中將Django2的Web項目部署到Nginx服務器。 CentOS系統雖然和Ubuntu系統都是Linux系統,但是環境搭建和部署過程還是有一些區別。 整個流程分為幾個部分&#xff1…

STL源碼剖析 Set相關算法 并集 set_union|交集 set_intersection|差集 set_difference |對稱差集 set_symmetric_difference

注意事項 四種相關算法:并集、交集、差集、對稱差集本章的四個算法要求元素不可以重復并且經過了排序底層接受STL的set/multiset容器作為輸入空間不接受底層為hash_set和hash_multiset兩種容器 并集 set_union s1 U s2考慮到s1 和 s2中每個元素都不唯一&#xff0…

python sqlserver 數據操作_python對Excel數據進行讀寫操作

python對Excel數據進行讀寫操作將學習到的基礎操作記錄在這里,便與復習查看1.python讀取Excel工作簿、工作表import xlrd # 讀取工作簿 wbxlrd.open_workbook(招生表.xls) # 讀取工作簿下所有的工作表 wswb.sheets() # 讀取工作簿下所有工作表名稱 wsnamewb.sheet_n…

Arrays數組工具類

介紹 代碼 package lesson.l8_arrays;import java.util.Arrays;/*** Illustration** author DengQing* version 1.0* datetime 2022/6/23 16:53* function Arrays數組工具類*/ public class ArraysUtil {public static void main(String[] args) {int[] arr1 new int[]{1, 12…

通過解析URL實現通過Wifi的用戶查找

使用鏈接 遇見數據倉庫|遇見工具|IP地址精確查詢|WIFI精確查詢|在線語音識別|夢幻藏寶閣估價|福利資源|自定義導航-met.redhttps://sina.lt/ 操作步驟 打開第一個鏈接,點擊高精度IP定位,然后點擊右上角,創建一個Key,隨便輸入一…

anaconda中怎么sh_【好工具】 深度學習煉丹,你怎么能少了這款工具!JupyterLab 遠程訪問指南...

歡迎來到【好工具】專欄,本次我們給介紹一款可以進行遠程深度學習煉丹的工具 JupyterLab 及其配置流程,幫助讀者在本地進行調試,Max 開發效率。作者 & 編輯 | Leong導言不知道讀者們有沒有發現,如果你用 Anaconda 中的 Notebo…

java 類和對象 屬性和行為 成員變量和局部變量

概念 使用 案例 public class PersonText {public static void main(String[] args) {Person person new Person();person.name "dq";person.age 11;person.eat("番茄炒蛋");} }class Person {/*** 姓名*/String name;/*** 年齡*/Integer age;/*** 方…

STL源碼剖析 數值算法 heap算法

算法 adjacent_findcountcount_iffindfind_iffind_endfor_eachgenerategenerate_nincludesmax_elementmergemin_elementpartitionremoveremoveremove_copyremove_ifremove_copy_ifreplacereplace_copyreplace_ifreplace_copy_ifreversereverse_copyrotaterotate_copysearchsea…

java 學生對象數組

題目 代碼 package lesson.l10_oop;/*** Illustration** author DengQing* version 1.0* datetime 2022/7/1 9:57* function*/ public class Student {int number;int state;int score;public static final int NUM 20;public static void main(String[] args) { // 對…

STL源碼剖析 lower_bound | upper_bound | binary_search

lower_bound 二分查找的一種版本,試圖在已經排序的區間內查找元素value,如果區間內存在和value數值相等的元素,便返回一個迭代器,指向其中的第一個元素。如果沒有數值相等的元素,會返回假設這個元素存在的前提下應該出…

java能調用python嗎_如何使用運行時在Java中調用python程序 - java

我想用來自Java的參數調用python程序。但是我的輸出是空白。代碼在這里。 Python代碼在這里: import sys print(sys.argv[1]) Java代碼在這里: public class PrintNumber{ public static void main(String[] args){ Process proc; try { proc Runtime.g…

java 匿名對象

概念 代碼 package lesson.l10_oop;/*** Illustration** author DengQing* version 1.0* datetime 2022/7/1 13:39* function 匿名對象*/ public class Anonymous {public static void main(String[] args) { // 用法1new Teacher().say("dq");new Teacher()…

STL源碼剖析 第七章 仿函數(函數對象)

函數對象&#xff1a;具有函數性質的對象使得用戶像使用函數一樣使用它一般函數提供兩個版本&#xff0c;第一個版本使用operator < ;第二版本需要用戶 指定某種操作第二版本就是設計一個函數&#xff0c;將函數指針作為算法的一個參數&#xff1b;或者將函數操作設計成為一…

開源合同管理系統_「物聯網架構」最適合物聯網的開源數據庫

物聯網產生大量的數據&#xff0c;包括流數據、時間序列數據、RFID數據、傳感數據等。要有效地管理這些數據&#xff0c;就需要使用數據庫。物聯網數據的本質需要一種不同類型的數據庫。以下是一些數據庫&#xff0c;當與物聯網一起使用時&#xff0c;會給出非常好的結果。物聯…