Coursera机器学习(Andrew Ng)笔记:支持向量机
支持向量机Support Vector Machine
机器学习初学者,原本是写来自己看的,写的比较随意。难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改
支持向量机是广泛应用在工业界和学术界的一个比较流行的算法,与逻辑回归和神经网络相比,SVM在学习复杂的非线性方程时,提供了一种更为清晰更加强大的方式。
优化目标Optimization Objective
在逻辑回归中,我们有
如果有一个
如果有一个
再来看一下代价函数:
其中,左右两边紫红色的线被定义成两个函数,分别是
可以将
使用新的
其中
新的假设函数:
大间距分类器Large Margin Intuition
人们有时将支持向量机看作是大间距分类器,但只是一个直观上的理解。在上述的
如果
如果
当常数
在支持向量机中,决策边界有一个特殊的属性就是,它距离正样本和负样本都尽可能的远。决策边界与样本点之间的最近距离成为间距Margin。因为SVM的决策边界到正负样本都有一个大间距,因此也称之为大间距分类器。
注:仅仅当
大间距分类器背后的数学知识
核函数
对支持向量积算法进行一些改变,构造复杂的非线性分类器,这里使用核函数来达到这个目的。
给定
其中的相似性函数
当
当
每个标记点都给出了假设函数中用到的特征,
下面我们来看如何选择这些标记点,一个方法是这些标记点与训练样本中的点完全重合,即有m个标记点。给定样本
现在,我们使用新的特征构建支持向量机的最小化算法:
注:相对于和其他机器学习算法的组合,核函数和支持向量机的组合能够使算法计算更快。
-选择SVM参数-
如果
如果
如果
如果
使用SVM
在实际应用过程中,有很多写好的SVM库可以使用,推荐使用’liblinear’和’libsvm’,需要做的工作主要有
- 选择参数C
- 选择核函数(即相似性函数)
-不使用核函数(即线性核函数),是一个标准的线性分类器
-选择m和n的大小,n大m小
-使用高斯核函数,需要选择
-选择m和n的大小,n小m大
注:使用高斯核函数之前要进行特征缩放
注:并不是所有的核函数都是可用的,它必须符合”Mercer’s Theorem”,它保证了SVM包的优化可能正确运行。需要使用训练集和交叉验证集训练C和其他参数
多元分类问题
许多SVM包已经内置了多元分类
也可以使用’one-vs-all’的方法进行多元分类,类似之前的逻辑回归。
逻辑回归 VS 支持向量机
- 如果n很大,和m差不多大,使用逻辑回归或线性核函数的SVM
- 如果n很小,m适中,使用高斯函数的SVM
- 如果n很小,m很大,则手动增加一些新的特征,然后使用逻辑回归或没有核函数的SVM
注:神经网络的方法可以适配以上三种情况,但其训练速度会慢很多