您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
     
   
 订阅
  捐助
从零开始学习SVM
 
232 次浏览     评价:  
 2018-8-9
 
编辑推荐:

本文来源于csdn,从最简单的视角分享机器学习的过程,从零开始一点一滴学习SVM算法。

SVM是最经典的分类算法之一,笔者觉得难度却是机器学习算法中最难的,对于没有数学基础的同学来说更是一头雾水。笔者作为一个初入机器学习的小白,希望能从最简单的视角分享我的学习过程,从零开始一点一滴学习SVM算法。

一、首先,什么是svm,它能够做什么?

它是一种二分类模型,解决是非的问题。

以对图像猫狗分类为例:

1.下载CIFAR数据集,数据集中有10类,我只取两类:猫、狗

2.获取猫狗混合的训练样本集,D={(x1,y1),(x2,y2),?,(xn,yn) },yiε {?1,+1 }

3.训练样本获取分割超平面

4.正确分开不同类别样本,保存模型

5.输入测试数据,进行预测

如果是应用,只想把这个算法当作工具那么以上就足够了,可以应用tensorflow、sklearn以及最近很流行,也是令我非常好奇的框架pytorch,输入相关的参数就可以进行训练

如何是对svm有强烈的好奇心,那就继续阅读笔者这个小白学习svm的过程

二、深入研究svm原理

svm最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同的类别样本分开,在样本空间中可以通过线性方程来描述:

wTx+b=0

样本空间中的任意点到超平面的距离为:由点到面的距离公式可知

r=|wTx+b|||w||

补充一下||w|| 的含义,对于初学者来说这种公式确实会很头疼,这个专业一点被称作L2 范式,用来衡量一个向量的长度,

我们需要找到划分超平面对训练样本“正中间”的划分超平面,这样的超平面对样本的局部扰动的容忍性最好,也就是说我们不满足仅仅是划分开两个样本数据,我们要尽可能的使得两个分的最开。

如下图所示:

我们令 :

[Math Processing Error]

[Math Processing Error]

也就是说样本数据{[Math Processing Error]},输入到

[Math Processing Error]

如果[Math Processing Error]或者,反之[Math Processing Error]

而且在[Math Processing Error]

那么问题来了,为什么是[Math Processing Error]

,关键不明白那个1,设置成其他的值不行吗?答案是可以,并且可以设置成任意值,但是因为设置成1 简单,容易计算。

问题又来了,为什么可以设置成任意值,这样的话超平面还能够唯一吗?答案是可以,我们的超平面为:

[Math Processing Error]

也就是说任意的放缩w与b都不会影响超平面,因为恒为0啊

假设两条边界线为[Math Processing Error],我们两边同时除以r,得到[Math Processing Error ]。

样本点到面的距离公式:

[Math Processing Error]

令[Math Processing Error],带入上式,这个世界回归平静了,一切都这么安详,一切好像都没有发生过。

“支持向量”到超平面的的距离即分界线到超平面的距离,根据两条线距离的公式可得:

[Math Processing Error]

它被称作为 “间隔” ,而我们的目标是,找到最大的间隔并且满足

[Math Processing Error]

[Math Processing Error]这两条约束条件即:

[Math Processing Error]

[Math Processing Error]

显然,最大化[Math Processing Error],也就是最小化[Math Processing Error],则目标函数可以重写为:

[Math Processing Error]

[Math Processing Error]

接下来就是求解带有约束条件的目标函数,那么就要用到大名鼎鼎的拉格朗日乘子算法与KKT条件,到这不要担心,看起来很唬人(其实确实挺难的),我们简单的理解,如果目标函数的约束条件带有等式那就使用拉格朗日乘子算法,这里我引用斯坦福大学机器学习教程吴恩达老师的讲义的公式说明:如果目标函数是仅仅带有等式约束

那么拉格朗日函数的形式如下:

只要对w求偏导等于0,得到[Math Processing Error]的值,带入目标函数即可得到不带有约束条件的目标函数

如果带有不等式约束:

目标函数如下:

由此我们对上面的目标函数的约束进行变形

[Math Processing Error]

[Math Processing Error]

应用拉格朗日乘子算法可得:

[Math Processing Error]

对w与b求偏导为零可得

[Math Processing Error]

[Math Processing Error]

回代入公式可得目标函数变为:

最后一项在上面的对b求偏导可知结果为0,得到的目标函数为:

[Math Processing Error]

[Math Processing Error]

[Math Processing Error]

哎,我们不是要求极小值吗?这里怎么会是极大值,对你没有看错,是极大值,因为经过拉格朗日子乘子算法得到的函数会形成一个对偶问题,啥是对偶问题?简单的理解就是求大的问题变成求小的问题,求小的问题变成大求大的问题。如果非想死磕对偶问题,斯坦福大学机器学习公开课会给你答案,因为笔者的数学基础也不是很好,对于对偶理论也没有理解的很透彻,不能”鼻子里插葱”。

总结一下我们的约束条件:

[Math Processing Error]

[Math Processing Error]

[Math Processing Error]

不要晕,感叹这些约束条件哪来的?这些约束条件都是我们上面求解过程中得到的,这些约束条件也叫KKT条件,到底什么是kkt条件这么神秘,其实就是一系列定义好的约束,要想获得极值就得满足上述条件,通过联立方程组,得到[Math Processing Error],回带入方程组可得不带有约束的目标函数。到此我们线性分类的问题已经解决,剩下的问题是如何解决线性不可分的情况,以及如何求解目标函数,欲知后事如何请关注后面的文章核函数与SMO算法

   
232 次浏览  评价: 差  订阅 捐助
相关文章

我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
 
相关文档

数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
相关课程

高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号