支持向量机
1.SVM
- 是监督学习的一种
- 回顾逻辑回归:
if y=1, then hθ(x)≈1 and ΘTx≫0
if y=0, then hθ(x)≈0 and ΘTx≪0
cost function:
- 为了做出支持向量机,改变逻辑回归中的以下两项:
,
使得ΘTx>1或ΘTx<-1时,值为0
设ΘTx=z,
cost0(z)=max(0,k(1+z))
cost1(z)=max(0,k(1−z))
- 回忆逻辑回归的代价函数:
改成支持向量机的格式:
求解上式的参数时,可以忽略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 ΘTx≥1 (not just ≥0)
If y=0, we want ΘTx≤−1 (not just <0)
- 当我们把常量C设置成一个很大的值 (e.g. 100,000), 我们的优化函数将会限制Θ,这样等式 A(m个代价函数的总和)等于0. 我们在Θ上施加了如下的限制:
ΘTx≥1 if y=1 and ΘTx≤−1 if y=0.
- 如果C很大,我们必须选择参数Θ这样:
∑mi=1 y(i)cost1(ΘTx)+(1−y(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是高斯核的参数,它可以增加或减少特征fi 的胖瘦,结合 Θ的值,我们可以选择这些标记来得到决策边界的大概形状。
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) -- 需要选σ2,n很小m很大的时候选择
注意:
用高斯核函数之前一定要特征放缩(feature scaling)
不是所有的核函数都是合法的,他们必须满足"Mercer's Theorem"以保证SVM包的优化正确运行没有偏离。
7.多类归类
许多SVM库内置了多类归类,可以像在逻辑回归里用到的one-vs-all方法一样,y∈1,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