SVM
基础定义
分类器 监督算法
代价函数
基于逻辑回归的代价函数,我们逐步调节实现SVM的代价函数:
- 修正cost(i)
图中的紫色线为更正之后的cost. - 消去常数1/m
- 权重常数位置改变
最终得到的代价函数数学形式为:
J
(
θ
)
=
C
∑
i
=
1
m
[
y
(
i
)
c
o
s
t
1
(
θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
c
o
s
t
0
(
θ
T
x
(
i
)
)
)
]
+
λ
/
2
∑
j
=
1
n
θ
j
2
J(\theta)=C\sum_{i=1}^m[y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)}))]+\lambda/2\sum_{j=1}^n\theta_j^2
J(θ)=C∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i)))]+λ/2∑j=1nθj2
目标
支持向量机努力用一个最大的边距来分离样本,因此SVM有时候也被称为大间距分类器。
这也与参数设置有关系,如果参数C设置的非常大的话,那么代价函数就可以简化为:
如果直观理解的话,参数C设置的非常大,也就是不允许训练集出现错误,很容易因为一个例子使得边界发生巨大的变化,而正则化的部分可以对其进行修正。
大间距分类背后的数学原理
接下来,我们从直观的角度分析为什么SVM会得到间隔最大的分类边界。
假设:
- C非常大
- θ 0 = 0 \theta_0=0 θ0=0
为了方便分析,我们设
p
(
i
)
p^{(i)}
p(i)为
x
(
i
)
x^{(i)}
x(i)在
θ
\theta
θ方向上的映射,因此可以得到:
θ
T
x
(
i
)
=
p
(
i
)
∣
∣
θ
∣
∣
\theta^Tx^{(i)}=p^{(i)}||\theta||
θTx(i)=p(i)∣∣θ∣∣
核函数
我们选取高斯核函数作为我们的相似度函数:
s
i
m
i
l
a
r
i
t
y
(
x
,
y
)
=
e
−
∣
∣
x
−
y
∣
∣
2
2
σ
2
similarity(x,y)=e^{-\frac{||x-y||^{2}}{2\sigma^2}}
similarity(x,y)=e−2σ2∣∣x−y∣∣2
使用核函数重新构造变量项的原因
如果我们仍然使用多项式的方法,那么我们需要定义项: x 1 x 2 , x 1 2 , x 2 2 x_1x_2,x_1^2,x_2^2 x1x2,x12,x22;很多时候特征值的数目会超过我们的想象,因此按照这种办法,所需要定义的项太多了,因此我们需要别的方法来定义特征变量。
如何使用核函数
我们通过标记点和新特征函数,来定义新的特征变量。
设标记的点为
l
l
l,那么随意取x点,可以得到核函数的值为:
如果
l
≈
x
l\approx x
l≈x,那么核函数的值可以得到趋近于1;如果距离非常远,那么核函数的值趋近于0.
这就是核函数或者说是相似度函数所具有的物理意义。
如何确定标记点
- 直接使用样本点作为标记点。
使用核函数之后的代价函数
f ( i ) ( x ) = s i m ( x , x ( i ) ) f^{(i)}(x)=sim(x,x^{(i)}) f(i)(x)=sim(x,x(i))
J ( θ ) = C ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T f ( i ) ) ) ] + λ / 2 ∑ j = 1 n θ j 2 J(\theta)=C\sum_{i=1}^m[y^{(i)}cost_1(\theta^Tf^{(i)})+(1-y^{(i)})cost_0(\theta^Tf^{(i)}))]+\lambda/2\sum_{j=1}^n\theta_j^2 J(θ)=C∑i=1m[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i)))]+λ/2∑j=1nθj2
关于参数的直观理解:
如果C比较大的话,那么直观理解就是容错性比较差,容易出现过拟合;也就是低偏差,高方差。
如果
σ
\sigma
σ比较大的话,那么直观理解就是特征变量
f
(
i
)
f^{(i)}
f(i)变化的较为平滑;就是高偏差,低方差。
实际应用
- 选择参数
(1) 选择 C C C.
(2) 选择核函数。
一种选择是不用核函数,这时候也就可以理解为使用线性核函数。当n很大,m很小时,可以选择这种核函数。
第二种选择是使用高斯核函数。这时候需要选择参数 σ \sigma σ