降维的目的
特征选择的目的是筛选出最为重要,最为关键的特征。很多移动互联网App可以通过埋点获取各种用户信息,然而这些信息并不能够在所有的任务中都发挥出很大的作用——有些作用微小,有些则是毫不相关的噪声。对于模型训练而言,将大量冗余的无用特征加入训练数据会导致模型的训练时间增加,同时模型表现也会被噪声影响。
因此,在训练之前选出最为重要的有效特征,可以帮助模型又快又好的完成训练。
降维需求与维度控制
TODO: 数据降维也不是必须的,如何判断是否需要降维以及维度需要控制在什么范围?
线性判别分析(LDA)
线性判别分析(Linear Discriminant Analysis)是一种机器学习和模式识别中常用的降维技术。LDA的使用依赖数据集中的类别标签,也就是说LDA属于监督学习的一种,可以看作是一种线性分类器。LDA的核心思想是将当前数据在低维度上进行投影,投影结果需要让同一类样本的间距尽可能小,不同类的样本中心间距尽可能大。
LDA的原理
使用LDA处理二分类问题
假设目前要对数据集
D
=
{
(
x
i
,
y
i
)
}
i
=
1
m
D=\{(x_i, y_i)\}_{i=1}^m
D={(xi?,yi?)}i=1m?进行二分类,其中的标签为
y
i
∈
{
0
,
1
}
y_i\in \{0,1\}
yi?∈{0,1}。对于第
i
i
i类样本,其总个数为
N
i
N_i
Ni?,该类的所有样本的集合记为
X
i
X_i
Xi?,所有样本的均值向量为
μ
i
\mu_i
μi?,协方差矩阵为
Σ
i
\Sigma_i
Σi?。比如:
D
=
{
(
[
?
1
,
3.5
,
2
]
,
1
)
,
(
[
0
,
2.5
,
1
]
,
1
)
,
(
[
1
,
3
,
1.5
]
,
1
)
,
(
[
4
,
2
,
0
]
,
0
)
,
(
[
2
,
0
,
2
]
,
0
)
}
D={\{\\([-1, 3.5, 2], 1),\\([0, 2.5, 1], 1),\\([1, 3, 1.5], 1),\\([4, 2, 0], 0),\\([2, 0, 2], 0)\\\}}
D={([?1,3.5,2],1),([0,2.5,1],1),([1,3,1.5],1),([4,2,0],0),([2,0,2],0)} 那么此时的第
0
0
0类样本个数
N
0
=
2
N_0=2
N0?=2,样本集合
X
0
=
{
[
4
,
2
,
0
]
,
[
2
,
0
,
2
]
}
X_0=\{[4, 2, 0], [2, 0, 2]\}
X0?={[4,2,0],[2,0,2]},均值向量
μ
0
=
1
N
0
∑
x
∈
X
0
x
=
[
3
,
1
,
1
]
\mu_0=\frac{1}{N_0}\sum_{x\in X_0}x=[3, 1, 1]
μ0?=N0?1?∑x∈X0??x=[3,1,1],协方差矩阵
Σ
i
\Sigma_i
Σi?的计算在LDA中是没有
1
N
?
1
\frac{1}{N-1}
N?11?或
1
N
\frac{1}{N}
N1?的,直接计算可得:
Σ
0
=
∑
x
∈
X
0
(
x
?
μ
0
)
T
(
x
?
μ
0
)
=
(
1
?
1
1
?
1
?
1
1
)
(
1
1
?
1
?
1
?
1
1
)
=
(
2
2
?
2
2
2
?
2
?
2
?
2
2
)
\Sigma_0=\sum_{x\in X_0}(x-\mu _0)^T(x-\mu_0)= \begin{pmatrix} 1 & -1\\ 1 & -1\\ -1 & 1 \end{pmatrix} \begin{pmatrix} 1 & 1 & -1\\ -1 & -1 & 1 \end{pmatrix}= \begin{pmatrix} 2 & 2 & -2\\ 2 & 2 & -2\\ -2 & -2 & 2 \end{pmatrix}
Σ0?=x∈X0?∑?(x?μ0?)T(x?μ0?)=???11?1??1?11????(1?1?1?1??11?)=???22?2?22?2??2?22????
对于第
1
1
1类样本做同样的运算后,可以得到相应的值:
N
1
=
3
,
N_1=3,
N1?=3,
X
1
=
{
[
?
1
,
3.5
,
2
]
,
[
0
,
2.5
,
1
]
,
[
1
,
3
,
1.5
]
}
,
X_1 = \{[-1, 3.5, 2], [0, 2.5, 1], [1, 3, 1.5]\},
X1?={[?1,3.5,2],[0,2.5,1],[1,3,1.5]},
μ
1
=
[
0
,
3
,
1.5
]
,
\mu_1 = [0, 3, 1.5],
μ1?=[0,3,1.5],
Σ
1
=
(
2
?
0.5
?
0.5
?
0.5
0
0.5
?
0.5
0.5
0.5
)
\Sigma_1 = \begin{pmatrix} 2 & -0.5 & -0.5\\ -0.5 & 0 & 0.5\\ -0.5 & 0.5 & 0.5 \end{pmatrix}
Σ1?=???2?0.5?0.5??0.500.5??0.50.50.5???? 将数据集
D
D
D投影到一条直线
w
w
w上,则对于样本
x
i
x_i
xi?,它在
w
w
w上的投影为
w
T
x
i
w^Tx_i
wTxi?。因此对于两个类的数据中心
μ
0
\mu_0
μ0?和
μ
1
\mu_1
μ1?,其在
w
w
w上的投影分别为
w
T
μ
0
w^T\mu_0
wTμ0?及
w
T
μ
1
w^T\mu_1
wTμ1?。我们要寻找的目标
w
w
w需要使不同类间的样本中心间距尽可能的大,因此也就是要最大化
∥
w
T
μ
0
?
w
T
μ
1
∥
\| w^T\mu_0-w^T\mu_1\|
∥wTμ0??wTμ1?∥,整理后变为最大化
w
T
(
μ
0
?
μ
1
)
(
μ
0
?
μ
1
)
T
w
w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw
wT(μ0??μ1?)(μ0??μ1?)Tw。同时保证同一类的样本点在投影后尽可能接近,因此对于第
i
i
i类样本,需要最小化
∑
x
∈
X
i
(
w
T
x
?
μ
i
)
2
\sum_{x\in X_i}(w^Tx-\mu_i)^2
∑x∈Xi??(wTx?μi?)2,整理后得
w
T
Σ
i
w
w^T\Sigma_i w
wTΣi?w。即对于二分类问题,最小化
w
T
Σ
0
w
+
w
T
Σ
1
w
w^T\Sigma_0w+w^T\Sigma_1w
wTΣ0?w+wTΣ1?w。因此,LDA的目标函数可以被设计为:
J
(
w
)
=
w
T
(
μ
0
?
μ
1
)
(
μ
0
?
μ
1
)
T
w
w
T
(
Σ
0
+
Σ
1
)
w
J(w)=\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}
J(w)=wT(Σ0?+Σ1?)wwT(μ0??μ1?)(μ0??μ1?)Tw? 设
S
b
=
(
μ
0
?
μ
1
)
(
μ
0
?
μ
1
)
T
S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T
Sb?=(μ0??μ1?)(μ0??μ1?)T,
S
w
=
Σ
0
+
Σ
1
S_w=\Sigma_0+\Sigma_1
Sw?=Σ0?+Σ1?,则优化目标可表示为:
a
r
g
m
a
x
w
?
J
(
w
)
=
w
T
S
b
w
w
T
S
w
w
\underset{w}{\mathrm{argmax}} \ J(w)=\frac{w^TS_bw}{w^TS_ww}
wargmax??J(w)=wTSw?wwTSb?w? 即目标函数
J
(
w
)
J(w)
J(w)是
S
b
S_b
Sb?与
S
w
S_w
Sw?的广义瑞利商(generalized Rayleigh quotient)。根据瑞利商的性质
使用LDA处理多分类问题
LDA的实现
降维效果的评价
|