吴恩达机器学习103:SVM之大间隔分类器的数学原理
1.向量内积:
(1)假设有u和v这两个二维向量:
,接下来看一下u的转置乘以v的结果,u的转置乘以v也叫做向量u和向量v的内积,u是一个二维向量,可以将其在图上画出来,如下图所示向量u:

在横轴上它的值就是某个u_1,在纵轴上它的高度就是某个值u_2,即U的第二个分量,那么现在就容易得出向量u的范数,||u||就表示u的范数或者u的欧几里得长度,即
同理对于向量v而言,向量v有两个分量v1和v2,横轴是v1,纵轴是v2,因此向量v就会是下面这样的

接下来看看如何计算u和v的内积的,具体做法如下,将向量v投影到u上,因此需要做一个直角投影或者一个90度角的投影,如下将其投影到u上,接下来的就是要测一下p的长度,我们标记这条红线的长度 为p,因此p就是向量v在向量u上的投影长度或者说量,因此可以用u的内积乘以v,它的结果等于p乘上u的范数或者长度,即
,最后可以得出:
,这个公式会得出最终的答案,如果你进行相反的计算,只是把u和v交换一下即可。从上面的讨论可以知道,u的范数是一个实数,
,同时p也是一个实数,因此u的准直乘以v就是两个实数,也就是p的长度乘以u的范数,最后需要注意一点就是,如果你着眼于范数p,p实际上是有值的,即它可能是正值,也可能是负值。
(2)示例。如果u和v分别是如下的两个向量,如果u和v之间的夹角大于90度的话,我们将v投影到u上,

我们会得到下面这样的一个投影,红色的部分就是p的长度,这个时候u的转置乘以v就等于p乘以u的范数,
唯一不同的是这里的p值是负数,因此在内积的计算中,如果u和v之间存在夹角,如果夹角小于90度的话,那么这条红线的长度就是正值,相反如果这个夹角大于90度的话,那么这里的p值就是负数,两个向量的内积就是负数,

(3)SVM决策边界:我们首先忽略θ0,将其设置为0,为了更容易的画图,我们将特征数n设置为2,这样我们就只有两个特征向量x1,x2,现在我们看看这个支持向量机的优化目标函数,当n=2的时候,即我们只有两个特征向量时,这个式子可以写成
,因为我们只有两个参数θ1和θ2,所以接下来可以将其写成:
,括号中的这项就可以写成:
=||θ||,意思是我们将向量θ写成这样的形式:θ1 θ2,那么刚刚划线的这项就是θ的长度或者范数,如同这里的当θ0等于0的时候,那么这里的向量就是θ1和θ2向量的长度。因此这意味着我们的目标函数等于:
,所以对于优化目标函数来说,支持向量机做的是最小化参数θ的范数的平方。
(4)接下来我们需要考虑一下这些项θ的转置乘以x,然后深入理解一下他们的作用,给定一个参数θ以及给定一个样本x会等于什么呢?如下图所示,我们将θ和x都从向量的角度来进行考虑,

记住下图中的等式

即在上述条件下,即θ的转置乘以x(i),有大于等于1的,也有小于等于-1的
(5)当我们写入我们的优化目标函数后,没有了θ的转置乘以x(i),取而代之的是p(i)乘以θ的范数,所以可以写成下面的形式:

我们考虑一下上面的这个样本,然后继续使用之前的简化方法进行简化, 即θ0=0,让我们看看支持向量机会选择怎们样的边界,第一种选择方式:假设支持向量机选择这个决策边界,这并不是一个很好的选择,因为它的间距很小,离训练样本的距离很近,让我们看看为什么支持向量机为什么不选择它,对于这种参数,我们可以看到,参数向量θ事实上是与决策边界90度正交的。令θ0=0意味着决策边界必须通过原点(0,0),现在我们看一下这对于优化目标函数意味着什么?比如说这个样本,假设第一个样本x(1),

如果要考察样本到参数θ的投影,那么下图所示的短的红线就是p(1),他是非常短的

同样的对于下图的样本中,有一个样本为x(2),下图中的洋红色就是p(2),即样本在向量θ上的投影,p(2)实际上是一个负值,因为其实朝着相反的方向,这个向量与参数θ的夹角大于90度,因此p(2)的值就会小于0,我们发现,对于p(i)是非常小的数

我们考虑优化目标函数,就会发现,对于正样本而言,我们需要p(i)乘以θ的范数能够大于等于1,即
,但是如果这里的p(1)特别的小,这就意味着我们需要θ的范数特别大,即||θ||要比较大
相似的,对于负样本而言,我们需要p(2)乘以θ的范数小于或者等于-1,
,这里p(2)是一个非常小的数,唯一的办法就是让θ的范数特别大,但是优化目标函数需要做的是,找到一套参数θ,来使得其范数足够的小,因此这个对于选择参数向量而言不是一个好方向
在这里,决策树可以选择这样的一个决策树边界,现在的图像上会有很大的不同

如果这是,那么对应的参数θ的方向就是下面蓝色箭头的方向,决策边界是绿色边界,可以得到样本点的边界长度是p(1)

类似的可以做如下方式的投影,得到p(2),其中p(2)的值是小于0的,可以看到,p(1)和p(2)的长度明显比上面的计算长度要长,现在p(1)变大了,因此θ的范数就可以变小了

上面就意味着,通过选择下面的决策边界,而不是上面的那个决策边界,SVM可以使得参数θ的范数变小很多,也就是使得θ的范数的平方变小,这就是为什么svm会选择下面的假设函数,这就是svm是如何产生大间距分类现象的。
总结一下:
(1)下面这条绿色直线即绿色的决策边界,我们希望正负样本投影到θ的值足够的大,要做到这一点的唯一方式就是,让决策边界周围的点到决策边界保持大间距,这就是正样本和负样本之间的间隔,实际上间隔的值就是p1,p2,p3等值,通过让间距变大,svm最终可以输出一个比较小的θ范数,这就是支持向量机优化目标函数所做的,这就是为什么支持向量机最终会找到最大间距分类器的原因
(2)自始至终使得参数θ0=0的原因是使得决策边界始终过原点
吴恩达机器学习103:SVM之大间隔分类器的数学原理的更多相关文章
- ML:吴恩达 机器学习 课程笔记(Week1~2)
吴恩达(Andrew Ng)机器学习课程:课程主页 由于博客编辑器有些不顺手,所有的课程笔记将全部以手写照片形式上传.有机会将在之后上传课程中各个ML算法实现的Octave版本. Linear Reg ...
- [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...
- [吴恩达机器学习笔记]12支持向量机2 SVM的正则化参数和决策间距
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.2 大间距的直观理解- Large Margin I ...
- 吴恩达机器学习笔记43-SVM大边界分类背后的数学(Mathematics Behind Large Margin Classification of SVM)
假设我有两个向量,
- 吴恩达机器学习笔记(六) —— 支持向量机SVM
主要内容: 一.损失函数 二.决策边界 三.Kernel 四.使用SVM (有关SVM数学解释:机器学习笔记(八)震惊!支持向量机(SVM)居然是这种机) 一.损失函数 二.决策边界 对于: 当C非常 ...
- [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...
- 吴恩达机器学习笔记45-使用支持向量机(Using A SVM)
本篇我们讨论如何运行或者运用SVM. 在高斯核函数之外我们还有其他一些选择,如:多项式核函数(Polynomial Kernel)字符串核函数(String kernel)卡方核函数( chi-squ ...
- 吴恩达机器学习101:SVM优化目标
1.为了描述SVM,需要从logistic回归开始进行学习,通过改变一些小的动作来进行支持向量机操作.在logistic回归中我们熟悉了这个假设函数以及右边的sigmoid函数,下式中z表示θ的转置乘 ...
- Machine Learning——吴恩达机器学习笔记(酷
[1] ML Introduction a. supervised learning & unsupervised learning 监督学习:从给定的训练数据集中学习出一个函数(模型参数), ...
随机推荐
- IDEA的Python工程在inspections时提示:The JDK is not configured properly for this project. Inspection cannot proceed.
原因:IDEA将工程误认为了Java工程. 解决方法:如果确认这是个Python工程,修改*.iml文件,将下面的这一行删除 <orderEntry type="inheritedJd ...
- JMS学习(一)
转自:https://blog.csdn.net/jiuqiyuliang/article/details/46701559 1.基本概念 JMS是java的消息服务,JMS的客户端之间可以通过JMS ...
- echarts折线图,纵坐标数值显示不准确的问题解决
问题如图: 问题解决:将stack去掉或注释 如下图:
- ajaxform和ajaxgird中添加数据
ajaxform添加数据 ajaxform.setRecord(response.getAjaxDataWrap("dataWrapBill").getData()); ajaxg ...
- 使用多块GPU进行训练 1.slim.arg_scope(对于同等类型使用相同操作) 2.tf.name_scope(定义名字的范围) 3.tf.get_variable_scope().reuse_variable(参数的复用) 4.tf.py_func(构造函数)
1. slim.arg_scope(函数, 传参) # 对于同类的函数操作,都传入相同的参数 from tensorflow.contrib import slim as slim import te ...
- Django配置Mysql数据库 (Pycharm)
Django配置MySQL数据库方法 一.settings.py文件中修改数据库配置为下面的内容: # Database # https://docs.djangoproject.com/en/2.0 ...
- centos中切换图形与命令行界面
1.在命令行的centos中安装图形化 配置本地源 [root@localhost yum.repos.d]# yum clean all [root@localhost yum.repos.d]# ...
- 【内部】Fiddler设置代理请求的方式
1.2 打开Fiiddler,设置如图步骤: 3.添加规则: 4.这里选择第三个选项: 5.选中^开始,空格结束的如图内容.复制你要代理的地址.如:http://wap.cmread.com/nap/ ...
- Linux进程的虚拟内存
简介 用户进程的虚拟地址空间是Linux的一个重要的抽象:它为每个运行进程提供了同样的系统视图,这使得多个进程可以同时运行,而不会干扰到其他进程内存中的内容. 每个应用程序都有自己的线性地址空间,与所 ...
- Linux内存:物理内存管理概述
内存中的物理内存管理 概述 一般来说,linux内核一般将处理器的虚拟地址空间划分为2部分.底部比较大的部分用于用户进程,顶部则专用于内核. 在IA-32系统上,地址空间在用户进程和内核之间划分的典型 ...