数据降维方法(主成分分析PCA、线性判别分析LDA)

数据降维

  • 1、特征变换
    • 1.1、特征提取
  • 2、维数缩减
    • 2.1、维度灾难
    • 2.2、维度缩减
    • 2.3、线性降维法
      • 2.3.1、主成分分析(PCA)
        • 2.3.1.1、数学分析
        • 2.3.1.2、算法步骤
        • 2.3.1.3、可区分性
        • 2.3.1.4、可重构性
        • 2.3.1.5、维数选择
      • 2.3.2、线性判别分析(LDA)
        • 2.3.2.1、数学推导

1、特征变换

1.1、特征提取

特征提取的形式是用向量来表示数据样本(语音、文本、图片等)

2、维数缩减

2.1、维度灾难

由Richard E. Bellman提出,当维度增加时会遇到如下问题:
1、计算量呈指数增长
2、低维距离相近的相似样本在高维距离会增加
3、数据变得稀疏(数据空间体积急剧增大)

2.2、维度缩减

降维是解决维度灾难的重要手段,在很多情况下,数据样本是高维,但与学习任务相关的特征在低维分布(即高维空间的低维分布embeding)

2.3、线性降维法

y = W T x \rm y=W^Tx y=WTx
可以将样本x(d维空间)变换为样本y(m维空间),其中新空间的特征是原空间特征的线性组合,可以通过矩阵乘法看出。

2.3.1、主成分分析(PCA)

主成分分析的主要思想是将原始数据保留在少数方差最大的方向上的投影。主成分指方差较大的方向,如第一主成分、第二主成分等。

2.3.1.1、数学分析

假设 x 1 , x 2 , . . . , x n \rm x_1,x_2,...,x_n x1,x2,...,xn是d维空间的n个样本, w 1 , w 2 , . . . , w m \rm w_1,w_2,...,w_m w1,w2,...,wm是d维空间的前m个主成分,其中有
w i T w j = 0 , ∀ i ≠ j ; w i T w i = 1 \rm w_i^Tw_j=0,\forall i\ne j;\quad w_i^Tw_i = 1 wiTwj=0,i=j;wiTwi=1
即是一组单位正交基,以主成分 w 1 \rm w_1 w1为例, x 1 \rm x_1 x1的投影为 y i = w 1 T x i \rm y_i=w_1^Tx_i yi=w1Txi
y ‾ = w 1 T x ‾ , w h e r e    x ‾ = 1 n ∑ i = 1 n x i v a r = 1 n ∑ i = 1 n ( w 1 T x i − w 1 T x ‾ ) 2 \begin{aligned} \rm{\overline{y}=w_1^T\overline{x},\quad}where\;\overline{x}=\frac{1}{n}\sum_{i=1}^{n}x_i\\ var \rm =\frac{1}{n}\sum_{i=1}^{n}(w_1^Tx_i-w_1^T\overline{x})^2 \end{aligned} y=w1Tx,wherex=n1i=1nxivar=n1i=1n(w1Txiw1Tx)2
我们希望 w 1 \rm w_1 w1方向上有最大的方差,即:
m a x 1 n ∑ i = 1 n ( w 1 T x i − w 1 T x ‾ ) 2 s . t . w i T w i = 1 \begin{aligned} & max\rm \quad \frac{1}{n}\sum_{i=1}^{n}(w_1^Tx_i-w_1^T\overline{x})^2\\ &s.t.\qquad \rm w_i^Tw_i = 1 \end{aligned} maxn1i=1n(w1Txiw1Tx)2s.t.wiTwi=1
对方差展开推导:
v a r = 1 n ∑ i = 1 n ( w 1 T x i − w 1 T x ‾ ) 2 = 1 n ∑ i = 1 n ( w 1 T x i − w 1 T x ‾ ) ( w 1 T x i − w 1 T x ‾ ) T = 1 n ∑ i = 1 n w 1 T ( x i − x ‾ ) ( x i − x ‾ ) T w 1 = w 1 T ( 1 n ∑ i = 1 n ( x i − x ‾ ) ( x i − x ‾ ) T ) w 1 = w 1 T C w 1 \begin{aligned} var &= \rm \frac{1}{n}\sum_{i=1}^{n}(w_1^Tx_i-w_1^T\overline{x})^2\\ &= \rm \frac{1}{n}\sum_{i=1}^{n}(w_1^Tx_i-w_1^T\overline{x})(w_1^Tx_i-w_1^T\overline{x})^T\\ &= \rm \frac{1}{n}\sum_{i=1}^{n}w_1^T(x_i-\overline{x})(x_i-\overline{x})^Tw_1\\ &= \rm w_1^T\left (\frac{1}{n}\sum_{i=1}^{n}(x_i-\overline{x})(x_i-\overline{x})^T\right )w_1\\ &= \rm w_1^TCw_1 \end{aligned} var=n1i=1n(w1Txiw1Tx)2=n1i=1n(w1Txiw1Tx)(w1Txiw1Tx)T=n1i=1nw1T(xix)(xix)Tw1=w1T(n1i=1n(xix)(xix)T)w1=w1TCw1
这里的C为协方差矩阵,用拉格朗日乘子法进行优化求最大值:
o b j = w 1 T C w 1 + λ ( 1 − w 1 T w 1 ) ∂ o b j ∂ w 1 = 2 C − 2 λ w 1 \begin{aligned} obj &=\rm w_1^TCw_1+\lambda(1-w_1^Tw_1)\\ \frac{\partial obj}{\partial \rm w_1} &=\rm 2C-2\lambda w_1 \end{aligned} objw1obj=w1TCw1+λ(1w1Tw1)=2C2λw1
C w 1 = λ w 1 \rm Cw_1=\lambda w_1 Cw1=λw1,可以看出, w 1 \rm w_1 w1是协方差矩阵 C C C的特征向量(eigenvector), λ \lambda λ是对应的特征值(eigenvalue),将其替换得:
w 1 T C w 1 = w 1 T λ w 1 = λ w 1 T w 1 = λ \begin{aligned} \rm w_1^TCw_1=w_1^T\lambda w_1=\lambda w_1^Tw_1=\lambda \end{aligned} w1TCw1=w1Tλw1=λw1Tw1=λ
由此可以看出,使得 w 1 \rm w_1 w1方差最大,需对应协方差矩阵最大的特征值 λ \lambda λ,而 λ \lambda λ对应的特征值即为 w 1 \rm w_1 w1,也就是第一主成分。

2.3.1.2、算法步骤

因此主成分分析的主要步骤可以总结如下:

  1. 计算数据均值: x ‾ = 1 n ∑ i = 1 n x i \rm \overline{x}=\frac{1}{n}\sum_{i=1}^{n}x_i x=n1i=1nxi
  2. 计算数据协方差矩阵: C = 1 n ∑ i = 1 n ( x i − x ‾ ) ( x i − x ‾ ) T \rm C=\frac{1}{n}\sum_{i=1}^{n}(x_i-\overline{x})(x_i-\overline{x})^T C=n1i=1n(xix)(xix)T
  3. 对协方差矩阵进行特征值分解,并取最大的m个特征值 ( λ 1 ≥ λ 2 ≥ . . . ≥ λ m ) (\lambda_1\ge \lambda_2\ge... \ge \lambda_m) (λ1λ2...λm),其对应的特征向量 ( w 1 , w 2 , . . . , w m ) \rm(w_1, w_2, ..., w_m) (w1,w2,...,wm),组成投影矩阵 W = [ w 1 , w 2 , . . . , w m ] ∈ R d × m \rm W=[w_1, w_2,..., w_m]\in \mathbb{R} ^{d\times m} W=[w1,w2,...,wm]Rd×m
  4. 将每一个数据样本进行投影: y i = w 1 T x i \rm y_i=w_1^Tx_i yi=w1Txi

换一种思考方式:如何仅用一个超平面从整体上对所有样本进行恰当表示?

2.3.1.3、可区分性

满足可去区分性的要求是所有样本点投影到该超平面上时方差应该最大。投影后的样本点为:
y i = W T x i \rm y_i=W^Tx_i yi=WTxi
数据点是零均值化的,即: y ‾ = ∑ i = 1 n y i = W T ∑ i = 1 n x i = 0 \rm \overline{y}=\sum_{i=1}^{n}y_i=W^T\sum_{i=1}^{n}x_i=0 y=i=1nyi=WTi=1nxi=0
投影之后的协方差矩阵为:
v a r = 1 n ∑ i = 1 n ( y i − y ‾ ) ( y i − y ‾ ) T = 1 n ∑ i = 1 n ( W T x i − 0 ) ( W T x i − 0 ) T = 1 n ∑ i = 1 n W T x i x i W T = 1 n W T X X W T \begin{aligned} var&= \rm \frac{1}{n}\sum_{i=1}^{n}(y_i-\overline{y})(y_i-\overline{y})^T\\ &= \rm \frac{1}{n}\sum_{i=1}^{n}(W^Tx_i-0)(W^Tx_i-0)^T\\ &= \rm \frac{1}{n}\sum_{i=1}^{n}W^Tx_ix_iW^T\\ &= \rm \frac{1}{n}W^TXXW^T \end{aligned} var=n1i=1n(yiy)(yiy)T=n1i=1n(WTxi0)(WTxi0)T=n1i=1nWTxixiWT=n1WTXXWT
我们要使得投影样本每一维的方差最大,即相当于最大所有维度方差之和最大(有上面分析可以看出,其等价于所有特征值之和最大),矩阵的迹等于特征值之和,则目标方程与约束方程可以为:
m a x t r ( 1 n W T X X W T ) s . t . W T W = I \begin{aligned} &max\quad tr(\rm \frac{1}{n}W^TXXW^T)\\ & s.t.\quad W^TW=I \end{aligned} maxtr(n1WTXXWT)s.t.WTW=I
同样根据拉格朗日乘子法,可以得到:
X X T W = λ W XX^TW=\lambda W XXTW=λW
由此,同样可以得出,我们只需要对协方差矩阵 X X T XX^T XXT进行特征值分解,得到最大的前m个特征值并进行排序使得 λ 1 ≥ λ 2 ≥ . . . ≥ λ m \lambda_1\ge \lambda_2\ge... \ge \lambda_m λ1λ2...λm λ 1 \lambda_1 λ1对应的特征向量即为第一主成分,其他依次类推……

2.3.1.4、可重构性

其基本思想是每个样本到超平面的距离都足够近。

假设投影变换都是正交变换,建立新坐标系 W = [ w 1 , w 2 , . . . , w m ]    ( m < d ) \rm W=[w_1, w_2,..., w_m]\;(mW=[w1,w2,...,wm](m<d),且有:
w i T w j = 0 , ∀ i ≠ j ; w i T w i = 1 \rm w_i^Tw_j=0,\forall i\ne j;\quad w_i^Tw_i = 1 wiTwj=0,i=j;wiTwi=1
样本点投影后在新坐标系下的坐标为 y i = [ y i 1 , y i 2 , . . . , y i m ] T \rm \mathbf{y}_i=[y_{i1}, y_{i2},..., y_{im}]^T yi=[yi1,yi2,...,yim]T,即正交坐标系下投影的新坐标为
y i j = w j T x i , w j ∈ R d , j = 1 , 2 , . . . , m \rm y_{ij}=\mathbf{w}_j^T\mathbf{x}_i,\qquad \mathbf{w}_j\in \mathbb{R} ^{d},\qquad j=1,2,...,m yij=wjTxi,wjRd,j=1,2,...,m
新坐标系下的新表示 x ^ i \rm \hat x_i x^i为:
x ^ i = ∑ j = 1 m y i j w j \rm \mathbf{\hat x}_i = \sum_{j=1}^{m}y_{ij}\mathbf{w}_j x^i=j=1myijwj
重构误差:
∑ i = 1 n ∥ x i − x ^ i ∥ 2 2 = ∑ i = 1 n ∥ x i − ∑ j = 1 m y i j w j ∥ 2 2 = ∑ i = 1 n ∥ x i − W y i ∥ 2 2 = ∑ i = 1 n ( ( W y i ) T W y i − 2 x i T W y i + x i T x i ) = ∑ i = 1 n ( y i T y i − 2 y i T y i + x i T x i ) = − ∑ i = 1 n y i T y i + ∑ i = 1 n x i T x i = − ∑ i = 1 n y i T y i + c o n s t = − ∑ i = 1 n ( W T x i ) T ( W T x i ) + c o n s t = − W T X X W T + c o n s t \begin{aligned} \rm \sum_{i=1}^{n}\left \| x_i-\hat x_i\right \|_2^2&=\rm \sum_{i=1}^{n}\left \| x_i-\sum_{j=1}^{m}y_{ij}\mathbf{w}_j\right \|_2^2=\rm \sum_{i=1}^{n}\left \| x_i-Wy_i\right \|_2^2\\ &=\rm \sum_{i=1}^{n}\left ((Wy_i)^TWy_i-2x_i^TWy_i+x_i^Tx_i \right )\\ &=\rm \sum_{i=1}^{n}\left (y_i^Ty_i-2y_i^Ty_i+x_i^Tx_i \right )\\ &=\rm -\sum_{i=1}^{n}y_i^Ty_i+\sum_{i=1}^{n}x_i^Tx_i\\ &=\rm -\sum_{i=1}^{n}y_i^Ty_i+const\\ &=\rm -\sum_{i=1}^{n}(W^Tx_i)^T(W^Tx_i)+const\\ &=\rm -W^TXXW^T+const \end{aligned} i=1nxix^i22=i=1nxij=1myijwj22=i=1nxiWyi22=i=1n((Wyi)TWyi2xiTWyi+xiTxi)=i=1n(yiTyi2yiTyi+xiTxi)=i=1nyiTyi+i=1nxiTxi=i=1nyiTyi+const=i=1n(WTxi)T(WTxi)+const=WTXXWT+const
最小化重构误差,即相当于最大化 W T X X W T W^TXXW^T WTXXWT,得到的模型与可区分性的模型相同。

2.3.1.5、维数选择

一个降低维度的选择标准:
∑ i = 1 m λ i ∑ i = 1 d λ i ≥ t \rm \frac{\sum_{i=1}^m\lambda_i}{\sum_{i=1}^d\lambda_i}\ge t i=1dλii=1mλit
例如t可以取95%。

需要舍弃的维度为m-d维,舍弃这些维度之后样本的密度将增大,另外最小特征值所对应的特征向量往往与噪声相关,因此PCA一定程度上可以达到降噪的效果。

2.3.2、线性判别分析(LDA)

LAD即线性判别分析(Linear Discriminant Analysis),其主要思想是寻找一组投影方向,使得样本在投影之后类内样本尽可能靠近,类间样本尽可能远离,从而提升分类能力。投影方向数小于原始数据的维度,故也是一种线性降维的方法。

2.3.2.1、数学推导

设有样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } , y i ∈ { 0 , 1 } \rm D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},\quad y_i\in \{0,1\} D={(x1,y1),(x2,y2),...,(xn,yn)},yi{0,1};记 μ i , Σ i \rm \mu_i, \Sigma_i μi,Σi 为样本均值和协方差矩阵,其中 i ∈ { 0 , 1 } \rm i\in\{0,1\} i{0,1},投影后两类样本的中心和协方差分别为 w T μ 0 、 w T μ 1 、 w T Σ 0 w 、 w T Σ 1 w \rm w^T\mu_0、w^T\mu_1、w^T\Sigma_0w、w^T\Sigma_1w wTμ0wTμ1wTΣ0wwTΣ1w,要使得:同类样本协方差最小,即需要最小化:
w T Σ 0 w + w T Σ 1 w \rm w^T\Sigma_0w+w^T\Sigma_1w wTΣ0w+wTΣ1w
要使得类中心距离最大,即需要最大化:
∥ w T μ 0 − w T μ 1 ∥ 2 2 \rm \left \| w^T\mu_0-w^T\mu_1 \right \|_2^2 wTμ0wTμ122
综合二者,可得最大化目标函数为:
J = ∥ w T μ 0 − w T μ 1 ∥ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( Σ 0 + Σ 1 ) w = w T S b w w T S w w \begin{aligned} J &=\rm \frac{\left \| w^T\mu_0-w^T\mu_1 \right \|_2^2}{w^T\Sigma_0w+w^T\Sigma_1w}\\ &=\rm \frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}\\ &=\rm \frac{w^TS_bw}{w^TS_ww} \end{aligned} J=wTΣ0w+wTΣ1wwTμ0wTμ122=wT(Σ0+Σ1)wwT(μ0μ1)(μ0μ1)Tw=wTSwwwTSbw
即为广义Rayleigh熵,其中类内散度矩阵 S w S_w Sw为:
S w = Σ 0 + Σ 1 \begin{aligned} \rm S_w=\Sigma_0+\Sigma_1 \end{aligned} Sw=Σ0+Σ1
类间散度矩阵 S b S_b Sb为:
S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T \begin{aligned} \rm S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T \end{aligned} Sb=(μ0μ1)(μ0μ1)T

你可能感兴趣的:(机器学习,模式识别,算法,python)