斯坦福公开课Machine Learning笔记(五)--Support Vector Machine
来源:互联网 发布:114网络预约挂号 编辑:程序博客网 时间:2024/05/22 01:33
斯坦福公开课Machine Learning笔记(五)–Support Vector Machine
这系列笔记其实已经手写好, 现在一次性发上来, 主要是怕丢. 内容以Andrew Ng的讲义为主,主要以公式推导与理解为主,引入和介绍省略.对于最后的Reinforcement Learning部分, 由于没有讲义以及对其实在不熟悉, 就没有笔记了(主要还是因为没有讲义).
1.函数间隔和几何间隔
在二维空间中的数据点,我们可以用一条线来把数据分成两类.但这可能并不是最好的分隔线,因为新的数据可能就在分隔线附近,这样会对预测造成误差.
而每个数据点到分隔线都有一个距离,我们可以通过这个距离来找到最佳的分隔线.
函数间隔:
但是当w和b成倍数增长时,函数间隔也会变大,但分隔线却没变.而几何间隔就不会.
通过函数间隔计算某个点的几何间隔:
A点在分隔线外,B点在分隔线上,过A点做垂线经过B点.
AB的距离为
可以看到,当
那如何通过间隔来找到最佳的分隔线呢?
- 空间中的点分隔开后,点投影到线上,投影肯定是越分散越容易让人分辨,而不是挤在一块.也就是投影的点的方差最大化。
- 还有另外一种理解。当要预测新的x时,如果x点在分割线附近,就很容易产生误差。那么,我们尽量把空间内的数据分隔开,即尽量让所有的点都远离分割线。也就是最大化所有点到分割线的距离。
我们要最大化
但是
但
2. Lagrange duality
这里先介绍一下拉格朗日对偶问题.
当我们碰到最优化问题:
然后使用拉格朗日乘数法:
解出
现在这里多了一个不等式的约束条件:
还是使用拉格朗日乘数法,先定义:
当不满足约束条件,即
转化为对偶优化问题:
且
当在特定条件下
满足上面假设后就一定存在
同时还满足一下KKT条件:
经常有:
而当
回到前面:
改写一下不等式:
当
只有那些靠近分隔线的点的函数间隔为1,其他的点都大于1:
同样适用拉格朗日乘数法:
对于对偶问题:
把
通过KKT条件来求解,用对偶问题代替原始问题.
而
也就是当确定w后,平移超平面,平移到最佳位置即可.
当求出w和b后,可以对新数据点进行分类了.
如果每次把训练集遍历一边会很慢,但其实大部分
Kernels
对于kernel的个人理解是:当数据在低维线性不可分时,把数据映射到更高维的空间,让其线性可分.
定义kernel函数:
Ng举了个例子:
假设
这样直接计算
推广到加上常数项:
继续推广:
但是复杂度从
我们上面找到了
Gaussian kernel
那如何确定某个函数是否可以作为kernel函数呢?
如果要找到
我们先定义一个kernel矩阵:
如果
证:
这里证明了只要
Regularization and non-separable case
当数据集中异常点时,我们不可能为了这些异常点而改变超平面.那么如何忽略这些点呢?
我们可以加入优化,正则化.
加入正则的理解其实就是让某些点的函数间隔可以小于1.
那么,其对偶问题:
和之前相比,
当
当
当
The SMO algorithm
在求解最大或者最小值问题时,经常会使用坐标上升(下降)法.Coordinate ascent(descent):
Loop until convergence{
for i = 1 to m{
}
}
不停迭代,每次只改变某一维度来最优化.
把几个最优化算法比较一下:
- 牛顿法:收敛快,但是每次计算代价大
- 坐标上升(下降):收敛慢,计算代价小
- 梯度下降:不适合高纬度.
而对于如何求解对偶问题,如果要使用坐标上升法,只改变一个
所以我们可以改变2个变量:
把
- 斯坦福公开课Machine Learning笔记(五)--Support Vector Machine
- 斯坦福公开课Machine Learning笔记(四)--Generative Learning Algorithm
- 斯坦福公开课Machine Learning笔记(六)--Learning Theory
- 斯坦福公开课Machine Learning笔记(八)--Online Learning
- 斯坦福公开课Machine Learning笔记(一)--Linear Regression
- 斯坦福公开课Machine Learning笔记(三)--Generalized Linear Models
- 斯坦福公开课Machine Learning笔记(十一)--Factor Analysis
- 斯坦福公开课Machine Learning笔记(十二)--PCA
- 斯坦福公开课Machine Learning笔记(十三)--ICA
- [Machine Learning]--Support Vector Machine
- [Machine Learning] SVM--support vector machine
- 斯坦福的 Machine Learning 公开课,可以注册在线学习
- 斯坦福公开课Machine Learning笔记(二)--Classification and Logistic Regression
- 斯坦福公开课Machine Learning笔记(七)--Regularization and model selection
- 斯坦福公开课Machine Learning笔记(九)--The K-means Clustering Algorithm
- 斯坦福公开课Machine Learning笔记(十)--Mixtures of Gaussians and EM algorithm
- Machine learning-------------SVM(support vector machines)
- Machine Learning—Support Vector Machines(1)
- 简述Android中极光推送的运用步骤
- 关于FileChannel
- Python学习笔记:单引号,双引号,三引号
- Java注解处理器使用详解
- 45. Jump Game II
- 斯坦福公开课Machine Learning笔记(五)--Support Vector Machine
- JavaScript趣题:得到了奖金嘛?
- 【面试题46】求1+2+3+...+n
- java菜鸟成长历程 变量
- 单调递增最长子序列
- Handler实现对一个网页的异步加载,并将过程封装
- 使用JUnit4与JMockit进行打桩测试
- 【面试题47】不用加减乘除做加法
- CSU 1715 Positive Con Sequences