【ML】维数灾难,主成分分析降维:最大投影方差

维数灾难(curse of dimensionality)

  分类器的性能随着特征个数的变化不断增加,但过了某一个值后,性能开始下降,这种现象称为“维数灾难”。
在这里插入图片描述
维数灾难的影响——过拟合

  • 随着特征数量的增加,特征空间内的样本密度会更加稀疏,也就更容易找到一个超平面将训练样本分开;
  • 但是训练样本越稀疏,分类器的参数估计就会越不准确,更加容易出现过拟合问题。

  事实上,增加特征数量使得高维空间线性可分,相当于在低维空间内训练一个复杂的非线性分类器。不过,这个非线性分类器太过“聪明”,仅仅学到了一些特例。如果将其用来辨别那些未曾出现在训练样本中的测试样本时,通常结果不太理想,也就是出现过拟合问题。

维数灾难的影响——训练样本的稀疏性并不是均匀分布的
在这里插入图片描述
  假设特征的值域是0到1,二维特征空间为边长为1的正方形,三维特征空间为边长为1的立方体,高维特征空间为边长为1的超立方体,超立方体的体积为1,如上图所示。与超立方体内切的超球面是半径为0.5的超球面,体积为
V ( d ) = π d / 2 Γ ( d 2 + 1 ) 0. 5 d V(d)=\frac{\pi^{d/2}}{\Gamma(\frac{d}{2}+1)}0.5^d V(d)=Γ(2d+1)πd/20.5d

超球面的体积与维度 d d d的关系图形展示为,
在这里插入图片描述
  可以看出随着特征数量的增加,超球面的体积逐渐减小直至趋向于零,然而超立方体的体积却不变。也就是说,在高维特征空间中,大多数样本位于超立方体的角落,处于中心位置的训练样本比四周的训练样本更加稀疏。进一步地,记 d i s t m a x dist_{max} distmax d i s m i n dis_{min} dismin分别表示样本到中心的最大距离与最小距离,则有
lim ⁡ d → ∞ d i s t m a x − d i s t m i n d i s t m i n → 0 \lim_{d\rightarrow\infty}\frac{dist_{max}-dist_{min}}{dist_{min}}\rightarrow0 dlimdistmindistmaxdistmin0

  因此,在高维特征空间中对于样本距离的度量失去意义。由于分类器基本都依赖于如Euclidean距离,Manhattan距离等,所以在特征数量过大时,分类器的性能就会出现下降。

  • 样本是稀疏的,当时相对于整个特征空间来说,分布是密集的。
  • 低维空间中,内切圆相对整个正方形来说占很大比例,但这没办法推广到高维空间。

  理论上,如果训练样本的数量无限大,那么就不会存在“维数灾难”,我们可以采用任意多的特征来训练分类器。事实上,训练样本的数量是有限的,所以不应该采用过多的特征。此外,那些需要精确的非线性决策边界的分类器,比如neural network,knn,decision trees等的泛化能力往往并不是很好,更容易发生过拟合问题。因此,在设计这些分类器时应当慎重考虑特征的数量。相反,那些泛化能力较好的分类器,比如naive Bayesian,linear classifier等,可以适当增加特征的数量。

详细的分析例子可以参考博文:分类问题中的“维数灾难”

降维:

  • 直接降维/特征选择:直接扔掉若干个不相关的特征,比如LASSO;
  • 线性降维:PCA、MDS(多维缩放);
  • 非线性降维:流行(嵌入高维空间中的低维结构)学习,比如度量映射、局部线性嵌入。

PCA主成分分析

无监督降维。目标是降维后的数据方差尽可能的大。

作用:

  • 聚类:把复杂的多维数据点,简化成少量数据点,易于分簇。
  • 降维:降低高维数据维度,简化计算,达到数据降维、压缩、降噪的目的。

PCA的原理

  • 将原有的 p p p维数据集,转换为 k k k维数据, k < p k<p k<p
    • 寻找当前所在的 p p p线性空间的一个 k k k维线性子空间,在这个 k k k维空间表示这些数据(将数据投影到 k k k维空间);
    • k k k维子空间的各个维度是正交的:各个维度之间不相关。
  • 新生成的 k k k维数据尽可能多的包含原来 p p p维数据的信息:降维后数据应尽可能的分散,必然要求样本在每个维度上的投影都尽可能分散,用方差来衡量分散程度。
    • 这一点可通过下图来理解,当将数据投影到 x x x轴时,即将二维空间降维到 x x x轴这个一维空间,会有两个数据重合,它们在新的一维空间所表达的信息是相同的;而投影到 y = x y=x y=x这条直线时,所有数据都得以保留。PCA

PCA的数学推导

  设有包含 n n n个样本的训练数据集 T = { x 1 , x 2 , . . . , x n } T=\{x_1,x_2,...,x_n\} T={x1,x2,...,xn},每个样本 x i x_i xi都是 p p p维的, x i = ( x i 1 , x i 2 , . . . , x i p ) T x_i=(x_{i1},x_{i2},...,x_{ip})^T xi=(xi1,xi2,...,xip)T p p p维列向量,现要将其降到 k k k维。记 X = ( x 1 , x 2 , . . . , x n ) T X=(x_1,x_2,...,x_n)^T X=(x1,x2,...,xn)T
  不妨假设样本均值为0,否则,对数据做去均值处理:
x i − x ˉ = x i − 1 n ∑ j = 1 n x j , i = 1 , 2 , . . . , n x_i-\bar{x}=x_i-\frac{1}{n}\sum_{j=1}^n x_j,\quad i=1,2,...,n xixˉ=xin1j=1nxj,i=1,2,...,n
由于样本均值为0, X X X的样本协方差矩阵 C o v ( X ) Cov(X) Cov(X)
S = 1 n − 1 ∑ i = 1 n x i x i T = 1 n X T X S=\frac{1}{n-1}\sum_{i=1}^n x_ix_i^T=\frac{1}{n}X^TX S=n11i=1nxixiT=n1XTX
  假设我们找到的 k k k维线性子空间的一组基为 { u 1 , u 2 , . . . , u k } \{u_1,u_2,...,u_k\} {u1,u2,...,uk},其中 u i u_i ui p p p维列向量,是在当前 p p p维空间下的坐标表示,记 U = ( u 1 , u 2 , . . . , u k ) U=(u_1,u_2,...,u_k) U=(u1,u2,...,uk)。不妨设 ∣ ∣ u i ∣ ∣ 2 2 = u i T u i = 1 ||u_i||_2^2=u_i^Tu_i=1 ui22=uiTui=1,否则,令 u i = u i ∣ ∣ u i ∣ ∣ 2 2 u_i=\frac{u_i}{||u_i||_2^2} ui=ui22ui
  一个好的 k k k维空间应保证样本在每个维度的投影的方差尽可能的大,以维度 u 1 u_1 u1为例,样本在维度 u 1 u_1 u1的投影为:
z i = u 1 T x i , i = 1 , 2 , . . . , n z_i=u_1^Tx_i,\quad i=1,2,...,n zi=u1Txi,i=1,2,...,n
计算 z i , i = 1 , 2 , . . . , n z_i,i=1,2,...,n zi,i=1,2,...,n的样本均值与方差:
z ˉ = 1 n ∑ i = 1 n u 1 T x i = u 1 T x ˉ = 0 \bar{z}=\frac{1}{n}\sum_{i=1}^nu_1^Tx_i=u_1^T\bar{x}=0 zˉ=n1i=1nu1Txi=u1Txˉ=0
C o v ( z ) = 1 n − 1 ∑ i = 1 n ( u 1 T x i ) 2 = 1 n − 1 ∑ i = 1 n u 1 T x i x i T u 1 = u 1 T ( 1 n − 1 ∑ i = 1 n x i x i T ) u 1 = u 1 T S u 1 Cov(z)=\frac{1}{n-1}\sum_{i=1}^n(u_1^Tx_i)^2=\frac{1}{n-1}\sum_{i=1}^nu_1^Tx_ix_i^Tu_1=u_1^T(\frac{1}{n-1}\sum_{i=1}^nx_ix_i^T)u_1=u_1^TSu_1 Cov(z)=n11i=1n(u1Txi)2=n11i=1nu1TxixiTu1=u1T(n11i=1nxixiT)u1=u1TSu1
我们的目标是极大化 C o v ( z ) Cov(z) Cov(z)
max ⁡ u 1 u 1 T S u 1 s . t . ∣ ∣ u 1 ∣ ∣ 2 2 = 1 \begin{aligned} &\max_{u_1} \quad u_1^TSu_1\\ &s.t. \quad \quad ||u_1||_2^2=1 \end{aligned} u1maxu1TSu1s.t.u122=1
定义拉格朗日函数
u 1 T S u 1 + λ ( 1 − ∣ ∣ u 1 ∣ ∣ 2 2 ) u_1^TSu_1+\lambda(1-||u_1||_2^2) u1TSu1+λ(1u122)
关于 u 1 u_1 u1求导
2 S u 1 + λ ( − 2 u 1 ) = 0 2Su_1+\lambda(-2u_1)=0 2Su1+λ(2u1)=0
即有
S u 1 = λ u 1 Su_1=\lambda u_1 Su1=λu1
将上式带入 C o v ( z ) Cov(z) Cov(z)
C o v ( z ) = u 1 T S u 1 = u 1 T λ u 1 = λ ∣ ∣ u 1 ∣ ∣ 2 2 = λ Cov(z)=u_1^TSu_1=u_1^T\lambda u_1=\lambda ||u_1||_2^2=\lambda Cov(z)=u1TSu1=u1Tλu1=λu122=λ
这表明,数据集在特征向量方向上的投影方差最大,并且投影的方差为相应的特征值

  最优的 { u 1 , u 2 , . . . , u k } \{u_1,u_2,...,u_k\} {u1,u2,...,uk}应是这样的:将样本协方差矩阵 S S S的特征从大到小排序,前 k k k特征值 λ 1 , λ 2 , . . . , λ k \lambda_1,\lambda_2,...,\lambda_k λ1,λ2,...,λk,取相应的特征向量为 k k k维空间的基

kernel PCA

  一般而言, n n n条数据在 p ( p < n ) p(p<n) p(p<n)空间中线性不可分,但在 d ( d ≥ n ) d(d\geq n) d(dn)维空间中是线性可分的。也就是说,如果能将 n n n条数据映射到一个 d ( d ≥ n ) d(d\geq n) d(dn)维空间中,就可以很容易地构建超平面将数据点进行分类。
  设有映射 Φ \Phi Φ X X X映射到高维特征空间 F \mathcal{F} F Φ ( X ) ⊆ F ⊆ R d ( d > p ) \Phi(X)\subseteq \mathcal{F}\subseteq\mathbb{R}^d(d>p) Φ(X)FRd(d>p)
Φ : x i → Φ ( x i ) \Phi: x_i\rightarrow \Phi(x_i) Φ:xiΦ(xi)
并且在高维特征空间中,样本均值为0,
∑ i = 1 n Φ ( x i ) = 0 \sum_{i=1}^n\Phi(x_i)=0 i=1nΦ(xi)=0
  虽然在 F \mathcal{F} F中容易对数据进行分类,但是高维空间计算复杂,需要对再对 Φ ( X ) \Phi(X) Φ(X)进行PCA降维。协方差矩阵 C o v ( Φ ( X ) ) Cov(\Phi(X)) Cov(Φ(X))为,
C = 1 n − 1 ∑ i = 1 n Φ ( x i ) Φ ( x i ) T = 1 n − 1 Φ ( X ) T Φ ( X ) C=\frac{1}{n-1}\sum_{i=1}^n\Phi(x_i)\Phi(x_i)^T=\frac{1}{n-1}\Phi(X)^T\Phi(X) C=n11i=1nΦ(xi)Φ(xi)T=n11Φ(X)TΦ(X)
求解协方差矩阵 C C C的特征值,
C v = λ v Cv=\lambda v Cv=λv
带入,
1 n − 1 Φ ( X ) T Φ ( X ) v = 1 n − 1 ∑ i = 1 n Φ ( x i ) Φ ( x i ) T v = λ v \frac{1}{n-1}\Phi(X)^T\Phi(X)v=\frac{1}{n-1}\sum_{i=1}^n\Phi(x_i)\Phi(x_i)^T v=\lambda v n11Φ(X)TΦ(X)v=n11i=1nΦ(xi)Φ(xi)Tv=λv
Φ ( X ) T Φ ( X ) \Phi(X)^T\Phi(X) Φ(X)TΦ(X) C C C的特征向量相同,因此可去掉 1 n − 1 \frac{1}{n-1} n11,考虑
Φ ( X ) T Φ ( X ) v = ∑ i = 1 n Φ ( x i ) Φ ( x i ) T v = λ v ( 1 ) \Phi(X)^T\Phi(X)v=\sum_{i=1}^n\Phi(x_i)\Phi(x_i)^T v=\lambda v\quad\quad (1) Φ(X)TΦ(X)v=i=1nΦ(xi)Φ(xi)Tv=λv(1)
PCA降维时,我们只需找较大的特征值对应的特征向量,而不需要计算0特征值对应的特征向量,因此,考虑 λ ≠ 0 \lambda\neq0 λ=0,两边都是除以 λ \lambda λ
v = 1 λ ∑ i = 1 n ( Φ ( x i ) [ Φ ( x i ) T v ] ) v=\frac{1}{\lambda}\sum_{i=1}^n(\Phi(x_i)[\Phi(x_i)^T v]) v=λ1i=1n(Φ(xi)[Φ(xi)Tv])
等式右边方括号内为标量,上式表明,当 λ ≠ 0 \lambda\neq0 λ=0时,对应的特征向量 v v v可以表示为所有 Φ ( x i ) \Phi(x_i) Φ(xi)的线性组合,即
v = ∑ i = 1 n α i Φ ( x i ) = Φ ( X ) T α v=\sum_{i=1}^n\alpha_i\Phi(x_i)=\Phi(X)^T\alpha v=i=1nαiΦ(xi)=Φ(X)Tα
其中 α = ( α 1 , α 2 , . . . , α n ) T \alpha=(\alpha_1,\alpha_2,...,\alpha_n)^T α=(α1,α2,...,αn)T
带入(1)式,
Φ ( X ) T Φ ( X ) Φ ( X ) T α = λ Φ ( X ) T α \Phi(X)^T\Phi(X)\Phi(X)^T\alpha=\lambda \Phi(X)^T\alpha Φ(X)TΦ(X)Φ(X)Tα=λΦ(X)Tα
左乘 Φ ( X ) \Phi(X) Φ(X)
Φ ( X ) Φ ( X ) T Φ ( X ) Φ ( X ) T Φ ( X ) α = λ Φ ( X ) Φ ( X ) T α \Phi(X)\Phi(X)^T\Phi(X)\Phi(X)^T\Phi(X)\alpha=\lambda \Phi(X)\Phi(X)^T\alpha Φ(X)Φ(X)TΦ(X)Φ(X)TΦ(X)α=λΦ(X)Φ(X)Tα
定义矩阵 K = Φ ( X ) Φ ( X ) T K=\Phi(X)\Phi(X)^T K=Φ(X)Φ(X)T,则 k k k n × n n\times n n×n的对称半正定矩阵,其第 i i i j j j列的元素为 K i j = Φ ( x i ) T Φ ( x i ) K_{ij}=\Phi(x_i)^T\Phi(x_i) Kij=Φ(xi)TΦ(xi),则
K K α = λ α KK\alpha=\lambda\alpha KKα=λα
构建核函数
K ( x j , x k ) = Φ ( x j ) T Φ ( x k ) ( 2 ) K(x_j,x_k)=\Phi(x_j)^T\Phi(x_k)\quad\quad\quad(2) K(xj,xk)=Φ(xj)TΦ(xk)(2)
为求解(2)式,需求解,
K α = λ α K\alpha=\lambda\alpha Kα=λα
定义核函数 K ( x , y ) = Φ ( x ) T Φ ( y ) K(x,y)=\Phi(x)^T\Phi(y) K(x,y)=Φ(x)TΦ(y),则我们不需要显式定义 Φ \Phi Φ,这就是核技巧。
KPCA

参考:
数据降维: 核主成分分析(Kernel PCA)原理解析

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值