1. 优化目标
与Logistic回归和神经网络相比,支持向量机(SVM)在学习复杂的非线性方程时提供了一种更为清晰、更加强大的方式。
接下来,我们从Logistic回归开始展示我们如何一点一点修改来得到本质上的支持向量机。Logistic回归模型的假设函数是
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_{\theta }(x)=g(\theta ^{T}x)=\frac{1}{1+e^{-\theta ^{T}x}}
hθ(x)=g(θTx)=1+e−θTx1 ,常用的Logistic函数为S形函数,图像如下图所示。
Logistic假设函数:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
X
h_{\theta}(x)=\frac{1}{1+e^{-\theta^{T} X}}
hθ(x)=1+e−θTX1
Logistic回归的代价函数为:
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta )=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]+\frac{\lambda }{2m} \sum_{j=1}^{n} \theta _{j}^{2} J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
Logistic回归的优化目标为:
min
θ
J
(
θ
)
\min_{\theta}J(\theta )
θminJ(θ)
在SVM中,我们用 c o s t 0 ( z ) cost_{0}(z) cost0(z)来替换 − l o g ( 1 − 1 1 + e − z ) -log(1-\frac{1}{1+e^{-z}}) −log(1−1+e−z1),用 c o s t 1 ( z ) cost_{1}(z) cost1(z)来替换 − l o g 1 1 + e − z -log\frac{1}{1+e^{-z}} −log1+e−z1,如下图所示。
对优化目标来说,我们用
cost
0
(
θ
T
x
(
i
)
)
\operatorname{cost}_{0}\left(\theta^{T} x^{(i)}\right)
cost0(θTx(i)) 来替换
−
log
(
1
−
h
θ
(
x
(
i
)
)
)
-\log \left(1-h_{\theta}\left(x^{(i)}\right)\right)
−log(1−hθ(x(i))), 用
cost
1
(
θ
T
x
(
i
)
)
\operatorname{cost}_{1}\left(\theta^{T} x^{(i)}\right)
cost1(θTx(i)) 来替换
−
log
(
h
θ
(
x
(
i
)
)
)
-\log \left(h_{\theta}\left(x^{(i)}\right)\right)
−log(hθ(x(i))), 则SVM的优化目标为
min
θ
C
∑
i
=
1
m
[
y
(
i
)
cost
1
(
θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
cost
0
(
θ
T
x
(
i
)
)
]
+
1
2
∑
j
=
1
n
θ
j
2
\min _{\theta} C \sum_{i=1}^{m}\left[y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} x^{(i)}\right)+\left(1-y^{(i)}\right) \operatorname{cost}_{0}\left(\theta^{T} x^{(i)}\right)\right]+\frac{1}{2} \sum_{j=1}^{n} \theta_{j}^{2}
θminCi=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21j=1∑nθj2
其中,
C
C
C 控制着对误差分类的惩罚力度,
C
C
C 越大, SVM越努力地试图将训练样本全部正确分类。 Logistic回归的代价函数可以写为
A
+
λ
B
A+\lambda B
A+λB 的形式,若
λ
\lambda
λ 非常大,意味着
B
B
B 的权重很大。而SVM的 代价函数可以写为
C
A
+
B
CA+B
CA+B 的形式,对应于Logistic回归的代价函数形式,
C
=
1
λ
C=\frac{1}{\lambda}
C=λ1,若
C
C
C 非常小,相应的
B
B
B 有更大权重。 SVM的假设函数为
h
θ
(
x
)
=
{
1
if
θ
T
x
⩾
0
0
otherwise
h_{\theta}(x)=\left\{\begin{array}{ll} 1 & \text { if } \theta^{T} x \geqslant 0 \\ 0 & \text { otherwise } \end{array}\right.
hθ(x)={10 if θTx⩾0 otherwise
有别于Logistic回归输出的概率,最小化支持向量机的代价函数获得参数
θ
\theta
θ 时,支持向量机所做的 是直接预测
y
y
y 的值等于1还是等于0。如果
θ
T
x
⩾
0
\theta^{T}x \geqslant 0
θTx⩾0, 假设函数就会输出1,反之会输出0,所以学习参数
θ
\theta
θ 就是支持向量机的假设函数形式。
2. 大间距的直观理解
有时人们会把支持向量机叫做大间距分类器(Large margin classifiers)。
上图中,左边关于
z
z
z的代价函数用于正样本,右边关于
z
z
z的代价函数用于负样本。
如何使代价函数变得更小?如果
y
=
1
y=1
y=1,那么仅当
z
⩾
1
z\geqslant 1
z⩾1,有
c
o
s
t
1
(
z
)
=
0
cost_{1}(z)=0
cost1(z)=0,代价函数更小。如果
y
=
0
y=0
y=0,那么仅当
z
⩽
−
1
z\leqslant -1
z⩽−1,有
c
o
s
t
0
(
z
)
=
0
cost_{0}(z)=0
cost0(z)=0,代价函数更小。
如果 C C C非常大,那么当最小化优化目标时,迫切希望能找到一个值使得第一项等于0。如果把优化问题看作是通过选择参数来使得第一项等于0,那么优化问题就变成了 m i n [ C × 0 + 1 2 ∑ j = 1 n θ j 2 ] = m i n 1 2 ∑ j = 1 n θ j 2 min[C\times0+\frac{1 }{2} \sum_{j=1}^{n} \theta _{j}^{2}]=min\frac{1 }{2} \sum_{j=1}^{n} \theta _{j}^{2} min[C×0+21∑j=1nθj2]=min21∑j=1nθj2。当解决这个优化问题的时候,最小化关于参数 θ \theta θ的函数,会得到一个很有趣的决策边界。
对于线性可分的数据集,存在多条不同的直线可以把正样本和负样本完全分开,如下图所示。
图中的多条决策边界中,黑色的看起来更好、更稳健一些,在分离正样本和负样本中显得的更好。数学上来讲,这条黑线有更大的距离,这个距离叫做间距(margin),这使得支持向量机具有鲁棒性,因为它在分离数据时会尽量用大的间距去分离样本,因此支持向量机有时被称为大间距分类器。
为什么优化问题会产生大间距分类器?这个大间距分类器是在常数
C
C
C被设的非常大的情况下得出的。
事实上,支持向量机现在要比这个大间距分类器所体现得更成熟,尤其是当我们使用大间距分类器的时候,我们的学习算法会受异常点(outlier) 的影响,比如我们加入一个额外的正样本。下面我们看一下存在异常点的大间距分类器,如下图所示。
上图中,在没有加异常点之前,决策边界是黑色线,若加上异常点之后,决策边界就变成了红色线,但仅仅因为这一个样本就将决策边界从这条黑线变到这条红线实在是不明智的。而如果正则化参数
C
C
C设置得比较小,决策边界则还是黑线。如果数据不是线性可分的,SVM仍可正确分类。在实际应用中,当
C
C
C不是非常大时,可以忽略像上图中这样的异常点来得到正确的结果,甚至当数据不是线性可分的时候,支持向量机也可以给出好的结果。
回顾一下 C = 1 λ C=\frac{1}{\lambda} C=λ1:
C
C
C较大时,相当于
λ
\lambda
λ较小,可能会导致过拟合,高方差。
C
C
C较小时,相当于
λ
\lambda
λ较大,可能会导致欠拟合,高偏差。
3. 大间距分类器背后的数学原理
向量内积的性质:有向量
u
=
[
u
1
u
2
]
,
v
=
[
v
1
v
2
]
u=\left[\begin{array}{l}u_{1} \\ u_{2}\end{array}\right], v=\left[\begin{array}{l}v_{1} \\ v_{2}\end{array}\right]
u=[u1u2],v=[v1v2],如下图所示。
其中,
∥
u
∥
\|u\|
∥u∥ 为向量
u
u
u 的欧几里得长度,
∥
u
∥
=
u
1
2
+
v
1
2
,
p
\|u\|=\sqrt{u_{1}^{2}+v_{1}^{2}}, p
∥u∥=u12+v12,p 为向量
v
v
v 在向量
u
u
u 上的投影长度,
p
p
p 是有符号的, 即它可能是正值,也可能是负值,则
u
T
v
=
p
⋅
∥
u
∥
=
u
1
v
1
+
u
2
v
2
=
v
T
u
u^{T} v=p \cdot\|u\|=u_{1} v_{1}+u_{2} v_{2}=v^{T} u
uTv=p⋅∥u∥=u1v1+u2v2=vTu。
接下来, 我们使用这些关于向量内积的性质试图来理解支持向量机中的目标函数。 支持向量机中的目标函数:
min
θ
1
2
∑
j
=
1
n
θ
j
2
s.t.
θ
T
x
(
i
)
⩾
1
,
if
y
(
i
)
=
1
θ
T
x
(
i
)
⩽
−
1
,
if
y
(
i
)
=
0
\begin{gathered} \min _{\theta} \frac{1}{2} \sum_{j=1}^{n} \theta_{j}^{2} \\ \text { s.t. } \quad \theta^{T} x^{(i)} \geqslant \ 1, \text { if } y^{(i)}=1 \\ \qquad \theta^{T} x^{(i)} \leqslant-1, \text { if } y^{(i)}=0 \end{gathered}
θmin21j=1∑nθj2 s.t. θTx(i)⩾ 1, if y(i)=1θTx(i)⩽−1, if y(i)=0
简化一下目标函数, 令
θ
0
=
0
,
n
=
2
\theta_{0}=0, n=2
θ0=0,n=2, 目标函数变为
min
θ
1
2
∑
j
=
1
n
θ
j
2
=
min
θ
1
2
(
θ
1
2
+
θ
2
2
)
=
min
θ
1
2
(
θ
1
2
+
θ
2
2
)
2
=
min
θ
1
2
∥
θ
∥
2
\min _{\theta} \frac{1}{2} \sum_{j=1}^{n} \theta_{j}^{2}=\min _{\theta} \frac{1}{2}\left(\theta_{1}^{2}+\theta_{2}^{2}\right)=\min _{\theta} \frac{1}{2}\left(\sqrt{\theta_{1}^{2}+\theta_{2}^{2}}\right)^{2}=\min _{\theta} \frac{1}{2}\|\theta\|^{2}
θmin21j=1∑nθj2=θmin21(θ12+θ22)=θmin21(θ12+θ22)2=θmin21∥θ∥2
s.t
θ
T
x
(
i
)
⩾
1
,
if
y
(
i
)
=
1
θ
T
x
(
i
)
⩽
−
1
,
if
y
(
i
)
=
0
\begin{aligned} &\text { s.t } \theta^{T} x^{(i)} \geqslant \quad 1, \text { if } y^{(i)}=1 \\ &\qquad \theta^{T} x^{(i)} \leqslant-1, \text { if } y^{(i)}=0 \end{aligned}
s.t θTx(i)⩾1, if y(i)=1θTx(i)⩽−1, if y(i)=0
由上式可知,支持向量机做的全部事情就是极小化参数向量范数的平方,或者说长度的平方,可以画出如下的向量图。
由上图中的向量可得
θ
T
x
(
i
)
=
p
(
i
)
⋅
∥
θ
∥
=
θ
1
x
1
(
i
)
\theta^{T} x^{(i)}=p^{(i)} \cdot\|\theta\|=\theta_{1} x_{1}^{(i)}
θTx(i)=p(i)⋅∥θ∥=θ1x1(i)
θ
\theta
θ 为参数向量,
p
(
i
)
p^{(i)}
p(i) 为用来表示这是第
i
i
i 个训练样本在在参数向量
θ
\theta
θ上的投影。
由于
θ
T
x
(
i
)
=
p
(
i
)
⋅
∥
θ
∥
\theta^{T} x^{(i)}=p^{(i)} \cdot\|\theta\|
θTx(i)=p(i)⋅∥θ∥, 则支持向量机的目标函数为
min
θ
1
2
∑
j
=
1
n
θ
j
2
=
m
s.t
p
(
i
)
⋅
∥
θ
∥
⩾
1
p
(
i
)
⋅
∥
θ
∥
⩽
−
1
\begin{gathered} \min _{\theta} \frac{1}{2} \sum_{j=1}^{n} \theta_{j}^{2}=\mathrm{m} \\ \text { s.t } p^{(i)} \cdot\|\theta\| \geqslant \quad 1 \\ p^{(i)} \cdot\|\theta\| \leqslant-1 \end{gathered}
θmin21j=1∑nθj2=m s.t p(i)⋅∥θ∥⩾1p(i)⋅∥θ∥⩽−1
对于如下图所示的样本数据集,简化
θ
0
=
0
\theta_{0}=0
θ0=0,使决策边界通过远点,我们来看一下它的决策边界。
θ
\theta
θ与决策边界垂直,使得代价函数为0。
左图所示的决策边界不是一个很好的选择,因为它的间距很小,决策边界据样本距离很近。对于正样本而言,我们需要
p
(
1
)
⋅
∥
θ
∥
⩾
1
p^{(1)} \cdot\|\theta\| \geqslant 1
p(1)⋅∥θ∥⩾1, 但是如果
p
(
1
)
p^{(1)}
p(1) 非常小的话,那就意味着我们需要
θ
\theta
θ 的范数非常大。类似地,对于负样本而言,我们需要
p
(
2
)
⋅
∥
θ
∥
⩽
−
1
p^{(2)} \cdot\|\theta\| \leqslant-1
p(2)⋅∥θ∥⩽−1, 但我们发现
p
(
2
)
p^{(2)}
p(2) 会非常小, 因此唯一的办法就是使
θ
\theta
θ 的范数变大。但是我们的目标函数是希望找到一个参数
θ
\theta
θ, 它的范数是小的。因此,这看起来不像是一个好的参数向量
θ
\theta
θ 的选择。
右图所示的决策边界将会是支持向量机所选择的决策边界。相比于左图,右图的
p
(
1
)
p^{(1)}
p(1) 和
p
(
2
)
p^{(2)}
p(2) 变大了,所以
θ
\theta
θ 的范数就变小了,从而令范数的平方变小,这正符合支持向量机中最小化目标函数的目的,这也就是支持向量机如何能有效地产生大间距分类的原因。
结论:优化目标函数的目的是找到参数 θ \theta θ 使得 ∥ θ ∥ \|\theta\| ∥θ∥ 足够小, 这可以通过让间距变大,即使 p ( 1 ) , p ( 2 ) , … p^{(1)}, p^{(2)}, \ldots p(1),p(2),… 增大来实现。
4. 核函数
对于下图的非线性数据集,可以通过构造一个复杂的多项式模型来解决无法用直线进行分隔的分类问题。
为了获得上图所示的决策边界,我们的模型可能是
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
θ
3
x
1
x
2
+
θ
4
x
1
2
+
θ
5
x
2
2
+
…
h_{\theta}(x)=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\theta_{3} x_{1} x_{2}+\theta_{4} x_{1}^{2}+\theta_{5} x_{2}^{2}+\ldots
hθ(x)=θ0+θ1x1+θ2x2+θ3x1x2+θ4x12+θ5x22+… 的形式。接下来我们用一系列新的特征
f
f
f 来替换模型中的每一项。例如令
f
1
=
x
1
f_{1}=x_{1}
f1=x1
f
2
=
x
2
,
f
3
=
x
1
x
2
,
f
4
=
x
1
2
,
f
5
=
x
2
2
,
…
f_{2}=x_{2}, f_{3}=x_{1} x_{2}, f_{4}=x_{1}^{2}, f_{5}=x_{2}^{2}, \ldots
f2=x2,f3=x1x2,f4=x12,f5=x22,…, 得到
h
θ
(
x
)
=
θ
0
+
θ
1
f
1
+
θ
2
f
2
+
θ
3
f
3
+
θ
4
f
4
+
θ
5
f
5
+
…
h_{\theta}(x)=\theta_{0}+\theta_{1} f_{1}+\theta_{2} f_{2}+\theta_{3} f_{3}+\theta_{4} f_{4}+\theta_{5} f_{5}+\ldots
hθ(x)=θ0+θ1f1+θ2f2+θ3f3+θ4f4+θ5f5+… 那么除了对原有的特征进行组合以外,有没有更好的方法来构造特征
f
1
,
f
2
f_{1}, f_{2}
f1,f2,
f
3
f_{3}
f3 ?
我们可以利用核函数来计算出新的特征。 给定一个训练样本
x
x
x, 我们利用
x
x
x 的各个特征与我们预先选定的地标(landmarks)
l
(
1
)
,
l
(
2
)
,
l
(
3
)
l^{(1)}, l^{(2)}, l^{(3)}
l(1),l(2),l(3) 的 近似程度来选取新的特征
f
1
,
f
2
,
f
3
f_{1}, f_{2}, f_{3}
f1,f2,f3, 如下图所示。
例如,
f
1
=
similarity
(
x
,
l
(
1
)
)
=
e
(
−
∥
x
−
l
(
1
)
∥
2
2
σ
2
)
f
2
=
similarity
(
x
,
l
(
2
)
)
=
e
(
−
∥
x
−
l
2
)
∥
2
2
σ
2
)
f
3
=
similarity
(
x
,
l
(
3
)
)
=
e
(
−
∥
x
−
l
3
)
∥
2
2
σ
2
)
f_{1}=\operatorname{similarity}\left(x, l^{(1)}\right)=e\left(-\frac{\left\|x-l^{(1)}\right\|^{2}}{2 \sigma^{2}}\right) \\ f_{2}=\operatorname{similarity}\left(x, l^{(2)}\right) =e\left(-\frac{\left\|x-l^{2)}\right\|^{2}}{2 \sigma^{2}}\right) \\ f_{3}=\operatorname{similarity}\left(x, l^{(3)}\right) =e\left(-\frac{ \left.\| x-l^{3}\right) \|^{2}}{2 \sigma^{2}}\right)
f1=similarity(x,l(1))=e(−2σ2∥∥x−l(1)∥∥2)f2=similarity(x,l(2))=e(−2σ2∥∥x−l2)∥∥2)f3=similarity(x,l(3))=e(−2σ2∥x−l3)∥2)
其中, ∥ x − l ( 1 ) ∥ 2 = ∑ j = 1 n ( x j − l j ( 1 ) ) 2 \left\|x-l^{(1)}\right\|^{2}=\sum_{j=1}^{n}\left(x_{j}-l_{j}^{(1)}\right)^{2} ∥∥x−l(1)∥∥2=∑j=1n(xj−lj(1))2 为实例中所有特征与地标之间的距离的和,similarity ( x , l ( 1 ) ) \left(x, l^{(1)}\right) (x,l(1)) 是核函数,具体而言是一个高斯核函数(Gaussian Kernel)。
这些地标的作用是什么?
如果一个训练样本
x
x
x 与地标
l
l
l 之间的距离近似于0,则新特征
f
f
f 近似于
e
−
0
=
1
;
e^{-0}=1 ;
e−0=1; 如果训练样本
x
x
x 与地标l之间距离较远, 则
f
f
f 近似于
e
−
(
一个较大的数
)
=
0
e^{-(\text {一个较大的数 })}=0
e−(一个较大的数 )=0 。
假设我们的训练样本含有两个特征
[
x
1
,
x
2
]
\left[x_{1}, x_{2}\right]
[x1,x2], 给定地标
l
(
1
)
l^{(1)}
l(1) 与不同的
σ
\sigma
σ 值,见下图:
上图中水平面的坐标为
x
1
,
x
2
,
x_{1},x_{2} ,
x1,x2, 而垂直坐标轴代表
f
f
f 。可以看出, 只有当
x
x
x 与
l
(
1
)
l^{(1)}
l(1) 重合时,
f
f
f 才具有最大值。随着
x
x
x 的改变,
f
f
f 值改变的速率受到
σ
2
\sigma^{2}
σ2 的控制。
σ
2
\sigma^{2}
σ2 是高斯函数的参数,
σ
2
\sigma^{2}
σ2 变小会发现凸起的宽度变窄了,等高线也收缩了,
f
1
f_{1}
f1 下降到0的速率变快;
σ
2
\sigma^{2}
σ2 变大,从点
l
(
1
)
l^{(1)}
l(1) 往旁边移动,特征变量的值减小的速率会变得比较慢。
在给定学习问题中,如何选择地标?
我们通常是根据训练集的数量选择地标的数量,即如果训练集中有
m
m
m 个样本,则我们选取
m
m
m 个地标, 并且令
l
(
1
)
=
x
(
1
)
,
l
(
2
)
=
l^{(1)}=x^{(1)}, l^{(2)}=
l(1)=x(1),l(2)=
x
(
2
)
,
…
,
l
(
m
)
=
x
(
m
)
x^{(2)}, \ldots, l^{(m)}=x^{(m)}
x(2),…,l(m)=x(m) 。这样做的好处在于,现在我们得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的,即
下面我们将核函数运用到支持向量机中,修改我们的支持向量机假设函数。
给定
x
x
x,计算新特征
f
f
f,当
θ
T
f
⩾
0
\theta^{T} f \geqslant 0
θTf⩾0 时,预测
y
=
1
y=1
y=1 , 否则反之。训练时优化目标为
min
θ
C
∑
i
=
1
m
[
y
(
i
)
cost
1
(
θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
cost
0
(
θ
T
x
(
i
)
)
]
+
1
2
∑
j
=
1
n
=
m
θ
j
2
\min _{\theta} C \sum_{i=1}^{m}\left[y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} x^{(i)}\right)+\left(1-y^{(i)}\right) \operatorname{cost}_{0}\left(\theta^{T} x^{(i)}\right)\right]+\frac{1}{2} \sum_{j=1}^{n=m} \theta_{j}^{2}
θminCi=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21j=1∑n=mθj2
在支持向量机应用过程中,相应地修改代价函数为
∑
j
=
1
n
=
m
θ
j
2
=
θ
T
θ
。
\sum_{j=1}^{n=m} \theta_{j}^{2}=\theta^{T} \theta_{\text {。 }}
∑j=1n=mθj2=θTθ。 (TODO:M矩阵的用法)
需要注意:在使用这些软件包最小化我们的代价函数之前,我们通常需要编写核函数,并且如果我们使用高斯核函数,那么在使用之前进行特征缩放是非常必要的。另外,支持向量机也可以不使用核函数,不使用核函数又称为线性核函数(Linear kernel)。当我们不采用非常复杂的函数或者我们的训练集特征非常多而样本非常少时,可以采用这种不带核函数的支持向量机。
下面是支持向量机的两个参数 C ( = 1 λ ) C\left(=\frac{1}{\lambda}\right) C(=λ1) 和 σ 2 \sigma^{2} σ2 的影响:
- C C C 较大时,相当于 λ \lambda λ 较小, 可能会导致过拟合、高方差;
- C C C 较小时,相当于 λ \lambda λ 较大,可能会导致欠拟合、高偏差;
- σ 2 \sigma^{2} σ2 较大时,特征 f i f_{i} fi 的变化非常平滑,可能会导致高偏差、低方差;
- σ 2 \sigma^{2} σ2 较小时,特征 f i f_{i} fi 的变化变得不平滑,可能会导致低偏差、高方差。
5. 使用支持向量机
从Logistic回归模型,我们得到了支持向量机模型,在两者之间,我们应该如何选择呢?下面是一些普遍使用的准则, n n n为特征数, m m m为训练样本数。
- 如果 n n n相较于 m m m足够大的话,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用Logistic回归模型或者不带核函数的支持向量机。
- 如果 n n n较小, m m m大小中等,例如 n n n在 1-1000 之间,而 m m m在10-10000之间,使用高斯核函数的支持向量机。
- 如果 n n n较小,而 m m m较大,例如 n n n在1-1000之间,而 m m m大于50000,则使用支持向量机会非常慢,解决方案是手动地创建拥有更多的特征变量,然后使用Logistic回归或不带核函数的支持向量机。
值得一提的是,神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值。
在遇到机器学习问题时,有时会不确定该用哪种算法,但是通常更加重要的是有多少数据,有多熟练,是否擅长做误差分析和排除学习算法,指出如何设定新的特征变量和找出其他能决定你学习算法的变量等方面,通常这些方面会比我们具体使用Logistic回归还是SVM算法更加重要。