SVM理解与参数选择(kernel和C)

大部分资料都在讲SVM的kernel等看似高大上的东西,却忽略了SVM的模型表达式这一关键,造成大家看SVM资料觉得云里雾里的感觉。 
本文舍末求本,从SVM的模型理解开始,带大家理解SVM的基本思想,理解各个参数对SVM的性能影响。

直观理解SVM
以二维平面上的分类为例,下面给出了不同的分类可能,哪个才是最优的分类呢?

可以看出第一种分类方法是最好的,为什么呢?因为它的分类平面到两类边界的距离(Margin)最大。

所以SVM也叫Large Margin分类器。

SVM的模型表达式
首先,线性模型的表达式为

hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
[1]
其中

x1x1~xnxn就是n个特征,作为模型的输入
θ0θ0~θnθn,就是线性模型的n+1个参数
把线性模型表达式中的xixi替换成fifi,就得到了SVM模型的表达式

hθ(x)=θ0+θ1f1+θ2f2+...+θnfn
hθ(x)=θ0+θ1f1+θ2f2+...+θnfn
[2]
其中 
* fifi是xixi的核函数,也就是xixi的非线性多项式项。例如 f1=x1∗x2f1=x1∗x2
可见 
* SVM和线性回归是非常类似的 
* 由于有了非线性多项式项,SVM对非线性的拟合能力很强,但已被噪声影响(拟合能力过强)

理解了SVM的模型,也就不觉得它有多复杂了。

SVM与线性回归的代价函数有很大的不同。

SVM的Cost Function(代价函数)
下面对比SVM与Logistic回归(把线性回归的结果作为Logistic函数的输入)的代价函数区别。(代价函数的物理含义就是预测值与真实值之间的误差)

Logistic回归的代价函数
J(θ)=−(ylog(h(x))+(1−y)log(1−h(x)))
J(θ)=−(ylog(h(x))+(1−y)log(1−h(x)))
将h(x)h(x)替换为Logistic函数,就得到其代价函数为:

J(θ)=−(ylog(11+e−θTx)+(1−y)log(1−11+e−θTx))
J(θ)=−(ylog(11+e−θTx)+(1−y)log(1−11+e−θTx))
SVM的代价函数
SVM的代价函数与Logistic回归的代价函数比较接近。下图中的蓝色曲线是Logistic归回代价函数中的两个表达式。

 
红色曲线是逼近蓝色函数的函数。

用cost1(z)和cost0(z)代替h(x),可得SVM的代价函数

J(θ)=C∑1m(y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i)))+12∑1n(θj2)
J(θ)=C∑1m(y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i)))+12∑1n(θj2)
其中

C类似于正则化中1λ1λ的作用。C越大,拟合非线性的能力越强。
可见,SVM的代价函数与Logistic回归的代价函数也是很类似的。

核函数(Kernel)
SVM模型表达式中的fifi是xixi的核函数。核函数能提高模型的Feature维度(低维到高维),从而使SVM具有较好的非线性拟合能力。

核函数效果的直观理解
假设一个SVM模型的表达式如下$$

h(x)=θ0+θ1f1+θ2f2+θ3f3
h(x)=θ0+θ1f1+θ2f2+θ3f3
模型的输入x是二维的(用x1和x2表示),先手工标记三个点

 
对每一个模型的输入x,另核函数为x与三个点的相似度:

f1=similarity(x,l(1))=exp(−∥x−l(1)∥22σ2)
f1=similarity(x,l(1))=exp(−∥x−l(1)∥22σ2)

f2=similarity(x,l(2))=exp(−∥x−l(2)∥22σ2)
f2=similarity(x,l(2))=exp(−∥x−l(2)∥22σ2)

f3=similarity(x,l(3))=exp(−∥x−l(3)∥22σ2)
f3=similarity(x,l(3))=exp(−∥x−l(3)∥22σ2)
若l(1)=[3;5]l(1)=[3;5],σ=1σ=1,则f1=exp(−(x1−3)2−(x2−5)2)f1=exp(−(x1−3)2−(x2−5)2)。这是一个三维曲面。

核函数将二维的x提高到了三维空间。

高斯核
上面的相似度函数,就是高斯核,其定义为

fi=similarity(x,l(i))=exp(−∥x−l(i)∥22σ2)
fi=similarity(x,l(i))=exp(−∥x−l(i)∥22σ2)
由其定义可知,如果x与手工选取的点l(i)l(i)很接近,则fi=1fi=1。否则fi=0fi=0
且高斯核函数的最大值为1,最小值为0。

SVM的参数
综上,SVM最重要的参数有2个:C与核函数中的σσ
C类似于正则化中1λ1λ的作用。C越大,拟合非线性的能力越强。 
large C: High Variance,非线性退化为线性模型
small C: High Bias
σσ的大小对核函数形状的影响关系见下图

σσ越大,f越平滑,非线性效能越小,对噪声越不敏感 
large σσ: High Bias
small σσ: High Variance
注意
使用SVM时,有两个点要注意:

若使用核函数,一定要对Feature做Feature Scaling(Normalization)
若训练集m太小,但Feature数量n很大,则训练数据不足以拟合复杂的非线性模型,这种情况下只能用linear-kernel(就是fi=xifi=xi)不能用高斯核
参考
Andrew NG. machine learning class at coursera
详解梯度下降法求解线性模型参数, http://blog.csdn.net/ybdesire/article/details/52895274
--------------------- 
作者:ybdesire 
来源:CSDN 
原文:https://blog.csdn.net/ybdesire/article/details/53915093 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值