Week7 支持向量机,SVM
1.支持向量机(SVM,Support Vector Machine)的数学表达
本章中的向量和矩阵不再加粗,请读者自行判断,如有疑问可以留言咨询。
1.1从逻辑回归过渡到SVM
从另一角度分析逻辑回归的sigmoid函数。对于二分类问题,我们希望的是
如
果
y
=
1
,
那
么
h
θ
(
x
)
→
1
,
⟺
θ
T
x
≫
0
如果y=1,那么h_θ (\textbf{x})→1,⟺\textbf{θ}^T \textbf{x}≫0
如果y=1,那么hθ(x)→1,⟺θTx≫0
如
果
y
=
0
,
那
么
h
θ
(
x
)
→
0
,
⟺
θ
T
x
≪
0
如果y=0,那么h_θ (\textbf{x})→0,⟺\textbf{θ}^T \textbf{x}≪0
如果y=0,那么hθ(x)→0,⟺θTx≪0
那么,对于一个样本(x,y)来说,逻辑回归的损失函数为:
c
o
s
t
=
−
y
log
h
θ
(
x
)
−
(
1
−
y
)
log
(
1
−
h
θ
(
x
)
)
cost=-y\log h_θ(x)-(1-y)\log(1-h_θ(x))
cost=−yloghθ(x)−(1−y)log(1−hθ(x))
=
−
y
log
1
1
+
e
−
θ
T
x
−
(
1
−
y
)
log
(
1
−
1
1
+
e
−
θ
T
x
)
=-y\log\frac{1}{ 1+e^{-\textbf{θ}^T \textbf{x}}}-(1-y)\log(1-\frac{1}{ 1+e^{-\textbf{θ}^T \textbf{x}}})
=−ylog1+e−θTx1−(1−y)log(1−1+e−θTx1)
SVM是当y=1时,将
−
log
1
1
+
e
−
z
-\log \frac{1}{ 1+e^{-z}}
−log1+e−z1项替换为
c
o
s
t
1
(
z
)
cost_1(z)
cost1(z),其函数图像如上图左所示,由两条直线表示;同理当y=0时,用
c
o
s
t
0
(
z
)
cost_0(z)
cost0(z)替代
−
log
(
1
−
1
1
+
e
−
z
)
-\log (1-\frac{1}{ 1+e^{-z}})
−log(1−1+e−z1)项,如上图右所示。其中,cost(z)函数由于像门的合叶,因此也叫Hinge损失函数。
理论上,想要完全区分正负例,只需要
θ
T
x
>
0
θ^Tx>0
θTx>0或
θ
T
x
<
0
θ^Tx<0
θTx<0即可。但是SVM更加严格,为了表示出
θ
T
x
>
>
0
θ^Tx>>0
θTx>>0,所以
c
o
s
t
1
(
z
)
cost_1(z)
cost1(z)是以(1,0)作为转折点,而不是(0,0)。
c
o
s
t
0
(
z
)
cost_0(z)
cost0(z)同理。
1.2 SVM的损失函数
经过1.1的变化后,可以得到SVM的损失函数表达式如下:
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
)
)
]
+
1
2
∑
j
=
1
n
θ
j
2
J(θ)=C\sum_{i=1}^m[y^{(i)}cost_1(θ^Tx^{(i)})+(1-y^{(i)})cost_0(θ^Tx^{(i)})]+\frac{1}{2}\sum_{j=1}^nθ_j^2
J(θ)=Ci=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21j=1∑nθj2
其中,通常C=1/λ。作为对比,以下是逻辑回归的损失函数:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
h
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
(
x
(
i
)
)
)
]
+
λ
2
m
∑
j
=
1
n
θ
j
2
J(θ)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}\log h(x^{(i)})+(1-y^{(i)})\log (1-h(x^{(i)}))]+\frac{λ}{2m}\sum_{j=1}^nθ_j^2
J(θ)=−m1i=1∑m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]+2mλj=1∑nθj2
通常人们用支持向量机的时候,会把1/m这一项删去,没有特殊的原因,也不会影响最优参数的结果。另外,会在正则项的系数上做一些变化,把原先的超参数λ融入到超参数C中,并从第二项移到第一项。虽然数学本质相同,但是表达了两个损失函数正则化的侧重点不同:逻辑回归的正则化侧重点在于第二项的正则项,而SVM的侧重点在于第一项。
1.3 SVM的预测值
和逻辑回归不同,SVM输出的不是预测值概率,而直接是类别,即:
h
θ
(
x
(
i
)
)
=
{
1
,
i
f
θ
T
x
(
i
)
≥
0
0
,
i
f
θ
T
x
(
i
)
<
0
)
h_θ (x^{(i)})=\begin{cases} 1, if \quad θ^T x^{(i)}≥0\\ 0, if \quadθ^T x^{(i)}<0) \end{cases}
hθ(x(i))={1,ifθTx(i)≥00,ifθTx(i)<0)
2. SVM的理解
当C很大的时候会出现什么情况?(相当于正则项很小)
这时根据SVM的损失函数可知,为了尽量减小损失值,又由于C很大,因此会思考使得第一项尽量为0,只留下第二项。要使第一项为零,需要满足如下条件:
{
当
y
=
1
时
,
c
o
s
t
1
(
θ
T
x
(
i
)
)
=
0
,
即
θ
T
x
(
i
)
≥
1
当
y
=
0
时
,
c
o
s
t
0
(
θ
T
x
(
i
)
)
=
0
,
即
θ
T
x
(
i
)
≤
−
1
\begin{cases} 当y=1时,cost_1 (θ^T x^{(i)})=0,即θ^T x^{(i)}≥1\\ 当y=0时,cost_0 (θ^T x^{(i)})=0,即θ^T x^{(i)}≤-1 \end{cases}
{当y=1时,cost1(θTx(i))=0,即θTx(i)≥1当y=0时,cost0(θTx(i))=0,即θTx(i)≤−1
此时,损失值的优化问题就转换为:
min
θ
1
2
∑
j
=
1
n
θ
j
2
,
s
.
t
.
{
当
y
=
1
时
,
θ
T
x
(
i
)
≥
1
当
y
=
0
时
,
θ
T
x
(
i
)
≤
−
1
\min\limits_θ \frac{1}{2} \sum_{j=1}^n θ_j^2,s.t.\begin{cases} 当y=1时,θ^T x^{(i)}≥1\\ 当y=0时,θ^T x^{(i)}≤-1 \end{cases}
θmin21j=1∑nθj2,s.t.{当y=1时,θTx(i)≥1当y=0时,θTx(i)≤−1
转化后的优化问题会在完全分割正负例的基础上(如上图的粉线、绿线和黑线),找到上图黑线的分割线,使得正负例距离分割线最近的样本与分割线的距离最大,因此SVM也叫large margin classifier。图中,正负例距离分割线最近的样本与分割线的距离就称作间距(margin)。
切记,上述情况是在超参数C很大的时候得到的。
实际上,SVM的超参数通常设置的不会很大,也就使得SVM算法本身要比上述的large margin classifier更成熟。这体现在SVM对于离群样本等异常值的处理,比如下图:
当C选很大时,最终可能得到的是图中粉色的分割线。而SVM中选择合适的C数值时,最终可以得到黑色分割线。很明显,黑色分割线是更符合实际的。
因此,超参数C其实和逻辑回归的超参数λ类似,可以控制模型的泛化能力。但效果与λ正好相反。当C较大时,相当于λ较小,可能导致模型过拟合;当C较小时,相当于λ较大,可能导致模型欠拟合。
3. SVM的推导
为什么SVM算法能找出间距最大的决策边界?
3.1 吴恩达课程的思路
1).向量内积的几何说明
假设两个向量
u
⃗
,
v
⃗
u ⃗,v ⃗
u⃗,v⃗。
向量内积
u
⃗
⋅
v
⃗
=
p
⋅
∣
∣
u
⃗
∣
∣
u ⃗·v ⃗=p·||u ⃗||
u⃗⋅v⃗=p⋅∣∣u⃗∣∣
其中,p是向量v ⃗投影到向量u ⃗上的长度,是个标量。注意,此处p是由正负的,如果两个向量夹角大于90°,则p是负值,如下图。
其实就是向量
u
⃗
u ⃗
u⃗的范数,即长度,也是标量。
2). SVM的决策边界
如第2章中SVM的优化问题转换为:
min
θ
1
2
∑
j
=
1
n
θ
j
2
,
s
.
t
.
{
当
y
=
1
时
,
θ
T
x
(
i
)
≥
1
当
y
=
0
时
,
θ
T
x
(
i
)
≤
−
1
\min\limits_θ \frac{1}{2} \sum_{j=1}^n θ_j^2,s.t.\begin{cases} 当y=1时,θ^T x^{(i)}≥1\\ 当y=0时,θ^T x^{(i)}≤-1 \end{cases}
θmin21j=1∑nθj2,s.t.{当y=1时,θTx(i)≥1当y=0时,θTx(i)≤−1
假设
θ
=
(
θ
0
,
θ
1
,
θ
2
)
′
θ=(θ_0,θ_1,θ_2)'
θ=(θ0,θ1,θ2)′,令
θ
0
=
0
θ_0=0
θ0=0方便理解且不影响后续推导的正确性。此时有:
min
θ
1
2
∑
j
=
1
n
θ
j
2
=
1
2
(
θ
1
2
+
θ
2
2
)
2
=
1
2
∣
∣
θ
∣
∣
2
等
价
于
min
θ
∣
∣
θ
∣
∣
\min\limits_θ\frac{1}{2}\sum_{j=1}^nθ_j^2=\frac{1}{2}(\sqrt{θ_1^2+θ_2^2})^2=\frac{1}{2}||θ||^2等价于\min\limits_θ||θ||
θmin21j=1∑nθj2=21(θ12+θ22)2=21∣∣θ∣∣2等价于θmin∣∣θ∣∣
其中,限制条件s.t.又可以改写成:
s
.
t
.
{
当
y
=
1
时
,
θ
T
x
(
i
)
≥
1
当
y
=
0
时
,
θ
T
x
(
i
)
≤
−
1
⟺
{
p
(
i
)
⋅
∣
∣
θ
∣
∣
≥
1
p
(
i
)
⋅
∣
∣
θ
∣
∣
≤
−
1
s.t.\begin{cases} 当y=1时,θ^T x^{(i)}≥1\\ 当y=0时,θ^T x^{(i)}≤-1 \end{cases}⟺ \begin{cases} p^{(i)}· ||θ||≥1\\ p^{(i)}· ||θ||≤-1 \end{cases}
s.t.{当y=1时,θTx(i)≥1当y=0时,θTx(i)≤−1⟺{p(i)⋅∣∣θ∣∣≥1p(i)⋅∣∣θ∣∣≤−1
其中,
p
(
i
)
p^{(i)}
p(i)是样本
x
(
i
)
x^{(i) }
x(i)投影到参数向量θ上的距离。此处需要注意,参数向量其实就是最终决策边界的法向向量,所以样本
x
(
i
)
x^{(i) }
x(i)投影到参数向量θ上的距离
p
(
i
)
p^{(i)}
p(i),其实就是样本
x
(
i
)
x^{(i) }
x(i)和决策边界的距离。
因为限制条件s.t.已经把决策边界控制在绝大部分正例在边界一侧,绝大部分负例在边界另一侧,因此对于负例来说,
p
(
i
)
<
0
p^{(i)}<0
p(i)<0(如下图)。所以上述限制条件其实可以统一写成:
p
(
i
)
⋅
∣
∣
θ
∣
∣
≥
1
p^{(i)}· ||θ||≥1
p(i)⋅∣∣θ∣∣≥1
综上所述,SVM想要使得||θ||最小,那么,根据限制条件可知,等价于使得
p
(
i
)
p^{(i)}
p(i)最大,即样本点到决策边界的距离越大越好。因此,SVM算法能找出间距最大的决策边界。
3.2 更数学的SVM推导思路
1).支持向量机原理的引论
对于一般的直线:Ax+By+C=0,某点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)到该直线的距离为:
d
=
∣
A
x
0
+
B
y
0
+
C
∣
A
2
+
B
2
d=\frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}}
d=A2+B2∣Ax0+By0+C∣
其实
∣
A
x
0
+
B
y
0
+
C
∣
=
±
(
A
x
0
+
B
y
0
+
C
)
|Ax_0+By_0+C|=±(Ax_0+By_0+C)
∣Ax0+By0+C∣=±(Ax0+By0+C),正负只是说明该点实在直线的正半区还是负半区,无实际数值意义,所以正负可以去掉,所以有:
d
=
A
x
0
A
2
+
B
2
+
B
y
0
A
2
+
B
2
+
C
A
2
+
B
2
d=\frac{Ax_0 }{\sqrt{A^2+B^2}}+\frac{By_0 }{\sqrt{A^2+B^2}}+\frac{C}{\sqrt{A^2+B^2}}
d=A2+B2Ax0+A2+B2By0+A2+B2C
上式可以看成向量的形式:
d
=
[
A
A
2
+
B
2
B
A
2
+
B
2
]
(
x
0
y
0
)
+
C
A
2
+
B
2
d=\begin{bmatrix} \frac{A}{\sqrt{A^2+B^2}}\\ \frac{B}{\sqrt{A^2+B^2}} \end{bmatrix}(x_0\quad y_0)+\frac{C}{\sqrt{A^2+B^2}}
d=[A2+B2AA2+B2B](x0y0)+A2+B2C
令:
w
⃗
T
=
[
A
B
]
,
x
=
(
x
0
x
1
=
y
0
)
,
b
=
C
A
2
+
B
2
,
∣
∣
w
∣
∣
=
A
2
+
B
2
w ⃗^T=\begin{bmatrix}A\\B\end{bmatrix},x=(x_0\quad x_1=y_0),b=\frac{C}{\sqrt{A^2+B^2}},||w||=\sqrt{A^2+B^2}
w⃗T=[AB],x=(x0x1=y0),b=A2+B2C,∣∣w∣∣=A2+B2
∴
d
=
1
∣
∣
w
⃗
∣
∣
w
⃗
T
⋅
x
+
b
∴d=\frac{1}{||w ⃗ ||}w ⃗ ^T·x+b
∴d=∣∣w⃗∣∣1w⃗T⋅x+b
如果
1
∣
∣
w
⃗
∣
∣
w
⃗
T
\frac{1}{||w ⃗ ||}w ⃗ ^T
∣∣w⃗∣∣1w⃗T是归一化后的向量,
x
⃗
x ⃗
x⃗是数据的特征组成的某样本点向量,那么
d
=
1
∣
∣
w
⃗
∣
∣
w
⃗
T
⋅
x
⃗
1
+
b
d=\frac{1}{||w ⃗ ||}w ⃗ ^T·x ⃗ _1+b
d=∣∣w⃗∣∣1w⃗T⋅x⃗1+b表示的就是样本点
x
⃗
1
x ⃗_1
x⃗1到“直线
0
=
1
∣
∣
w
⃗
∣
∣
w
⃗
T
⋅
x
+
b
0=\frac{1}{||w ⃗ ||}w ⃗ ^T·x+b
0=∣∣w⃗∣∣1w⃗T⋅x+b”的距离(正负表示正半区或负半区)。每个样本点都能求出一个距离值。所以我们需要找一条直线,使得最近的样本点距离该直线最远。即:
(
w
∗
,
b
∗
)
=
arg
max
w
,
b
min
i
(
1
∣
∣
w
⃗
∣
∣
w
⃗
T
⋅
x
⃗
i
+
b
)
(w^*,b^* )=\arg\max\limits_{w,b} \min\limits_i(\frac{1}{||w ⃗ ||} w ⃗^T·x ⃗_i+b)
(w∗,b∗)=argw,bmaximin(∣∣w⃗∣∣1w⃗T⋅x⃗i+b)
推广到多维空间,所求的就是一个分割超平面。
2).线性可分支持向量机
记样本点数据为:
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
N
,
y
N
)
T={(x_1,y_1 ),(x_2,y_2 ),…,(x_N,y_N )}
T=(x1,y1),(x2,y2),…,(xN,yN)
其中,
x
i
∈
R
n
,
y
i
∈
+
1
,
−
1
,
i
=
1
,
2
,
…
,
N
x_i∈R^n,y_i∈{+1,-1},i=1,2,…,N
xi∈Rn,yi∈+1,−1,i=1,2,…,N;(若n>1则,x_i为向量)
称x_i为第i个实例,
y
i
y_i
yi为
x
i
x_i
xi的类标记,当
y
i
=
+
1
y_i=+1
yi=+1时,称
x
i
x_i
xi为正例;反之
y
i
=
−
1
y_i=-1
yi=−1时,称
x
i
x_i
xi为负例。(为什么这边要用±1?因为后边方便推导。当然也能多分类,只是用2分类推导作示例。另外,可以调高数值来调高正例或负例的权值,比如用-1和50,则说明正例权值调高。在样本不平衡时比较有效)
给定线性可分的训练数据集,通过间隔最大化得到的分离超平面为:
0
=
1
∣
∣
w
∗
∣
∣
w
∗
⋅
Φ
(
x
)
+
b
∗
0=\frac{1}{||w^*||}w^*·Φ(x)+b^*
0=∣∣w∗∣∣1w∗⋅Φ(x)+b∗
相应的分类决策函数:(即正为1,负为-1)
f
(
x
)
=
s
i
g
n
(
1
∣
∣
w
∗
∣
∣
w
∗
⋅
Φ
(
x
)
+
b
∗
)
f(x)=sign(\frac{1}{||w^*||}w^*·Φ(x)+b^*)
f(x)=sign(∣∣w∗∣∣1w∗⋅Φ(x)+b∗)
该决策函数称为线性可分支持向量机。
其中,Φ(x)是某个确定的特征空间转换函数,作用是将x映射到更高的维度,是已知量,即下文中的核函数。注意,下面推导里,
Φ
(
x
(
i
)
)
Φ(x^{ (i)})
Φ(x(i))都是个关于各种特征的向量。
该问题等价于求解相应的凸二次规划问题。
3).SVM目标函数的推导
根据题设有
令
y
(
x
)
=
w
⃗
T
⋅
Φ
(
x
)
+
b
y(x)=w ⃗^T·Φ(x)+b
y(x)=w⃗T⋅Φ(x)+b
{
y
(
x
(
i
)
)
>
0
⇔
y
(
i
)
=
+
1
y
(
x
(
i
)
)
<
0
⇔
y
(
i
)
=
−
1
⇔
y
(
i
)
y
(
x
(
i
)
)
>
0
\begin{cases} y(x^{(i)})>0⇔y^{(i)}=+1\\ y(x^{(i)})<0⇔y^{(i)}=-1\\ \end{cases}⇔y^{(i)}y(x^{(i)})>0
{y(x(i))>0⇔y(i)=+1y(x(i))<0⇔y(i)=−1⇔y(i)y(x(i))>0
w ⃗,b等比例缩放(相当于y=2x+1→y=4x+2),则t*y的值同样缩放,从而:
y
(
i
)
y
(
x
(
i
)
)
∣
∣
w
∣
∣
=
y
(
i
)
⋅
(
w
T
⋅
Φ
(
x
(
i
)
)
+
b
)
∣
∣
w
∣
∣
>
0
\frac{y^{(i)}y(x^{(i)})}{ ||w||}=\frac{y^{(i)}·(w^T·Φ(x^{(i)})+b) }{ ||w||}>0
∣∣w∣∣y(i)y(x(i))=∣∣w∣∣y(i)⋅(wT⋅Φ(x(i))+b)>0
其中,|(|w ⃗ |)|=√(w_12+w_22+⋯),除以||w ⃗||是对w ⃗进行归一化,所以((w ⃗^T·Φ(x_i)+b))/(||w ⃗|| )项就代表样本点到超平面的距离。
所以目标函数就是求解使得距离超平面最近样本的间隔最大的分离超平面:
arg
max
w
,
b
1
∣
∣
w
∣
∣
min
i
[
y
(
i
)
⋅
(
w
T
⋅
Φ
(
x
(
i
)
)
+
b
)
]
\arg\max\limits_{w,b}{\frac{1}{ ||w||}\min\limits_i[y^{(i)}·(w^T·Φ(x^{(i)})+b)]}
argw,bmax∣∣w∣∣1imin[y(i)⋅(wT⋅Φ(x(i))+b)]
通过w ⃗,b等比例缩放,总能够使得min┬i[(w ⃗T·Φ(x((i)))+b)]=1,即样本点距离分割平面的最小距离为1。所以有如下不等式:
∀
i
,
∣
y
(
i
)
∣
=
∣
y
(
i
)
⋅
(
w
T
⋅
Φ
(
x
(
i
)
)
+
b
)
∣
≥
1
∀i,|y^{(i)}|=|y^{(i)}·(w^T·Φ(x^{(i)})+b)|≥1
∀i,∣y(i)∣=∣y(i)⋅(wT⋅Φ(x(i))+b)∣≥1
由于上述不等式的等号是可取的(当选取距离分割平面最近的样本点时取得),所以目标函数转变为:
arg
max
w
,
b
1
∣
∣
w
⃗
∣
∣
min
i
[
y
(
i
)
⋅
(
w
⃗
T
⋅
Φ
(
x
(
i
)
)
+
b
)
]
⇒
arg
max
w
,
b
1
∣
∣
w
⃗
∣
∣
\arg\max\limits_{w,b} \frac{1}{||w ⃗||}\min\limits_i[y^{(i)}·(w ⃗^T·Φ(x^{(i)})+b)]⇒\arg\max\limits_{w,b}\frac{1}{||w ⃗||}
argw,bmax∣∣w⃗∣∣1imin[y(i)⋅(w⃗T⋅Φ(x(i))+b)]⇒argw,bmax∣∣w⃗∣∣1
1
∣
∣
w
⃗
∣
∣
\frac{1}{||w ⃗||}
∣∣w⃗∣∣1求最大值其实就是
∣
∣
w
⃗
∣
∣
||w ⃗||
∣∣w⃗∣∣求最小值。因为
∣
∣
w
⃗
∣
∣
||w ⃗||
∣∣w⃗∣∣有根号,所以再将
∣
∣
w
⃗
∣
∣
||w ⃗||
∣∣w⃗∣∣取平方加系数0.5,即可得到最后的目标函数:
arg
max
w
,
b
1
∣
∣
w
∣
∣
⇒
arg
min
w
,
b
1
2
∣
∣
w
∣
∣
2
\arg\max\limits_{w,b}\frac{1}{ ||w||}⇒\arg\min\limits_{w,b}\frac{1}{2}||w||^2
argw,bmax∣∣w∣∣1⇒argw,bmin21∣∣w∣∣2
s
.
t
.
(
约
束
条
件
)
:
∀
i
,
∣
y
(
i
)
∣
=
∣
y
(
i
)
⋅
(
w
T
⋅
Φ
(
x
i
)
+
b
)
∣
≥
1
s.t.(约束条件):∀i,|y^{(i)}|=|y^{(i)}·(w^T·Φ(x_i)+b)|≥1
s.t.(约束条件):∀i,∣y(i)∣=∣y(i)⋅(wT⋅Φ(xi)+b)∣≥1
仔细观察可以发现,两者的解释角度虽然不太一样,但是最终的结果是一致的。吴恩达的思路更容易理解,是从直观角度进行解释;而邹博的解释比较理论,是从数学角度进行解释。
4).SVM目标函数优化问题的求解(拓展)
有时间再加上。
4.核函数(kernels)
4.1定义
核函数是某个确定的特征空间转换函数,作用是将x映射到其他维度。
如上图,通过高斯核函数,就将二维平面的样本集,映射到高维空间,使得样本原来线性不可分,转换为了线性可分。
核函数举例:
给定一组训练实例x,利用x的各个特征和我们预先选定的地标(landmarks)
l
(
1
)
,
l
(
2
)
,
l
(
3
)
l^{(1)},l^{(2)},l^{(3)}
l(1),l(2),l(3)的相似度(similarity)作为新的特征
f
1
,
f
2
,
f
3
f_1,f_2,f_3
f1,f2,f3。如下图所示:
f
i
=
s
i
m
i
l
a
r
i
t
y
(
x
,
l
(
i
)
)
=
e
x
p
(
−
∣
∣
x
−
l
(
i
)
∣
∣
2
2
σ
2
)
f_i=similarity(x,l^{(i)})=exp(\frac{-||x-l^{(i)}||^2 }{ 2σ^2})
fi=similarity(x,l(i))=exp(2σ2−∣∣x−l(i)∣∣2)
其中,
∣
∣
x
−
l
(
i
)
∣
∣
2
=
∑
j
=
1
n
(
x
j
−
l
j
(
i
)
)
2
||x-l^{(i)}||^2=\sum_{j=1}^n(x_j-l_j^{(i)})^2
∣∣x−l(i)∣∣2=∑j=1n(xj−lj(i))2,是样本x中所有特征与地标
l
(
i
)
l^{(i)}
l(i)之间的距离之和。此处
k
(
x
,
l
(
i
)
)
=
s
i
m
i
l
a
r
i
t
y
(
x
,
l
(
i
)
)
k(x,l^{(i)})=similarity(x,l^{(i)})
k(x,l(i))=similarity(x,l(i))就是高斯核函数,是核函数的一种。
4.2地标的作用是什么?
如果样本x与地标
l
(
i
)
l^{(i)}
l(i)之间的距离近似于0,则新特征
f
i
→
1
f_i→1
fi→1;反之,如果距离较远,则新特征
f
i
→
0
f_i→0
fi→0。所以可以看出,新特征与地标的位置关系十分密切。
另外高斯核函数中的超参数σ控制了特征的泛性,σ越大,则特征的泛性越大,如下图。
通过设置地标,可以看到下图中,当θ=(-0.5,1,1,0)时,大概处于红色范围内的区域,预测值
h
θ
(
x
)
=
1
h_θ (x)=1
hθ(x)=1。而其他区域,预测值
h
θ
(
x
)
=
0
h_θ (x)=0
hθ(x)=0。所以,可以看出,地标基本上构建了一个非线性的决策边界。
4.3地标(Landmark)怎么选择?
通常是根据训练集的数据选择地标。如果训练集有m个样本,那么就选择m个地标,并且有 l ( i ) = x ( i ) l^{(i)}=x^{(i)} l(i)=x(i),i=1,2,…,m。注意,新特征 f = [ f 0 , f 1 , … , f m ] f=[f_0,f_1,…,f_m] f=[f0,f1,…,fm]中,通常也包含 f 0 = 1 f_0=1 f0=1这一特征。
4.4 核函数种类(拓展)
1).多项式核函数
k
(
x
,
l
)
=
(
α
⋅
‖
x
−
l
‖
a
+
r
)
b
,
α
,
a
,
b
,
r
为
常
数
k(x,l)=(α·‖x-l‖^a+r)^b,α,a,b,r为常数
k(x,l)=(α⋅‖x−l‖a+r)b,α,a,b,r为常数
2).高斯核函数RBF
k
(
x
,
l
)
=
e
x
p
(
−
‖
x
−
l
‖
2
2
σ
2
)
,
σ
是
超
参
数
k(x,l)=exp(\frac{-‖x-l‖^2}{2σ^2}),σ是超参数
k(x,l)=exp(2σ2−‖x−l‖2),σ是超参数
3).Sigmoid核函数
k
(
x
,
l
)
=
t
a
n
h
(
γ
⋅
‖
x
−
l
‖
a
+
r
)
,
γ
,
a
,
r
为
常
数
k(x,l)=tanh(γ·‖x-l‖^a+r),γ,a,r为常数
k(x,l)=tanh(γ⋅‖x−l‖a+r),γ,a,r为常数
核函数的选择:
1).如果有先验知识,知道要用哪种核函数,那就用该核函数;
2).如果数据够多,可以用实验的方式,交叉验证,选择效果最好的核函数;
3).如果没有任何先验知识,那就使用高斯核函数。(因为高斯核可以说是把数据映射到无穷维的空间,所以区分度就很强。但是也要注意过拟合问题。)
理论上,核函数也可以用在逻辑回归等地方,但是由于数学表达式不同,其他算法用核函数的计算量会很大,而SVM的算法中,刚好可以对核函数的计算做一点点改善,而大大提高算法效率(具体方法查阅数学理论)。所以通常核函数这种方法是用在SVM中。
也不是所有函数都能用作核函数,通常核函数需要满足“Mercer‘s Theorem”,才可以使核函数在优化计算中大大加速且保证收敛,否则,不满足条件的函数加入SVM后效率非常低,甚至会发散。
5.SVM的应用
5.1 SVM和核函数的结合
1).给定样本集
x
(
i
)
{x^{(i)}}
x(i),使用核函数计算新特征样本集
f
(
i
)
=
k
(
x
(
i
)
,
l
(
i
)
)
{f^{(i)}=k(x^{(i)},l^{(i)})}
f(i)=k(x(i),l(i));
注意,在使用高斯核函数前,必须做一下特征的缩放,因为特征值的范围通常非常不同。
2).将修改后的样本集代入SVM的损失函数进行优化计算:
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
)
)
]
+
1
2
∑
j
=
1
n
(
n
=
m
)
θ
j
2
J(θ)=C\sum_{i=1}^m[y^{(i)}cost_1(θ^Tf^{(i)})+(1-y^{(i)})cost_0(θ^Tf^{(i)})]+\frac{1}{2}\sum_{j=1}^{n(n=m)}θ_j^2
J(θ)=Ci=1∑m[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))]+21j=1∑n(n=m)θj2
实际使用时,在计算∑_(j=1)(n(n=m))▒θ_j2 =θ^T θ时,其实是计算了θ^T Mθ,M矩阵的选择是根据核函数而定的,这样做可以大大加快计算速度,原理这里不介绍了。所以,通常SVM的最优参数的求解是利用已有函数库来解决。
3). SVM主要调参超参数是两个,一个是C,一个是核函数的σ。
C较大时,相当于λ较小,可能会导致过拟合,高方差;
C较小时,相当于λ较大,可能会导致欠拟合,高偏差;
σ较大时,可能会导致欠拟合,高偏差;
σ较小时,可能会导致过拟合,高方差;
5.2 多分类SVM
类似于逻辑回归的one vs all方法。
5.3 SVR(Support Vector Regression)
SVM处理回归问题,即SVR。有时间再补充。
5.4 SVM的一些注意点
1).不使用任何核函数,也叫做使用“线性核函数”;
2).如果当n≫m时(eg:n=10000+,m=10~1000),即特征数量远大于样本数量,会使用逻辑回归或者不使用核函数的SVM,因为特征数量太大,核函数的使用会明显影响算法效率;
3).如果n较小,且m适中(eg:n=1~1000, m=10~10000),使用高斯核函数的SVM;
4).如果m≫n(eg:n=1~1000,m=50000+),要么增加样本特征,要么使用逻辑回归或者不使用核函数的SVM,不用核函数是因为算法效率会大大下降;
5). SVM是个凸优化过程,所以不用担心寻找到的是局部最优解。