一、支持向量机(SVM)
主要思想:找一个超平面,使其尽可能多地将两类数据点分开,还要使得分开的数据点距分类面尽可能地远.
1. 线性可分的支持向量机
设有一组观测样本:
D
=
{
(
x
i
,
y
i
)
∣
i
=
1
,
2
,
⋯
,
n
,
x
i
∈
X
⊆
R
m
,
y
i
∈
{
1
,
−
1
}
}
\small D=\lbrace (x_i,y_i)|\,i=1,2,\cdots,n,x_i\in X\subseteq R^m,y_i\in \lbrace1,-1\rbrace \rbrace
D={(xi,yi)∣i=1,2,⋯,n,xi∈X⊆Rm,yi∈{1,−1}}. 根据标签
y
i
y_i
yi 将其分为两类:
D
1
=
{
(
x
i
,
y
i
)
∣
y
i
=
1
}
,
D
2
=
{
(
x
i
,
y
i
)
∣
y
i
=
−
1
}
.
\small D_1=\lbrace(x_i,y_i) |\,y_i=1\rbrace,D_2=\lbrace(x_i,y_i) |\, y_i=-1\rbrace.
D1={(xi,yi)∣yi=1},D2={(xi,yi)∣yi=−1}.
已知
D
1
,
D
2
\small D_1,D_2
D1,D2 线性可分,即存在一个超平面能够将两类点完全分隔开. 然后寻找这样的一个超平面
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0 (其中
w
w
w 表示超平面的法向量),不仅能够满足分隔条件,而且能够使分开的数据点距超平面尽可能地远. 该问题可以表示为优化问题,数学描述如下:
m
a
x
ρ
s
.
t
.
{
w
T
x
i
+
b
≥
l
,
x
i
∈
D
1
w
T
x
i
+
b
≤
−
l
,
x
i
∈
D
2
\begin{aligned}&max\;\rho\\ &s.t. \begin{cases} w^Tx_i+b\geq l, & x_i \in D_1\\ w^Tx_i+b\leq -l, & x_i \in D_2 \end{cases}\end{aligned}
maxρs.t.{wTxi+b≥l,wTxi+b≤−l,xi∈D1xi∈D2其中
w
T
x
i
+
b
=
l
,
w
T
x
i
+
b
=
−
l
(
l
>
0
)
w^Tx_i+b= l,w^Tx_i+b= -l(l>0)
wTxi+b=l,wTxi+b=−l(l>0) 分别经过
D
1
,
D
2
\small D_1,D_2
D1,D2 的边界点,
ρ
\rho
ρ 表示两个超平面之间的距离,可以由
l
,
w
l,w
l,w 表示,推导过程如下:
设
x
1
,
x
2
x_1,x_2
x1,x2 分别为
D
1
,
D
2
\small D_1,D_2
D1,D2 的边界点,则由
w
T
x
i
+
b
=
l
,
w
T
x
i
+
b
=
−
l
w^Tx_i+b= l,w^Tx_i+b= -l
wTxi+b=l,wTxi+b=−l 分别经过
D
1
,
D
2
\small D_1,D_2
D1,D2 的边界点可知,
w
T
x
1
+
b
=
l
,
w
T
x
2
+
b
=
−
l
w^Tx_1+b= l,w^Tx_2+b= -l
wTx1+b=l,wTx2+b=−l,于是两个超平面之间的距离可以表示为
ρ
=
∣
(
x
1
−
x
2
)
⋅
w
∣
∣
∣
w
∣
∣
\rho=\frac{|(x_1-x_2)\cdot w|}{||w||}
ρ=∣∣w∣∣∣(x1−x2)⋅w∣
(
x
1
−
x
2
)
⋅
w
=
w
T
x
1
−
w
T
x
2
=
l
−
b
−
(
−
l
−
b
)
=
2
l
(x_1-x_2)\cdot w=w^Tx_1-w^Tx_2=l-b-(-l-b)=2l
(x1−x2)⋅w=wTx1−wTx2=l−b−(−l−b)=2l,则
ρ
=
2
l
/
∣
∣
w
∣
∣
,
l
=
ρ
∣
∣
w
∣
∣
/
2.
\rho=2l/||w||,l=\rho||w||/2.
ρ=2l/∣∣w∣∣,l=ρ∣∣w∣∣/2.
约束条件
{
w
T
x
i
+
b
≥
l
,
x
i
∈
D
1
w
T
x
i
+
b
≤
−
l
,
x
i
∈
D
2
\begin{cases} w^Tx_i+b\geq l, & x_i \in D_1\\ w^Tx_i+b\leq -l, & x_i \in D_2 \end{cases}
{wTxi+b≥l,wTxi+b≤−l,xi∈D1xi∈D2可以简化为
y
i
(
w
T
x
i
+
b
)
≥
l
y_i(w^Tx_i+b)\geq l
yi(wTxi+b)≥l,两边同除
l
l
l,将
l
=
ρ
∣
∣
w
∣
∣
/
2
l=\rho||w||/2
l=ρ∣∣w∣∣/2 代入上式,得
y
i
(
2
w
T
ρ
∣
∣
w
∣
∣
x
i
+
2
b
ρ
∣
∣
w
∣
∣
)
≥
1
y_i(\frac{2w^T}{\rho||w||}x_i+\frac{2b}{\rho||w||})\geq1
yi(ρ∣∣w∣∣2wTxi+ρ∣∣w∣∣2b)≥1换元,令
w
′
=
2
w
ρ
∣
∣
w
∣
∣
,
b
′
=
2
b
ρ
∣
∣
w
∣
∣
w'=\frac{2w}{\rho||w||},b'=\frac{2b}{\rho||w||}
w′=ρ∣∣w∣∣2w,b′=ρ∣∣w∣∣2b代入原式,得
y
i
(
w
′
T
x
i
+
b
′
)
≥
1
y_i(w'^Tx_i+b')\geq 1
yi(w′Txi+b′)≥1.
同时
∣
∣
w
′
∣
∣
=
2
/
ρ
||w'||=2/\rho
∣∣w′∣∣=2/ρ ,最优化目标
m
a
x
ρ
=
m
a
x
2
/
∣
∣
w
′
∣
∣
max\;\rho=max\;2/||w'||
maxρ=max2/∣∣w′∣∣ 等价于
m
i
n
∣
∣
w
′
∣
∣
2
/
2
min\;||w'||^2/2
min∣∣w′∣∣2/2.
原问题转化为:
m
i
n
1
2
∣
∣
w
′
∣
∣
2
s
.
t
.
y
i
(
w
′
T
x
i
+
b
′
)
≥
1
\begin{aligned}&min\; \frac{1}{2}||w'||^2\\ &s.t. \;y_i(w'^Tx_i+b')\geq 1\end{aligned}
min21∣∣w′∣∣2s.t.yi(w′Txi+b′)≥1
2. 近似线性可分的支持向量机
即找不到一个超平面将两类数据点分隔开,但去除边界上与其他类混杂的一小部分点后能够线性可分.
对于这种情况,只需对约束条件
y
i
(
w
′
T
x
i
+
b
′
)
≥
1
y_i(w'^Tx_i+b')\geq 1
yi(w′Txi+b′)≥1 稍加调整. 具体做法:引入松弛变量
ξ
i
≥
0
,
i
=
1
,
2
,
⋯
,
n
\xi_i\geq0,i=1,2,\cdots,n
ξi≥0,i=1,2,⋯,n,使得
y
i
(
w
′
T
x
i
+
b
′
)
≥
1
−
ξ
i
y_i(w'^Tx_i+b')\geq 1-\xi_i
yi(w′Txi+b′)≥1−ξi,原问题转化为:
m
i
n
1
2
∣
∣
w
′
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
s
.
t
.
{
y
i
(
w
′
T
x
i
+
b
′
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
⋯
,
n
ξ
i
≥
0
,
i
=
1
,
2
,
⋯
,
n
\begin{aligned}&min\; \frac{1}{2}||w'||^2+C\sum_{i=1}^n\xi_i\\ &s.t. \;\begin{cases} y_i(w'^Tx_i+b')\geq 1-\xi_i, & i=1,2,\cdots,n\\ \xi_i\geq0, &i=1,2,\cdots,n \end{cases}\end{aligned}
min21∣∣w′∣∣2+Ci=1∑nξis.t.{yi(w′Txi+b′)≥1−ξi,ξi≥0,i=1,2,⋯,ni=1,2,⋯,n其中
C
>
0
\small C>0
C>0,称为惩罚因子.
二、决策树(Decision Tree)
主要思想:从一个无规则的样本集中推导出一个分类规则,其可以以树的形式表示,也称决策树,内部节点表示特征或分类指标,一个叶子节点表示一类.
先来谈谈信息论的一些知识,伟大的祖师爷——香农给出了信息的数学描述,利用信息量衡量事件不确定性的大小,事件发生概率越小,信息量越大. 将信息量表示成自变量为概率的函数,这个函数需要满足以下三条性质:
(1) 非负性,即信息量总是大于等于零的;
(2) 随概率的增大而减小;
(3)
f
(
p
1
p
2
)
=
f
(
p
1
)
+
f
(
p
2
)
f(p_1p_2)=f(p_1)+f(p_2)
f(p1p2)=f(p1)+f(p2).
易知对数函数
f
(
p
)
=
l
o
g
a
p
(
0
<
a
<
1
)
f(p)=log_a p\;(0<a<1)
f(p)=logap(0<a<1) (
p
\,p
p 为事件发生的概率)满足这些性质,并称其为事件的信息量,一般取
a
=
1
/
2
a=1/2
a=1/2.
再来看两个更高级的定义:
信息熵:信息量的期望. 假设事件
D
\small D
D 有
N
\small N
N 中可能的结果,每种结果的发生概率为
P
k
\small P_k
Pk,定义事件
D
\small D
D 的信息熵为:
E
n
t
(
D
)
=
∑
k
=
1
N
P
k
(
−
l
o
g
2
P
k
)
.
Ent(D)=\sum_{k=1}^NP_k(-log_2P_k).
Ent(D)=k=1∑NPk(−log2Pk).得知新特征的信息后,信息熵的减少量
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A)=H(D)-H(D|A)
g(D,A)=H(D)−H(D∣A) 称为信息增益,具体计算方法:
假设样本集
D
\small D
D 可以分为
K
\small K
K 类,
C
i
\small C_i
Ci 表示第
i
i
i 类,
i
=
1
,
2
,
⋯
,
K
,
∑
i
=
1
K
∣
C
i
∣
=
∣
D
∣
\small i=1,2,\cdots,K,\, \sum_{i=1}^K|C_i|=|D|
i=1,2,⋯,K,∑i=1K∣Ci∣=∣D∣,
D
\small D
D 的信息熵为
H
(
D
)
=
∑
i
=
1
K
∣
C
i
∣
∣
D
∣
(
−
l
o
g
2
∣
C
i
∣
∣
D
∣
)
.
H(D)=\sum_{i=1}^K\frac{|C_i|}{|D|}(-log_2{\frac{|C_i|}{|D|}}).
H(D)=i=1∑K∣D∣∣Ci∣(−log2∣D∣∣Ci∣).特征
A
\small A
A 将
D
\small D
D 划分为
n
n
n 个子集
D
i
,
i
=
1
,
2
,
⋯
,
n
\small D_i,i=1,2,\cdots,n
Di,i=1,2,⋯,n,定义
H
(
D
∣
A
)
≜
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
H
(
D
i
)
,
H(D|A)\triangleq\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i),
H(D∣A)≜i=1∑n∣D∣∣Di∣H(Di),可以理解为子集信息熵的期望.
好的分类特征
A
\small A
A 应该使
H
(
D
∣
A
)
\small H(D|A)
H(D∣A) 尽可能地小,即信息增益
g
(
D
,
A
)
\small g(D,A)
g(D,A) 尽可能地大. 至于为啥?
好的分类特征意味着对结果更精确的预测. 而预测得越准确,预测结果发生的概率也就越大. 大的概率意味着小的信息量,小的信息量会带来小的信息熵,进而使
H
(
D
∣
A
)
\small H(D|A)
H(D∣A) 尽可能地小.
决策树的生成过程就是,先选择信息增益最大的特征进行分类. 然后对每个小类进行相同的操作,递归下去,就可以得到一棵分类树,也称决策树.
终止条件可以这样设置:当前节点的信息熵小于给定的阈值时,就停止递归,取占比最大的类作为当前叶子节点的类别.
上述介绍的根据信息增益选取特征,只是决策树中的 ID3 算法,这种算法倾向于选择取值较多的特征,后续提出的 C4.5 算法,以信息增益率作为特征选择指标,在一定程度上克服了这个缺点. 其他的决策树算法还有 CART,既能做分类也能做回归,感兴趣的读者可以了解一下.
Plus: 如有错误、可以改进的地方、或任何想说的,请在评论区留言!