20170123 Coursera Stanford-MachineLearning/Week7

来源:互联网 发布:warframe 淘宝充值 编辑:程序博客网 时间:2024/05/29 18:27

Week7:Support Vector Machine(SVM) 支持向量机

SVM又称为大间距分类器(Large Margin Classifier)

SVM以及其目标函数


cost1(θTx(i))=loghθ(x(i))

cost0(θTx(i))=log(1hθ(x(i)))

与逻辑回归不同的是把1m这个常数项舍去,因为其对最后的结果(即代价函数取minθ的值)没有影响
而且令C=1λ


这就是SVM的数学表达式,Cost函数不一定就是log那种类型的


为了使 min 函数前面一项为0,须有θTx(i)1 if y(i)=1θTx(i)1 if y(i)=0
这样就有SVM函数 minθ12j=1nθ2j


注意margin(一般取1,即θTx1θTx1中的1和-1),而且一般是有方向性的,即线的一边为y=1,线的一边为y=0

SVM的数学原理


对于θTx(i)可以认为是范数||θ||和投影p(i)的乘积


对于上图中的绿色线为SVM决策边界,蓝色线θ向量的方向与决策边界垂直
对于上图中的左下图

p(1)||θ||1p(1)||θ||

p(2)同理
这个时候说明这个决策边界选择不合适,我们要实现的应该是使得 p(i)更大,令||θ||更小
对于上图中的右下图
Margin其实就是训练样本到决策边界的距离,其实也就是p(i)
对于SVM,它产生Large Margin的原因在于选择了最合适的决策边界使得p(i)极大化,进而极小化||θ||,这也是SVM中最小化目标函数12j=1nθ2j的意义所在

Kernels核函数


上图中是非线性决策边界

K(x,l(i))称为核函数
在下图中为高斯核函数

Gaussian Kernel:高斯核函数

fi=exp(||xl(i)||22σ2),where l(i)=x(i)Need to choose σ2


最高点函数的值必为1

下图中f1f2f3的定义均与上图类似,本质上是fi=similarity(x,l(i))

对于上图中靠近l(1)l(2)的点,根据fiθi的值预测结果为y=1,对于远离l(1)l(2)的点预测结果为y=0
所以我们可以用landmark标记点和KernelsFunction核函数来训练出非常复杂的非线性边界

f(i)是一个特征向量,与x(i)有关

使用Kernel的时候将cost函数中的θTx(i)替换为θTf(i),然后根据Kernel修改正则项为θTMθ,M取决于Kernel,以用更高计算效率适应超大训练集。
但是需要提到的一点是,如果把逻辑回归和Kernel结合,那运行效率很低

SVM参数选择

No Kernel(“linear Kernel”)为θTx

使用Linear Kernel的时候一般是x的变量数多但是样本总数少
使用Gaussian Kernel的时候一般是x的变量数少但是样本总数多

不是所有的SimilarityFunction similarity(x,l)是有效的Kernel,必须遵循Mercer’s Theorem ,使SVM正确地收敛
一般用的比较多的Kernel是高斯和线性,但也有其他的一些例如
* PolynomialKernel(xT+constant)degree
* String Kernel
* chi-square Kernel
* histogram intersection kernel
* …

Multi-class classification

可以用one-vs.-all method(用对K个类用K个SVM然后每个类用一个SVM)
或者使用SVM包内置的多类别分类器

逻辑回归 vs. SVMs

逻辑回归 与 SVM without Kernel 是十分相似的算法

0 0
原创粉丝点击