机器学习---第七讲支持向量机

来源:互联网 发布:sql表字段设置默认值 编辑:程序博客网 时间:2024/06/10 00:31

【1.支持向量机SVM】

1)回忆逻辑回归

2)构建新的代价函数


3)构建支持向量机

替换成cost1(z)和cost0(z)

删去常量m,不会影响最小值


逻辑回归:A+λB

                 设置不同的λ值,达到最小化J的效果(λ大,给B很大权重)

支持向量机:CA+B(C小,给B很大权重)

4)假设函数

       支持向量机会直接预测假设函数为1还是0


【2.大间距分类器 Large Margin Classifier】

1)代价函数

 

2)C的取值

C的取值应该在分类是否犯错和margin的大小上做一个平衡。
e.g如下图所示,我们可以把绿线、粉线、蓝线或者黑线中的任意一条线当做decision boundary,但是哪一条最好呢?
 
[分析]
绿色、粉色、蓝色这三类boundary离数据非常近,我们再加进去几个数据点,很有可能这个boundary就不能很好的进行分类了。
黑色的decision boundary距离两个类都相对较远,我们希望获得的就是这样的一个decision boundary。

margin:黑色的决策界 和训练样本之间有更大的最短距离


 C小(λ过小→过拟合),decision boundary则呈现为黑线;若C很大,就呈现粉线。
[小结]

对于一个数据集x,margin就是这个数据及所有点的margin中离hyperplane最近的距离,SVM的目的就是找到最大margin的hyperplane。

C越大,就越不能容忍误分类,哪怕margin变得很小也在所不惜;C越小,就越看重margin是否大,哪怕分错数据也无所谓。

【3.核函数Kernel】

1)非线性决策边界:x的幂次项

       构造多项式特征变量:通过加入高阶项,可以得到更多特征变量


2)非线性决策边界:核函数

       通过计算输入原始向量与landmark之间的相似度来计算核值f


高斯核函数:


特征变量f1:X与第一个标记点的远近程度

       x和l越相似,f越接近于1;

       x与l相差越远,f越接近于0;

3)引入核函数

       引入核函数后,几何上来说更直观的表示是否应该归为该类。

  • 通过训练数据集呢,我们得到了一组θ值(θ0,θ1,θ2,θ3)=(-0.5,1,1,0)以及三个点(l1,l2,l3)
  • 对于每个test数据集中的点,首先计算它到(l1,l2,l3)各自的相似度:核函数的值(f1,f2,f3),然后带入多项式θ0f0+θ1f1+…+θnfn计算,当该式>=0时,预测结果为类内点(正样本,y=1);else预测为负样本,y=0。


红色:训练样本接近l(1),所以f1≈1,而f2≈0,f3≈0

靠近l(1)、l(2)的都被判为1;远离的都被判为0

4)landmark的选取和θ的求解

       选择m个训练数据,并取这m个训练数据为m个landmark(l)点(不考虑证样本还是负样本)


5)Kernels的SVM过程

  • 在SVM的训练中,将Gaussian Kernel带入cost function,通过最小化该函数可得到参数θ,并根据该参数θ进行预测:若θTf >=1,predict y = 1;else predict y = 0;
  • 与之前讲过的cost function的区别在于用kernel f 代替了x。

6)代价函数中的C和σ2

由于C=1/λ,所以

       C大,λ小,overfit,产生low bias,high variance

       C小,λ大,underfit,产生high bias,low variance

对于方差σ2,和正态分布中的定义一样,

       σ2大,x-f 图像较为扁平;underfit,产生high bias,low variance

       σ2小,x-f 图像较为窄尖; overfit,产生low bias,high variance

      

过拟合即只有一小部分范围内的x享有较大f,或者说x的覆盖面太窄了,所以应当增大σ2

 

7)SVM的使用

要进行SVM学习,有两类:

l  一种是No kernel(linear kernel),hθ(x)=g(θ0x0+θ1x1+…+θnxn),predicty=1 if θTx >= 0;

l  另一种是使用kernel f(比如Gaussian Kernel),hθ(x)=g(θ0f0+θ1f1+…+θnfn),这里需要选择方差参数σ2


【算法的选择】

       n表示feature个数,m表示training example个数。

logistic regression/linear kernel的SVM

      特征数相对于训练集较大,如n=10000,m=10~1000

原因:1.线性函数就可以工作得不错;2.没有过多的数据拟合复杂的非线性函数

Gaussian Kernel的SVM

      n小,m不大不小,如n=1~1000,m=10~10000

增加更多的feature+ logisticregression/linear kernel的SVM

      n很小,m很大,如n=1~1000,m>50000

原因:1.模型简单即可解决;2.如果还用Gaussian kernel会导致很慢

神经网络可以解决以上任何问题,但是速度是一个很大的问题。










阅读全文
1 0
原创粉丝点击