背景

支持向量机(SVM)背后的数学知识比较复杂,之前尝试过在网上搜索一些资料自学,但是效果不佳。所以,在我的数据挖掘工具箱中,一直不会使用SVM这个利器。最近,台大林轩田老师在Coursera上的机器学习技法课程上有很详细的讲授SVM的原理,所以机会难得,一定要好好把握这次机会,将SVM背后的原理梳理清楚并记录下来。这篇文章总结第一讲linear hard SVM的相关内容。

 
 

最好的分割线

之前有讲过PLA,即在线性可分的数据中,找到一条线,能够区分开正负样本,如下所示:

上面三条线,都是PLA的解,但是哪条才是最好的呢?凭直觉而言,最右边是最好的,因为右边第三条对噪声的容忍度最高。

上图中灰色区域是噪声,区域越大,噪声越大。可以发现,最右边可以容忍的噪声是最大。现在是以点的视角来观察,下面以线的视角观察,

同样的,最右边的线扩展后得到的"垫子"最厚。"垫子"的厚度通常叫做margin(边缘)。垫子扩展到最近的正负样本就停止扩展,这些在垫子边缘上的正负样本叫做支持向量(每个样本就是一个向量)。

 
 

问题来了

知道了支持向量机的定义和优点后,那么问题来了,我们要解一个什么问题?

形式化的问题定义如下

如果符合上面条件的w(平面法向量)和b(平面截距)存在,由于平面公式可以伸缩(即wTx+b=0与3wTx+3b=0表示同一个平面),所以总可以找到一组w*和b*,使得min y(w*x+b*) = 1,那么有

经过上面的平面缩放变化,问题可以简化为如下形式

是不是看起来简单多了。

 
 

二次规划

为了进一步简化计算,将目标函数经过一番变化,可以得到如下利于优化的形式

这个问题形式和二次规划(线性规划的亲戚,)一致,所以可以使用二次规划的方法求解。二次规划的一般形式如下:

将linear hard SVM的求解公司套用QP一般形式,接下来就可以通过任何实现QP解法的工具计算求解,这里略去具体的变量映射关系,有兴趣的读者可以尝试。对于非线性问题,可以通过对x做二次转化或其他转化,然后求解。

 
 

VC维度

相比较PLA的平面,linear hard SVM得到的平面结果更苛刻,

由于有"厚垫子",linear hard SVM不能shatter任意3个inputs,这说明有更少的dichotomies,更小的VC维度,也就有更好的泛化效果。同时,如果使用特征转换,可以使linear hard SVM进行一些更精细的分类。

 
 

总结

Linear hard SVM的解法中需要训练数据线性可分,然后通过缩放平面和等价转换,将原始问题转成QP问题求解。数据线性可分在实际情况中很难出现,所以linear hard SVM的应用价值比较有限。同时,在特征转换时,将原始数据映射到其他空间的计算无法省略(好像是废话)。接下来课程中,会使用一些更有趣的方法解决这两个问题,敬请期待。

机器学习基石--学习笔记01--linear hard SVM的更多相关文章

  1. 机器学习基石--学习笔记02--Hard Dual SVM

    背景 上一篇文章总结了linear hard SVM,解法很直观,直接从SVM的定义出发,经过等价变换,转成QP问题求解.这一讲,从另一个角度描述hard SVM的解法,不那么直观,但是可以避免fea ...

  2. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  3. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  4. TensorFlow机器学习框架-学习笔记-001

    # TensorFlow机器学习框架-学习笔记-001 ### 测试TensorFlow环境是否安装完成-----------------------------```import tensorflo ...

  5. C++ GUI Qt4学习笔记01

    C++ GUI Qt4学习笔记01   qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...

  6. SaToken学习笔记-01

    SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...

  7. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

  8. 机器学习技法--学习笔记04--Soft SVM

    背景 之前所讨论的SVM都是非常严格的hard版本,必须要求每个点都被正确的区分开.但是,实际情况时很少出现这种情况的,因为噪声数据时无法避免的.所以,需要在hard SVM上添加容错机制,使得可以容 ...

  9. PHP 学习笔记 01

    例子: 为什么要学PHP 主观原因: 前段时间在学校处理了毕业的一些事情,回到上海后开始了找工作的旅程.意向工作是WPF开发或者ASP.NET 作为后端的WEB开发. 陆陆续续一直在面试,其中有一家公 ...

随机推荐

  1. 【JSP】自定义标签开发入门

    JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...

  2. B. Factory Repairs--cf627B(线段树)

    http://codeforces.com/problemset/problem/627/B 题目大意:  n代表天数 ,k代表每一次维修持续的天数,a代表维修过后每天能生产a件产品,b代表维修之前每 ...

  3. .android:allowTaskReparenting 等Activity 的task属性

    转自http://blog.csdn.net/javayinjaibo/article/details/8855678 1.android:allowTaskReparenting 这个属性用来标记一 ...

  4. mysql 怎么查询出,分组后的总条数。。。也就是有多少组数。。。。怎么写

    SELECT COUNT(*) AS 多少组数FROM( SELECT id FROM 表 GROUP BY id) subQuery;Mysql,有一个表含有以下字段,uid 发帖人id,title ...

  5. hdu 4651 - Partition(五边形数定理)

    定理详见维基百科....http://zh.wikipedia.org/wiki/%E4%BA%94%E9%82%8A%E5%BD%A2%E6%95%B8%E5%AE%9A%E7%90%86 代码如下 ...

  6. Orchard Compact v1.7.2

    1. 仅包留了Core中的Settings和Shapes, 及Modules, Themes和jQuery模块. 2. 添加了对Oracle的支持. 下载地址: 二进制: Orchard.Compac ...

  7. SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)

    开篇介绍 2015年1月1日,新的一年开始之际,本来应该好好做点有意义的事情来跨个年的.结果,老习惯 - 睡觉之前一定要折腾一下电脑,说干就干,给新到的 DELL 电脑装虚机,下载 SQL SERVE ...

  8. MongoDB中的字段类型Id

    众所周知,在向MongoDB的集合中添加一条记录时,系统会自动增加一个字段名为"_id",类型为ObjectId的字段,其值为24位字符串,可以使用此值作为记录的唯一标识. 项目中 ...

  9. Bluetooth Low Energy——蓝牙低功耗

    Android4.3(API级别18)引入内置平台支持BLE的central角色,同时提供API和app应用程序用来发现设备,查询服务,和读/写characteristics.与传统蓝牙(Classi ...

  10. ASP.NET CheckBoxList Operations with jQuery

    本文描述了如何通过jQuery来对ASP.NET CheckBoxList控件进行一些基本操作,如通过value/text/index check/uncheck CheckBoxList,最小/最大 ...