特征选择的目的是筛选出最为重要,最为关键的特征。很多移动互联网App可以通过埋点获取各种用户信息,然而这些信息并不能够在所有的任务中都发挥出很大的作用——有些作用微小,有些则是毫不相关的噪声。对于模型训练而言,将大量冗余的无用特征加入训练数据会导致模型的训练时间增加,同时模型表现也会被噪声影响。
因此,在训练之前选出最为重要的有效特征,可以帮助模型又快又好的完成训练。
TODO: 数据降维也不是必须的,如何判断是否需要降维以及维度需要控制在什么范围?
线性判别分析(Linear Discriminant Analysis)是一种机器学习和模式识别中常用的降维技术。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=N01∑x∈X0x=[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−11−1−11)=⎝⎛22−222−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Σiw。即对于二分类问题,最小化 w T Σ 0 w + w T Σ 1 w w^T\Sigma_0w+w^T\Sigma_1w wTΣ0w+wTΣ1w。因此,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)=wTSwwwTSbw
即目标函数 J ( w ) J(w) J(w)是 S b S_b Sb与 S w S_w Sw的广义瑞利商(generalized Rayleigh quotient)。根据瑞利商的性质,原式 J ( w ) J(w) J(w)的最大值和最小值分别等于 S w − 1 S b S_w^{-1}S_b Sw−1Sb的特征值的最大值和最小值。
现在将原问题等价为对偶问题:
a r g m i n w − w T S b w , s . t . w T S w w = 1 \underset{w}{\mathrm{argmin}} \ -w^TS_bw, \\ s.t. \ w^TS_ww=1 wargmin −wTSbw,s.t. wTSww=1
根据拉格朗日乘子法,构建新函数:
a r g m i n w , α g ( w , α ) = − w T S b w + α ( w T S w w − 1 ) \underset{w, \alpha}{\mathrm{argmin}} \ g(w, \alpha)=-w^TS_bw+\alpha(w^TS_ww-1) w,αargmin g(w,α)=−wTSbw+α(wTSww−1)
上式对 w w w求偏导后可得 S b w = α S w w S_bw=\alpha S_ww Sbw=αSww。同时 S b w S_bw Sbw的方向永远平行于 μ 0 − μ 1 \mu_0-\mu_1 μ0−μ1,因此设 S b w = α ( μ 0 − μ 1 ) S_bw=\alpha(\mu_0-\mu_1) Sbw=α(μ0−μ1),最终得到 w = S w − 1 ( μ 0 − μ 1 ) w=S_w^{-1}(\mu_0-\mu_1) w=Sw−1(μ0−μ1)。