支持向量机

1.SVM

  • 是监督学习的一种
  • 回顾逻辑回归:

  if y=1, then hθ(x)1 and ΘTx0

   if y=0, then hθ(x)0 and ΘTx0

cost function:

  • 为了做出支持向量机,改变逻辑回归中的以下两项:

,

使得ΘTx>1或ΘTx<-1时,值为0

   

设ΘTx=z,

cost0(z)=max(0,k(1+z))

cost1(z)=max(0,k(1z))

  • 回忆逻辑回归的代价函数:

   改成支持向量机的格式:

   

   求解上式的参数时,可以忽略1/m(因为是求导来求的),得到:

   

      ( C=1/λ)

  • SVM的假说h没有被解释为 y为1或0的概率(逻辑回归假说中的那样). 相反,它输出1或者0 (在技术上讲,它是一个判别函数discriminant function).

 

2.Large Margin Intuition

  • 可以把SVM看成大边沿分类器(large margin classifier)

    If y=1, we want ΘTx1 (not just 0)

    If y=0, we want ΘTx1 (not just <0)

  • 当我们把常量C设置成一个很大的值 (e.g. 100,000), 我们的优化函数将会限制Θ,这样等式 A(m个代价函数的总和)等于0. 我们在Θ上施加了如下的限制:

   ΘTx1 if y=1 and ΘTx1 if y=0.

  • 如果C很大,我们必须选择参数Θ这样:

   ∑mi=1  y(i)cost1(ΘTx)+(1y(i))cost0(ΘTx)=0

    这样的话,代价函数变成了:

      

  • 回忆逻辑回归的决策边界(分开正负样本),这里SVM的决策边界是离正样本和负样本都尽量远。决策边界到最近的样本的距离叫做边沿margin. 因为SVMs最大化该边沿, 它经常被叫做Large Margin Classifier.只有当C很大时候的时候才能实现该最大边沿.
  • 数据的正负样本如果可以被一条直线分开,就说它是线性可分的(linearly separable).
  • 如果有某些数据没被正确分类,又不想影响决策边界,可以减小C来简化决策边界 (类似改变λ).

 3.Mathematics Behind Large Margin Classification

 4.核函数

  Kernels I

 通过SVM的核(kernels)可以做出复杂的,非线性的分类器。

 给定x,根据对标记l(1), l(2), l(3)的接近程度计算新的特征。

  • x和标记l(i)的相似度如下表示:

 

 也可写为:

  

   该相似度函数称为高斯核( Gaussian Kernel

 高斯核的特性:离得近为1,离得远为0

 

  然后计算:

  l(1)f1

  l(2)f2

  l(3)f3

  …

  hΘ(x)=Θ1f1+Θ2f2+Θ3f3+

  σ2是高斯核的参数,它可以增加或减少特征f的胖瘦,结合 Θ的值,我们可以选择这些标记来得到决策边界的大概形状。

  Kernels II

    得到标记的一种方式是将训练集视为标记,这样的话一共有m个标记,一项一个标记。

    给一项x:f1=similarity(x,l(1))f2=similarity(x,l(2))f3=similarity(x,l(3))...

  这样就得到一个特征向量,f(i) 向量是 x(i)的所有特征,为了和 Θ计算的统一,加上f0=1.

  

  这样要得到参数Θ,我们就可以用 f(i)代替 x(i)得到的SVM将其最小化来求。

  

  生成f的核函数也可以用在逻辑回归上,然而,因为用在SVM上的计算优化,和SVM结合使用要比与其它结合更快一些,所以通常和SVM结合使用。

5.选择SVM的参数

  • C:C=1/λ,所以增大C会低偏差高方差,反之高偏差低方差。
  • σ2:联想高斯函数,增大σ2函数变平缓,反之变陡峭。

6.SVM的使用

  可用的库:'liblinear' 和 'libsvm',会要求你给出核函数。

  实际应用中,要做的就是:

  • 选择参数 C
  • 选择核函数(相似度函数)
  • 无核函数 ("线性"核函数) -- 给出标准线性分类器,当n很大m很小的时候选择
  • 高斯核(above) -- 需要选σ2n很小m很大的时候选择

    注意:

  用高斯核函数之前一定要特征放缩(feature scaling)

    不是所有的核函数都是合法的,他们必须满足"Mercer's Theorem"以保证SVM包的优化正确运行没有偏离。

7.多类归类

  许多SVM库内置了多类归类,可以像在逻辑回归里用到的one-vs-all方法一样,y1,2,3,,K 对应 Θ(1),Θ(2),,Θ(K).然后选择第i类使得 (Θ(i))Tx最大。

8.逻辑回归与SVMs的比较

  如果n很大(接近于m),用逻辑回归, 或者没有核函数的SVM("线性核")

  如果n很小,m不大不小, 用高斯核函数的SVM

  如果n很小m很大,就增加更多的特征,然后用逻辑回归, 或者没有核函数的SVM

  第一种情况,我们没有足够的例子(训练集)也没必要得到复杂的多项式假说.在第二种情况,我们有足够的例子所以需要复杂的非线性假说.在最后一种情况,我们希望增加特征使得可以逻辑回归.

  注意:神经网络对于这些所有情况都可能表现的好,但是训练起来可能更慢.

9.扩展链接http://web.mit.edu/6.034/wwwbob/svm-notes-long-08.pdf

 

 

posted @ 2016-10-11 08:21  cherry_yue  阅读(201)  评论(0)    收藏  举报