吴恩达机器学习(第十三章)---支持向量机SVM

一、优化目标

逻辑回归中的代价函数:

 画出两种情况下的函数图像可得:

y=1: 我们找一条折线来近似表示这个函数图像

y=0: 

 

我们用这两条折线来近似表示原来的曲线函数可得新的代价函数(假设-log(h(x))为cost_1(\theta^Tx),-log(1-h(x))为cost_0(\theta^Tx)):

\frac{1}{m}\sum_{i=1}^{m}{(y^icost_1(\theta^Tx^i)+(1-y^i)cost_0(\theta^Tx^i))}+\frac{\lambda}{2m}\sum_{i=1}^{m}{\theta_i^2}(θ从第二个开始算起)在svm中的表示会与逻辑回归中有些差别

即:C\sum_{i=1}^{m}{(y^icost_1(\theta^Tx^i)+(1-y^i)cost_0(\theta^Tx^i))}+\frac{1}{2}\sum_{i=1}^{m}{\theta_i^2}(去掉1/m,C扮演这1/λ的作用但是不等于1/λ)

二、大间隔理解

1.svm与逻辑回归的差异

                                                                                         \theta^Tx的值 

  逻辑回归 svm
y=0 小于等于-1 小于0
y=1 大于等于1 大于等于0

2.直观图像

\theta^Tx>=1(y=1),  \theta^Tx<=-1(y=0) 最后优化得到的图像为下图的黑线:

如果我们用正常的逻辑回归,可能会得到绿线,红线等其他可能的线,但他们到蓝线即边界的距离都没有黑线大,黑线所表示的函数是到边界距离最大的函数。所以称为大间距分类器。

3.C的大小与异常点 

正常数据的情况下我们会得到上面的决策边界。但是如果存在异常点如下图:

如果C很大,那么svm会尽量将所有点都去分开, 所以黑色的决策边界就会变成红色的,所以当出现这种情况的时候,我们需要把C的值调小一些。

 三、核函数

当遇到一些复杂的非线性决策边界的时候,我们决策边界的函数就会比较复杂(eg:z=\theta_0x_0+\theta_1x_1+\theta_2x_2^2+\theta_3x_1x_2+....

这是我们采用另一种方式来替换特征,修改为 z=\theta_0x_0+\theta_1f_1+\theta_2f_2+\theta_3f_3+....,即用f1来代替x1,f2代替x2^2等等。

那么如何得到这些f特征呢?

我们可以选取一些近似于x^1,x^2..x^i的点l^1,l^2..l^i然后用函数来求出各个f的值,这个函数就是核函数,通常我们可以使用高斯函数

f_j=exp(-\frac{\left \| x-l^j \right \|^2}{2\sigma^2})=exp(-\frac{\sum_{i=1}^{n}{(x_i-l^j_i)^2}}{2\sigma^2})(f_0=1)

当x与l很接近时,f就会接近1;当x与l差的很远时,f就会接近0

通常初始化L的时候把x的对应的值赋给l,l1=x1,l2=x2等等

 求x_i的特征向量f:

f_1^i=sim(x^i,l^1)

f_2^i=sim(x^i,l^2)......别忘了在f向量中加上f_0哦

对于每个x^i可以求出一个f^i

\theta^Tf>0时,y=1,反之y=0,带入代价函数可得

(在这里n=m)

四、逻辑回归与svm的选择

假设特征数为n,训练样本为m

1)n相对于m很大的时候,用逻辑回归或者svm(核函数为线性函数/无核函数)(n=10000,m=10,100...)

2)n比较小,m大小适中用svm(核函数为高斯函数)(n=1-1000,m=10-10000)

3)n比较小,m比较大则添加特征项,然后用逻辑回归或者svm(核函数为线性函数/无核函数)

五、偏差与方差

1.C比较大或者σ的平方比较小的时候偏差小,方差大

2.C比较小或者σ的平方比较大的是偶偏差大,方差小

猜你喜欢

转载自blog.csdn.net/naocanmani/article/details/83541083
今日推荐