机器学习算法笔记:降维

文章目录

    • 降维
    • 线性降维-主成分分析 PCA
      • 原始空间重构
        • 最大投影方差
        • 最小重构距离
    • SVD 与 PCoA
    • P-PCA
    • 参考文献

降维

解决过拟合问题除正则化和添加数据外,降维就是最好的方法。一个 n n n 维球的体积可表示为:
C R n CR^n CRn

那么在球体积与边长为 2 R 2R 2R 的超立方体比值为:
lim ⁡ n → 0 C R n 2 n R n = 0 \lim\limits_{n\rightarrow0}\frac{CR^n}{2^nR^n}=0 n0lim2nRnCRn=0

这就是所谓的维度灾难,在高维数据中,主要样本都分布在立方体的边缘,所以数据集更加稀疏。

降维的算法分为

  • 直接降维:特征选择
  • 线性降维:PCA,MDS等
  • 非线性:流形包括 Isomap,LLE 等

Data: X = ( x 1   ⋯   x N ) N × P T = ( x 1      ⋮ x N ) = ( x 11 ⋯ x 1 P      ⋮      ⋱      ⋮ x N 1 ⋯ x N P ) N × P X=(x_1\ \cdots\ x_N)^T_{N\times P}=\left(\begin{aligned}&x_1\\ &\;\;\vdots\\ &x_N \end{aligned} \right)=\left(\begin{aligned}&x_{11}\cdots x_{1P} \\ &\;\;\vdots\;\;\ddots\;\; \vdots\\ &x_{N1}\cdots x_{NP} \end{aligned} \right)_{N\times P} X=(x1  xN)N×PT=x1xN=x11x1PxN1xNPN×P

Sample mean: X ˉ = 1 N ∑ i = 1 N x i = 1 N X T I N 1 \bar X=\frac 1 N\sum^N_{i=1}x_i=\frac1NX^T\mathbb I_{N1} Xˉ=N1i=1Nxi=N1XTIN1

Sample covariance: S P × P = 1 N ∑ i = 1 N ( x i − x ‾ ) ( x i − x ‾ ) T S_{P\times P}=\frac{1}{N}\sum\limits_{i=1}^N(x_i-\overline{x})(x_i-\overline{x})^T SP×P=N1i=1N(xix)(xix)T

为方便计算,令 E N E_N EN表示 N N N阶单位矩阵, I N 1 = ( 1 ⋮ 1 ) \mathbb{I}_{N1}=\left(\begin{aligned}1\\\vdots\\1\end{aligned}\right) IN1=11,则有:
X T − X ˉ ( 1   ⋯   1 ) = X T − X ˉ I N 1 T = X T − 1 N X T I N 1 I N 1 T = X T ( E N − 1 N I N 1 I N 1 T ) ⏟ 中心矩阵 H N \begin{aligned} \color{blue}X^T-\bar X(1\ \cdots\ 1)&=X^T-\bar X\mathbb{I}^T_{N1}\\ &=X^T-\frac1NX^T\mathbb{I}_{N1}\mathbb{I}^T_{N1}\\ &=X^T\underbrace{(E_N-\frac1N\mathbb{I}_{N1}\mathbb{I}^T_{N1})}_{\color{blue}\text{中心矩阵}H_N} \end{aligned} XTXˉ(1  1)=XTXˉIN1T=XTN1XTIN1IN1T=XT中心矩阵HN (ENN1IN1IN1T)

中心矩阵也是一个投影矩阵,具有如下性质:

  • H N T = H N H^T_N=H_N HNT=HN 对称性
  • H N 2 = H N ⋅ H N = H N H^2_N=H_N\cdot H_N=H_N HN2=HNHN=HN
  • H N n = H N H^n_N=H_N HNn=HN

将协方差矩阵(数据集)写成中心化的形式:
S = 1 N ∑ i = 1 N ( x i − x ‾ ) ( x i − x ‾ ) T = 1 N ( x 1 − x ‾ , x 2 − x ‾ , ⋯   , x N − x ‾ ⏟ X T − X ˉ ( 1   ⋯   1 ) ) ( x 1 − x ‾ , x 2 − x ‾ , ⋯   , x N − x ‾ ) T = 1 N ( X T − 1 N X T I N 1 I N 1 T ) ( X T − 1 N X T I N 1 I N 1 T ) T = 1 N X T ( E N − 1 N I N 1 I 1 N ) ( E N − 1 N I N 1 I 1 N ) T X = 1 N X T H N H N T X = 1 N X T H N H N X = 1 N X T H X \begin{aligned} S&=\frac{1}{N}\sum\limits_{i=1}^N(x_i-\overline{x})(x_i-\overline{x})^T\\ &=\frac{1}{N}(\underbrace{x_1-\overline{x},x_2-\overline{x},\cdots,x_N-\overline{x}}_{\color{blue}X^T-\bar X(1\ \cdots\ 1)})(x_1-\overline{x},x_2-\overline{x},\cdots,x_N-\overline{x})^T\\ &=\frac{1}{N}(X^T-\frac{1}{N}X^T\mathbb{I}_{N1}\mathbb{I}_{N1}^T)(X^T-\frac{1}{N}X^T\mathbb{I}_{N1}\mathbb{I}_{N1}^T)^T\\ &=\frac{1}{N}X^T(E_N-\frac{1}{N}\mathbb{I}_{N1}\mathbb{I}_{1N})(E_N-\frac{1}{N}\mathbb{I}_{N1}\mathbb{I}_{1N})^TX\\ &=\frac{1}{N}X^TH_NH_N^TX\\ &=\frac{1}{N}X^TH_NH_NX=\frac{1}{N}X^THX \end{aligned} S=N1i=1N(xix)(xix)T=N1(XTXˉ(1  1) x1x,x2x,,xNx)(x1x,x2x,,xNx)T=N1(XTN1XTIN1IN1T)(XTN1XTIN1IN1T)T=N1XT(ENN1IN1I1N)(ENN1IN1I1N)TX=N1XTHNHNTX=N1XTHNHNX=N1XTHX

线性降维-主成分分析 PCA

原始空间重构

主成分分析基本思想是将所有数据投影到一个子空间中进行降维:

  • 所有数据在子空间中更为分散
  • 损失的信息最小,即:在补空间的分量少

高纬数据的维度间可能是相关的(特征相关),找到其 p p p q q q 个线性无关的单位基 u i u_i ui u i T x i u_i^Tx_i uiTxi可以看作数据投影在 u i u_i ui 方向上的长度, 再乘以单位基 u i u_i ui 将其变为 u i u_i ui 方向上的向量 ( u i T x i ) u i (u_i^Tx_i)u_i (uiTxi)ui,将这 q q q 个基作为主要成分以达到降维目的。对于一个样本 x i x_i xi有: x i ^ = ∑ i = 1 p ( u i T x i ) u i = ∑ i = 1 q ( u i T x i ) u i ⏟ 主成分 + ∑ i = q + 1 p ( u i T x i ) u i \hat{x_i}=\sum\limits_{i=1}^p(u_i^Tx_i)u_i=\underbrace{\sum\limits_{i=1}^q(u_i^Tx_i)u_i}_{\color{blue}\text{主成分}}+\sum\limits_{i=q+1}^p(u_i^Tx_i)u_i xi^=i=1p(uiTxi)ui=主成分 i=1q(uiTxi)ui+i=q+1p(uiTxi)ui

最大投影方差

主成分需要尽可能保留更多的信息(如果都投影到一个点,那方差为零,没什么有用信息),所以要使中心化后,投影到子空间的数据的方差最大化,(注意:中心化后的均值为0):
{ J = 1 N ∑ i = 1 N ∑ j = 1 q ( ( x i − x ‾ ) T u j − 0 ) 2 = ∑ j = 1 q u j T S u j   , s . t .        u j T u j = 1 \left\{ \begin{aligned} & J=\frac{1}{N}\sum\limits_{i=1}^N\sum\limits_{\color{blue}j=1}^{\color{blue}q}((x_i-\overline{x})^Tu_j-0)^2 =\sum\limits_{j=1}^qu_j^TSu_j\ ,\\ &s.t.\;\;\; u_j^Tu_j=1 \end{aligned}\right. J=N1i=1Nj=1q((xix)Tuj0)2=j=1qujTSuj ,s.t.ujTuj=1

由于每个基都是线性无关的,于是每一个 u j u_j uj 的求解可以分别进行,使用拉格朗日乘子法:
a r g m a x u j L ( u j , λ ) = a r g m a x u j u j T S u j + λ ( 1 − u j T u j ) \mathop{argmax}\limits_{u_j}L(u_j,\lambda)=\mathop{argmax}\limits_{u_j}u_j^TSu_j+\lambda(1-u_j^Tu_j) ujargmaxL(uj,λ)=ujargmaxujTSuj+λ(1ujTuj)

u j \color{blue}u_j uj 求偏导并令其为零:
S u j = λ u j Su_j=\lambda u_j Suj=λuj

因此要求的基就是协方差矩阵的本征值,要使损失函数最大就是取在本征值前 q q q 个最大值。

最小重构距离

最小重构距离也就是最小投影距离,保留更多的信息也就是损失的信息要尽可能少,损失函数形式同上,不过这里是要对其最小化: { J = 1 N ∑ i = 1 N ∑ j = q + 1 p ( ( x i − x ‾ ) T u j ) 2 = ∑ j = q + 1 p u j T S u j   , s . t .        u j T u j = 1 \left\{ \begin{aligned} &J=\frac{1}{N}\sum\limits_{i=1}^N\sum\limits_{\color{blue}j=q+1}^{\color{blue}p}((x_i-\overline{x})^Tu_j)^2=\sum\limits_{j=q+1}^pu_j^TSu_j\ ,\\ &s.t.\;\;\; u_j^Tu_j=1 \end{aligned}\right. J=N1i=1Nj=q+1p((xix)Tuj)2=j=q+1pujTSuj ,s.t.ujTuj=1

同样的:
a r g m i n u j L ( u j , λ ) = a r g m i n u j u j T S u j + λ ( 1 − u j T u j ) \mathop{argmin}\limits_{u_j}L(u_j,\lambda)=\mathop{argmin}\limits_{u_j}u_j^TSu_j+\lambda(1-u_j^Tu_j) ujargminL(uj,λ)=ujargminujTSuj+λ(1ujTuj)

损失函数最小取在本征值剩下的个最小的几个值

SVD 与 PCoA

  • S 分解:直接对方差矩阵进行 SVD 分解:
    S = G K G T S=GKG^T S=GKGT
    G G T = I GG^T=\mathbb I GGT=I \qquad G G G是正交的
    K = [ k 1      ⋱ k p ] K=\left[\begin{aligned} &k_1\qquad\\ &\;\;\ddots \\ &\qquad k_p \end{aligned}\right] K=k1kp,取前 q q q 个最大的即可

  • H X HX HX 分解: 直接对中心化数据奇异值分解,再代入方差矩阵中,间接对方差矩阵SVD分解
    H X = U Σ V T → { U T U = E N , → 列正交 V T V = E p , → 正交 Σ : N × p → 对角矩阵 HX=U\Sigma V^T\to\left\{\begin{aligned} &U^TU=E_N,\to\text{列正交}\\ &V^TV=E_p,\to\text{正交}\\ &\Sigma:N\times p\to\text{对角矩阵} \end{aligned}\right. HX=UΣVTUTU=EN,列正交VTV=Ep,正交Σ:N×p对角矩阵

    代入方差矩阵中,间接得到方差矩阵SVD分解:
    S = 1 N X T H X = 1 N X T H T H X ⏟ Δ = 1 N V Σ U T U Σ V T = 1 N V Σ T Σ ⏟ Σ 2 V T S=\frac{1}{N}X^THX=\frac{1}{N}\underbrace{X^TH^THX}_{\color{blue}\Delta}=\frac{1}{N}V\Sigma U^TU\Sigma V^T=\frac{1}{N}V\underbrace{\Sigma^T\Sigma}_{\color{blue}\Sigma^2} V^T S=N1XTHX=N1Δ XTHTHX=N1VΣUTUΣVT=N1VΣ2 ΣTΣVT 得到特征值和特征向量 V V V,然后求得投影坐标为: H X V \color{blue}HXV HXV

  • T 分解:定义一个矩阵 T = Δ T T={\color{blue}\Delta}^T T=ΔT
    也就是 PCoA 主坐标分析,由上面的推导可知:
    H X V ⏟ 坐标矩阵 = U Σ V T V = U Σ T = H X X T H T ⏟ Δ T = H X X T H = U Σ V T V Σ U T = U Σ 2 U T = U Σ Σ T U T   ⟹   T  分解可直接得到坐标矩阵 T U Σ = U Σ 2 U T U Σ = U Σ 3 = U Σ Σ 2   ⟹ U Σ  是  T  的特征向量组成的矩阵 \begin{aligned} &\underbrace{HXV}_{\color{blue}\text{坐标矩阵}}=U\Sigma V^TV={\color{blue}U\Sigma}\\ &T=\underbrace{HXX^TH^T}_{\color{blue}\Delta^T}=HXX^TH=U\Sigma V^TV\Sigma U^T=U\Sigma^2U^T={\color{blue}U\Sigma}\Sigma^TU^T \ _{\color{blue}\Longrightarrow \text{ $T$ 分解可直接得到坐标矩阵}}\\ &TU\Sigma=U\Sigma^2U^TU\Sigma=U\Sigma^3={\color{blue}U\Sigma}\Sigma^2\ _{\color{blue}\Longrightarrow \text{$U\Sigma$ 是 $T$ 的特征向量组成的矩阵}} \end{aligned} 坐标矩阵 HXV=UΣVTV=UΣT=ΔT HXXTHT=HXXTH=UΣVTVΣUT=UΣ2UT=UΣΣTUT  T 分解可直接得到坐标矩阵TUΣ=UΣ2UTUΣ=UΣ3=UΣΣ2 UΣ  T 的特征向量组成的矩阵

方差矩阵 S 为 p × p p\times p p×p 维(特征数量有关), T T T N × N N\times N N×N 维(样本数量有关),所以对样本量较少的时候可以采用 PCoA的方法。

P-PCA

PCA 对原数据 x ∈ R p x\in\mathbb{R}^p xRp降维 ,降维后的数据为 z ∈ R q , q < p z\in\mathbb{R}^q,q

zRqq<p,从概率的角度对 PCA 进行分析(P-PCA), z z z 可以看作 latent data, x x x 相当于对 z z z 进行线性变换加上噪声(服从高斯分布,各项同性),类似线性高斯模型,这里隐变量 z z z 是连续的:
z ∼ N ( 0 q 1 , I q q )   latent data x = W z + μ + ε   observe data ε ∼ N ( 0 , σ 2 I p p )   各项同性质 ϵ ⊥ z \begin{aligned} z&\sim\mathcal{N}(\mathbb{0}_{q1},\mathbb{I}_{qq})\quad\ _{\text{latent data}}\\ x&=Wz+\mu+\varepsilon\quad\ _{\text{observe data}}\\ \varepsilon&\sim\mathcal{N}(0,\sigma^2\mathbb{I}_{pp})\quad \ _{\text{各项同性质}}\\ & \epsilon\perp z \end{aligned} zxεN(0q1,Iqq) latent data=Wz+μ+ε observe dataN(0,σ2Ipp) 各项同性质ϵz

P-PCA可以使用 EM 算法进行学习,在进行推断时需求得 p ( z ∣ x ) p(z|x) p(zx)
P − P C A { Inference : p ( z ∣ x ) Learning : W , μ , σ 2 → EM算法 P-PCA\left\{\begin{aligned}\text{Inference}&:p(z|x)\\ \text{Learning}&:W,\mu,\sigma^2\to\text{EM算法} \end{aligned}\right. PPCA{InferenceLearning:p(zx):W,μ,σ2EM算法

推断的求解过程和线性高斯模型(GMM 是离散的)类似:
p ( z ∣ x ) = p ( x ∣ z ) p ( z ) p ( x ) E [ x ] = E [ W z + μ + ε ] = μ V a r [ x ] = W W T + σ 2 I p p ⟹ p ( z ∣ x ) = N ( W T ( W W T + σ 2 I ) − 1 ( x − μ ) , I − W T ( W W T + σ 2 I ) − 1 W ) \begin{aligned} &p(z|x)=\frac{p(x|z)p(z)}{p(x)}\\ &\mathbb{E}[x]=\mathbb{E}[Wz+\mu+\varepsilon]=\mu\\ &Var[x]=WW^T+\sigma^2\mathbb{I}{pp}\\ \Longrightarrow p(z|x)=\mathcal{N}(W^T(WW^T+&\sigma^2\mathbb{I})^{-1}(x-\mu),\mathbb{I}-W^T(WW^T+\sigma^2\mathbb{I})^{-1}W) \end{aligned} p(zx)=N(WT(WWT+p(zx)=p(x)p(xz)p(z)E[x]=E[Wz+μ+ε]=μVar[x]=WWT+σ2Ippσ2I)1(xμ),IWT(WWT+σ2I)1W)

参考文献

【1】降维
【2】主成分分析(PCA)原理总结
【3】奇异值分解(SVD)原理与在降维中的应用
【4】线性判别分析LDA原理总结

你可能感兴趣的:(机器学习,机器学习)