每天进步一点点《ML - 支持向量机》

一些前提的约定,还是沿用上篇文章的哈。先来致敬下男神。
在这里插入图片描述

一:支持向量机(support vector machine)
在感知机那一章节我们讲了,对样本的分类过程中,可以用维度空间内的某个超平面划分开来。Let’s recape it。
在这里插入图片描述
在这里插入图片描述

也就是在超平面的一边是正样本,一边是负样本。换句话说也就是如果我们通过模型计算出的值大于0,通过激活函数sign,为(+1),我们认为是正样本,反之则是负样本。
看似挺好的哈。但是我们还会发现一个问题,就是仅仅是超平面本身来划分样本空间,这样的超平面是有很多很多的,如下图。
在这里插入图片描述

也就是说我们可以得到无穷个感知机模型,但是哪个更优一些呢?
我们希望存在这么一个感知机,能够使得样本分的更加开一些,最大程度的开一些,这样对后面预测的样本就有更大的容错性。用专业的术语就是找到几何间隔最大的分离超平面,这个是唯一的。如下图所示:
在这里插入图片描述

我们找到了这么一个wx+b=0的超平面,它不仅仅将样本区分开,而且区分的很好,中间留下了很大的间距,虽然预测样本的时候还是使用的sign函数(wx+b>0则y=+1,反之wx+b<0则y=-1),但是在这样超平面划分后,在以后预测新的样本的时候,就会多一些容错性,中间有一块最大的缓冲空间间距,不至于样本轻易过线导致预测错误。
所以,基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。当然这个是在样本的训练过程中,真正在使用预测的时候还是感知机一样。

二:数学模型
在感知机的训练过程中,只需要wx+b>0则y=+1,在SVM要求更高一些必须使得wx+b>=K则y=+1,这里的K是一个大于0的实数;相对应的,在SVM中预测一个负样本y=-1,不再仅仅要求wx+b<0,而是要求wx+b<=-K。这样训练的要求更高了(好比是训练的时候对自己要求搞一单,苦一点,用的时候才更好一点嘛,平常训练刚刚过,或者得过且过,那么真正用的时候掉链子的概率就会增大),总结一下,在训练过程中要求。

在这里插入图片描述
在这里插入图片描述

上述式子合并得式子的约束st:y*(w⋅x+b) >=1。
st是 subject to受限于,的意思,也就是式子的约束。

三:代价函数
又来了又来了!又是代价函数。这里很关键,是理解SVM的关键。
我们希望,训练样本到超平面都是有保持一定的距离,当然了,尽可能希望这个距离尽可能大,但是需要保持最低要求,so what is it?。我们多次谈到w和x可以看做是连个向量,他们的内积可以看做是X向量在W向量的投影长度乘以cos(θ)再乘以W的范式。我们改写一下这个式子(请忽略b,上一博文也说了这个wx+b 化成Z = θ^T X的形式):
在这里插入图片描述

如果样本为正,就需要 y >= 1。
如果样本为负,就需要 y <= -1。
也就是 |y| >= 1
也就是 |p| * ‖θ‖ >= 1,得|p| >= 1/‖θ‖ ,把请把θ理解成w。
也就是每个点到wx+b=0的距离最低值应该是1/‖w‖ ,也就是离直线最近的那个点到直线的距离是1/‖w‖ 。这个也就是在上图中标注的那个最大程度撑开的间距的大小2/‖w‖ 的由来,取决于最近的那个点的位置(st:y*(w⋅x+b) >=1)。
所以说,现在我们需要尽量最大化1/‖w‖ , 才能保证所有点到直线的距离的最小值能撑最大,也就是距离直线最近的那个点到直线的距离尽可能大。
从数学上讲,最大化1/‖w‖ ,也就是最小化1/2 ‖w‖^2,这里用1/2和平方纯属是为了求导方便。诶,桥豆麻袋,又是一种最小值到最大值的转换,再一次印证了最小化和最大化是可以相互转换的,这里又体现了一种方法(st:y*(w⋅x+b) >=1)。我们得到

在这里插入图片描述

其实吧,这里这个式子,长得是不是有点像正则化的式子?在Andrew Ng是机器学习视频里是从正则化的角度推出来的这个代价函数。大概说一下吧,Andrew Ng还是用的是逻辑回归的代价函数加正则化的代价函数,只不过,他给了一点变化进去,他将w⋅x+b≥1的代价值定义为0,w⋅x+b≤-1的代价值也定义为0(因为判定条件更严格了,所以效果更好了,所以给点奖励,直接将这两个区间的代价值定义为0)。这样一来,在训练样本满足这样条件下的时候,代价函数就只剩下一个正则项,也就是我们上述推导那个代价函数式子,还不懂?没关系,会我们第一个推导就行。

四:求解代价函数最优值
在这里插入图片描述

之类是有个约束条件的,也有最小化函数,哈哈,名词出来了,拉格朗日乘数法,
在这里插入图片描述

五:核函数
以上内容,包括之前学习到的感知机,都是对线性可分的空间做划分的,或者是对稍微线性可分的空间做划分的。
啥是线性可分?线性可分就是说可以用一个线性函数把两类样本分开,比如二维空间中的直线、三维空间中的平面以及高维空间中的线性函数。
请看如下二维图(来自网络):
在这里插入图片描述
在这里插入图片描述

在低维度空间下,线性不可分的样本,在高维度的情况下是说不定就是线性可分的了,因此SVM的一个技巧就是将低维度的数据映射到高纬度去,在高维度使用SVM算法进行最大间距的线性划分。
这个映射怎么做呢?增加特征,比如特征多项式,增加高次项,都是办法。
SVM有一套核函数,就是将数据现在低维度进行运算,再映射到高纬度,减少高纬度下的计算量。
核函数的种类如下:
在这里插入图片描述

总结一下,核函数只是一个SVM的一个技巧,是用来处理线性不可分样本的一个技巧,真正的SVM思想就是最大间距分类。

暂时告一段落,这里对SVM的基本认识先到这里,后面用Python跑svm库的时候再进行实践,敬请期待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值