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.mzph.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;会给出非常好的结果。物联…