【Linear Support Vector Machine】林轩田机器学习技法
首先从介绍了Large_margin Separating Hyperplane的概念。

(在linear separable的前提下)找到largest-margin的分界面,即最胖的那条分界线。下面开始一步步说怎么找到largest-margin separating hyperplane。
接下来,林特意强调了变量表示符号的变化,原来的W0换成了b(这样的表示利于推导;觉得这种强调非常负责任,利于学生听懂,要不然符号换来换去的,谁知道你说的是啥)

既然目标是找larger-margin separable hyperplane,那就得先弄明白一个点到平面的距离是啥。

假设x'是平面上的点,x是平面外的点;那么x到平面的距离可以用x-x'再投影到平面法向量w上。
有了点到hyperplane的表达式,就可以把我们需要的larger-margin条件的分类面的求解条件表示出来。

由于假设是数据是linear separable的,所以有yn(W'xn+b)>0。
这时候看subject to部分:
(1)every那条保证了求出的超平面一定是可以分开的
(2)margin那条包含两个意思:
a. 啥叫margin啊?就是离hyperplane最近的点到hyperplane的距离;每个给定的满足条件的hyperplane,都对应一个margin(b,W)
b. 也就是说:一个(b, W)就对应一个hyperplane → 如果hyperplane满足yn(W'xn+b)>0(n=1,...,N)→ 则对应一个margin(b,W)
这样连起来看就捋清晰了:对于某一个separable hyperplane,求margin(b,W)是一个求min的过程;对于所有separable hyperplane产生的margins,求所有margins里面最大的那个margin是一个求max的过程。
截至到上面,larger-margin separable hyperplane的问题就列清楚了。下面开始,就是如何不断简化上约束条件和求解目标。

这里直接从margin的表达式入手,强行指定min yn(W'xn+b)=1 (n=1,...,N);这样margin的表达式就变成了1/||W||这个形式。
我看过的一些资料,对这个的解释就是:对(b,W)放缩大小,使得margin上的点yn(W'xn+b)=1。
上面的说法比较直观,从几何角度规定了这样一个简化方法;但是这种一笔带过的解释并不能使我完全信服,下面从公式的角度解释一下为什么可以做上面的替换。
对于某个hyperplane(b,W)来说,margin是min (1/||W||) * (yn(W'xn+b)),如果直接让yn(W'xn+b)=1,凭什么说1/||W||还是margin呢?
可以这样想:
(1)假设对于某个hyperplane(b,W)来说,margin的值是v(确定的值)→
(2)min (1/||W||) * (yn(W'xn+b)) = v (n=1,...,N) →
(3)min 1/ (||W||/s) * (yn(W'xn/s+b/s)) = v (n=1,...,N) →
(4)令yn(W'xn/s+b/s) = 1 ,再令Wnew = W/s , bnew = b/s →
(5)则有 min (1/||Wnew||) * (yn(Wnew'xn+bnew)) = v (n=1,...,N) →
(6)1/||Wnew|| = v
==================================================
2015-09-09
至于为什么可以放缩w'xn+b,可以从几何角度来理解。以两维输入特征为例:
超平面的方程是:
(1)x1+x2+1:w=[1, 1]' , b=1
(2)10x1+10x2+10:w=[10,10]', b=10
看这两个方程,虽然w和b都不同,但是其实是同一条线。
(1)法向量方向相同,大小不同
(2)直线到(0,0)点的距离都是1/sqrt(2)
==================================================
通过以上6个步骤,令min yn(W’xn+b)=1的背后道理明确了。再进一步简化约束条件,如下:

上面用了一个反证法说明这种替代是可行的。
另外,还有一点需要强点:这里之所以敢把最优化目标函数设定为1/2W'W正是因为,只有当yn(W‘xn+b)=1的时候才能取到最优化的结果。
接下来,用一个例子引出了Support Vector的概念。

用于hyperplane的这些vector称为support vector。
下面的内容,让我耳目一新。

到上面,突然没有乱七八糟的事情了;林直接说,这是一个典型的quadratic programming(QP)问题;
典型的特点:最优化的表达式是二次的;即这种问题是有常规套路去解的。

怎么按照QP的常规套路去搞呢?整理出来几个参数就OK了。看到这里,似乎有些傻掉了:说好的KKT那些玩意呢?都不讲了么?
到这里想想也没有啥必要了,都QP直接解出来了,还啥KKT啊。
接下来解释了Large-Margin Hyperplane的背后道理。
Large-Margin控制模型复杂度,控制VC维。

简而言之,Large-Margin的好处就是在带入non-linear transform的情况下,可以控制模型的复杂度。

【Linear Support Vector Machine】林轩田机器学习技法的更多相关文章
- 【Dual Support Vector Machine】林轩田机器学习技法
这节课内容介绍了SVM的核心. 首先,既然SVM都可以转化为二次规划问题了,为啥还有有Dual啥的呢?原因如下: 如果x进行non-linear transform后,二次规划算法需要面对的是d`+1 ...
- 【Support Vector Regression】林轩田机器学习技法
上节课讲了Kernel的技巧如何应用到Logistic Regression中.核心是L2 regularized的error形式的linear model是可以应用Kernel技巧的. 这一节,继续 ...
- 【Matrix Factorization】林轩田机器学习技法
在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了. 林首先介绍了机器学习里面比较困难的一种问题:categorical features 这种 ...
- 【Deep Learning】林轩田机器学习技法
这节课的题目是Deep learning,个人以为说的跟Deep learning比较浅,跟autoencoder和PCA这块内容比较紧密. 林介绍了deep learning近年来受到了很大的关注: ...
- 【Radial Basis Function Network】林轩田机器学习技法
这节课主要讲述了RBF这类的神经网络+Kmeans聚类算法,以及二者的结合使用. 首先回归的了Gaussian SVM这个模型: 其中的Gaussian kernel又叫做Radial Basis F ...
- 【Neural Network】林轩田机器学习技法
首先从单层神经网络开始介绍 最简单的单层神经网络可以看成是多个Perception的线性组合,这种简单的组合可以达到一些复杂的boundary. 比如,最简单的逻辑运算AND OR NOT都可以由多 ...
- 【Adaptive Boosting】林轩田机器学习技法
首先用一个形象的例子来说明AdaBoost的过程: 1. 每次产生一个弱的分类器,把本轮错的样本增加权重丢入下一轮 2. 下一轮对上一轮分错的样本再加重学习,获得另一个弱分类器 经过T轮之后,学得了T ...
- 【Random Forest】林轩田机器学习技法
总体来说,林对于random forest的讲解主要是算法概况上的:某种程度上说,更注重insights. 林分别列举了Bagging和Decision Tree的各自特点: Random Fores ...
- 【Decision Tree】林轩田机器学习技法
首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数: AdaBoost和Decision Tree都是对弱分类器的组合: 1)AdaBoost是分类的时候,让所 ...
随机推荐
- graphql 后台服务项目架构(一)
基础知识 简而言之,GraphQL 是一种描述如何请求数据的语法,通常用于客户端向服务器请求数据.GraphQL 有三个主要特点: 允许客户端精确指定所需数据. 可以更容易地从多个数据源聚合数据. 使 ...
- jmter安装配置
一 JMeter 简介 JMeter 它是Apache组织的开放源代码项目,它是现在比较流行的功能和性能测试的工具.JMeter requires a fully compliant JVM 7 or ...
- 解析xml文件,修改Jenkins的配置
最近因为服务器移动,在Jenkins中配置的一些地址之类的,都要改变,如图,我因为使用插件Sidebar Links增加一个链接地址,现在地址变了,所以在Jenkins中配置就需要改动link url ...
- 有权并查集,Poj(1988)
题目链接:http://poj.org/problem?id=1988 题目大意: 有n个从1到n编号的箱子,将每个箱子当做一个栈,对这些箱子进行p次操作,每次操作分别为以下两种之一: 输入 M x ...
- http知识补充
在我的职业生涯中,没怎么重视过这http四个字,想当然的觉得不就是个网页请求嘛就没怎么当回事,而且很多http相关的长篇大论一听就困,真心是弄不下去,但是就是这种观念导致我后期的工作中不断的挖坑,不断 ...
- windows/Linux主机重启NetBackup服务和后台进程
关闭并启动所有NetBackup服务和后台进程 要关闭并启动所有NetBackup服务和后台驻留程序,请从命令行输入以下命令: 在Windows上: 要关闭所有NetBackup服务: install ...
- Oracle数据库几种启动方式及查询当前状态
Oracle数据库几种启动方式 1.startup nomount: 非安装启动,这种方式下启动可执行:重建控制文件.重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进程 ...
- 【转】Android UI开发第三十一篇——Android的Holo Theme
好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...
- Android Support v4,v7,v13的区别和应用场景
android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系统,里面有类似ViewPager等控件.ViewPager在Android 1.6以下的版本是不自带的,所以要 ...
- python同时遍历数组的索引和元素
1.一般要同时遍历数组的索引和元素需要先确定数组的长度length(元素个数),然后使用range函数来生成数组的索引,最后使用该索引来访问数组的元素. 具体做法如下: l = [2,7,11,15] ...