五、SVM求解实例

  上面其实已经得出最终的表达式了,下面我们会根据一些具体的点来求解α的值。数据:3个点,其中正例 X1(3,3) ,X2(4,3) ,负例X3(1,1) 如下图所示

   

  我们需要求解下式的极小值

   

  注意约束条件(在这里不要忘记了yi代表的是数据的类别,+1代表正例,-1代表负例)

   

  代入数据,通过化简可以得到如下约束条件的表达式。

   

  将数据代入上式得到

   

  由于α123=0 -> α123: 化简可得:

  

  分别对α1和α2求偏导,偏导等于0可得: α1=1.5,α2=-1(并不满足约束条件αi >= 0,i=1,2,3 )所以这时求出来的α的值是无效的,那这个时候α的解应在边界上,也就是说要么α1=0,要么α2=0,再代入上式然后求偏导看下

   

  (这儿经过我的计算发现α2似乎等于正的2/13,应该是教程有些小问题,猜测可能是上式由α123化简这儿出了点小问题,但是对于答案似乎影响不大) ,所以经过计算最小值在(0.25,0,0.25)处取得 。

   

  上面的平面方程其实就是代表直线方程,也就是决策边界的方程。

六、支持向量机?

  为什么会取支持向量机这样一个名字呢?

   

  我们可以发现决策边界只与α不等零的有关系,因为w=αiyi的累加和,所以α为0的点不起作用。

  可以得出所有边界上的点α值必然不等于0,也称作支持向量,所有非边界上的点α值必等于0,也称作非支持向量。支持向量机中的机指的就是决策边界,而决策边界就是由支持向量所支撑的,支持向量就是边界点α值不为0的点,决定边界。如下图所示当取60个样本点和120个样本点时,只要添加的不是边界上的样本点,那么决策边界就是不变的。

   

七、软间隔

  软间隔:有时候数据中有一些噪音点,如果考虑它们的话那咱们的决策边界线就不太好界定了,之前的方法要求把两类点完全分得开,这个要求有点过于严格了,我们来放松一点!

   

  为了解决该问题,引入松弛因子ξ

   

  那我们就有了新的目标函数:

   

  当C趋近于很大时,要使得整体很小的话,那么意味着松弛因子ξ就会很小,那就意味着分类严格不能有错误。当C趋近于很小时,要使得整体很小的话,那就意味着松弛因子ξ可以稍微大一些,那就意味着可以有更大的错误容忍。C是我们实际在编程中需要指定的一个参数!下面是多了一个松弛因子ξ下的拉格朗日乘子法,基本上和上面差不多的。

   

八、核变换

  将低维不可分问题(一般就是非线性支持向量机问题)映射为空间中的高维可分问题,这就是核变换。上面我们提到了这个函数Φ(X) ,那这个函数的意思就是代表一种核变换的方法。如下图在二维平面下分类很困难,但是如果将数据映射到3为空间,那这样就很好划分了。

   

  还是先从一个小例子来阐述问题。假设我们有俩个数据,x=(x1,x2,x3),y=(y1,y2,y2),此时在3D空间已经不能对其进行线性划分了,那么我们通过一个函数Φ(X)将数据映射到更高维的空间,比如9维的话,那么f(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3),由于需要计算内积,所以在新的数据在9维空间,需要计算<f(x),f(y)>的内积,需要花费时间O(n2)。

  在具体点,令x=(1,2,3),y=(4,5,6),那么f(x)=(1,2,3,2,4,6,3,6,9),f(y)=(16,20,24,20,25,36,24,30,36),此时<f(x),f(y)>=16+40+72+40+100+180+72+180+324=1024。似乎还能计算,但是如果将维数扩大到一个非常大数时候,计算起来可就不是一丁点问题了。

  但是发现,K(x,y)=(<x,y>)2,K(x,y)=(4+40+18)2=322=1024。俩者相等,K(x,y)=(<x,y>)2=<f(x),f(y)>,但是K(x,y)计算起来却比<f(x),f(y)>简单的多,也就是说只要用K(x,y)来计算,效果和<f(x),f(y)>一样的,但是计算效率却大幅度提高了,如:K(x,y)的计算时间是O(n),而<f(x),f(y)>的计算时间是O(n2)。所以使用核函数的好处就是,可以在一个低维空间去完成高纬度(或者无限维度)样本内积的计算(意思就是实际上并没有把数据映射到高维空间去,只是一个假设),比如K(x,y)=(4+10+18)2的3D空间对比<f(x),f(y)>=16+40+72+40+100+180+72+180+324的9D空间。

  下面了解一下高斯核函数对非线性数据(对于线性数据的话有线性核函数)的分类问题,如图所示:

   

  

九、总结

  这次学习了支持向量机算法,其实对于所有的机器学习算法来讲,首先要了解它的物理含义,也就是它要解决的问题是什么,然后根据这个问题进行一步步的学习,最后得出最终的结论。就支持向量机而言,我们首先学习了点到平面的距离的计算,然后根据距离引出了如何算出这个距离最大的这样的一个表达式,然后就有了拉格朗日乘子法以及KKT性质,然后通过一个例子具体的算出来了决策边界的方程。在这其中,还引出了为什么会有支持向量机(α等于0与不等0的区别)这么个叫法,然后还有软间隔和松弛因子ξ的问题,最后还了解了使用核函数Φ(X)变换来解决低维不可分的问题。

转载于:https://www.cnblogs.com/xiaoyh/p/11524035.html

机器学习之支持向量机算法(二)相关推荐

  1. 机器学习之支持向量机算法

    支持向量机算法 概述 原理 SVC, NuSVC 和 LinearSVC 能在数据集中实现多元分类. 非均衡问题 案例:对数据进行分类. 优势 缺点 svc NuSVC LinearSVC examp ...

  2. 支持向量机python代码_Python机器学习SVM支持向量机算法理论 | kTWO-个人博客

    PS:这篇文章讲的是SVM的算法的基础理论知识,因为博主也是刚学习没多久,对SVM的数学思想了解的不是很深,所以这篇文章就简单介绍一下什么是SVM以及SVM是怎么工作的. 1.什么是支持向量机(SVM ...

  3. 机器学习之支持向量机算法(一)

    一.问题引入 支持向量机(SVM,Support Vector Machine)在2012年前还是很牛逼的,但是在12年之后神经网络更牛逼些,但是由于应用场景以及应用算法的不同,我们还是很有必要了解S ...

  4. 机器学习(优化算法二)——梯度下降-代码实现

    上篇博客说的是梯度下降法,主要讲的原理及公式推导,这篇博客来进行代码实现.包括手动模拟梯度下降的方式来进行求解,以及运用自己实现的梯度下降来完成一个线性回归的例子. 模拟梯度下降 求解 这里手动模拟梯 ...

  5. 【Python机器学习】之 SVM 支持向量机算法(二)

    SVM 支持向量机(二) 1.支持向量机 ​ 这样,由于w,x\mathbf{w,x}w,x初始值的不同,最后得到的分割超平面也有可能不同,那么一定存在一个最优的超平面,这种方法就是支持向量机. ​ ...

  6. 机器学习算法总结之支持向量机(二)

    有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分,本篇就对线性支持向量机如何处理这些异常点的原理方法做一个总结. 1.线性分SVM面临的问题 有时候本来 ...

  7. 机器学习中的算法-支持向量机(SVM)基础

    机器学习中的算法-支持向量机(SVM)基础 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处 ...

  8. 古老的spc也可以用机器学习(三)-支持向量机算法

    大家都很清楚SPC的中文叫统计过程控制,它的作用是发现过程数据中的异常行为,SPC有8种以上的判异规则,每一中判异规则对应可能的异常原因,非常实用. 现在大数据.机器学习应用越来越广泛,而机器学习算法 ...

  9. 机器学习笔记——支持向量机SMO算法完整版代码分析

    机器学习笔记--支持向量机SMO算法完整版代码分析 代码大体分析 外循环 参数类 内循环 KKT条件判断 eCache参数 完整SMO代码 添加核函数代码 代码参考书籍:<机器学习实战> ...

最新文章

  1. 费米悖论的三十种解释 | 观点
  2. 2016年ICT产业趋势预测
  3. 3.12 12!配对
  4. mac安装vue-cli脚手架;脚手架安装报错Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules
  5. 智能机器人语音ic丨智能玩具语音识别芯片丨机器人语音播报芯片丨AI语音提示芯片...
  6. Windows Mobile如何得到资源文件中的文件
  7. Windows 8 页面应用测试(1)
  8. Android流媒体
  9. 复现monodepth2之KITTI数据集准备
  10. Python合成PDF文件
  11. (Excel)常用函数公式及操作技巧之六:汇总计算与统计(一)
  12. 用JS 输出 正三角形
  13. pulsar BookieException$InvalidCookieException 异常
  14. 操作系统转载和注释___荷风听雨
  15. 解决github频繁输入密码问题和git@github.com:Permission denied (publickey)问题
  16. 洛谷P1287 盒子与球
  17. HTML5学习笔记--第六章 文本元素
  18. 如何通过引用传递变量?
  19. 【转载】游戏引擎发展史漫谈(资料整理)
  20. 26岁从计算机视觉界“黄埔军校”博士毕业,他想为车打造一双慧眼

热门文章

  1. 计算机动画制作过程原理,计算机制作动画的基本原理及运动规律.ppt
  2. matlab显示中文乱码的解决办法
  3. 烤烟发病叶片高光谱特征分析
  4. 编写一个Applet,随机选择矩形、圆形、椭圆、直线等形状,在可视区域内绘制20个图形,同一种图形使用同一种颜色,不需要填充。
  5. indigo中用roslaunch启动RViz观察机器人模型
  6. java 获取子文件夹_JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件...
  7. LabelImg,LabelMe工具标注后的图片数据增强
  8. 基于GPT2的中文闲聊机器人/GPT2 for Chinese chitchat
  9. 用R进行文本挖掘与分析:分词、画词云
  10. python全局变量可以改变吗_在Python中避免我的全局变量,我有几个函数可以改变一个变量...