【AndrewNg机器学习】降维(Dimensionality Reduction)

1. 降维

如下图所示,有一个含m个样本量的数据组,每个样本包含两个特征,我们可以找到一条直线z,将所有的点投影到该条直线上,那么每个样本的两个特征 x 1 x_1 x1 x 2 x_2 x2就被压缩成一个特征 z 1 z_1 z1,数据集由{ ( x 1 ( 1 ) , x 2 ( 1 ) ) , … … ( x 1 ( m ) , x 2 ( m ) ) (x^{(1)}_1,x^{(1)}_2),……(x^{(m)}_1,x^{(m)}_2) (x1(1),x2(1)),(x1(m),x2(m))}压缩为{ ( z 1 ( 1 ) ) , ( z 1 ( 2 ) ) … … ( z 1 ( m ) ) (z^{(1)}_1),(z^{(2)}_1)……(z^{(m)}_1) (z1(1)),(z1(2))(z1(m))}。
在这里插入图片描述
同时,我们也可以将三维数据转化为二维,即将三维空间中的每个点投影到一个二维平面上。数据集由{ ( x 1 ( 1 ) , x 2 ( 1 ) , x 3 ( 1 ) ) , ( x 1 ( 2 ) , x 2 ( 2 ) , x 3 ( 2 ) ) … … ( x 1 ( m ) , x 2 ( m ) , x 3 ( m ) ) (x^{(1)}_1,x^{(1)}_2,x^{(1)}_3),(x^{(2)}_1,x^{(2)}_2,x^{(2)}_3)……(x^{(m)}_1,x^{(m)}_2,x^{(m)}_3) (x1(1),x2(1),x3(1)),(x1(2),x2(2),x3(2))(x1(m),x2(m),x3(m))}压缩为{ ( z 1 ( 1 ) , z 2 ( 1 ) ) , ( z 1 ( 2 ) , z 2 ( 2 ) ) … … ( z 1 ( m ) , z 1 ( m ) ) (z^{(1)}_1,z^{(1)}_2),(z^{(2)}_1,z^{(2)}_2)……(z^{(m)}_1,z^{(m)}_1) (z1(1),z2(1)),(z1(2),z2(2))(z1(m),z1(m))}。
在这里插入图片描述
数据降维在可以使得数据更好的可视化的同时,也减小了数据的大小,使其占用内存更小,后续算法运行更快。

2. 主成分分析(Principal Component Analysis ,PCA)

2.1 什么是PCA

主成分分析是最常见的降维算法。在PCA算法中,我们就是要找到一个方向向量,即上一部分中数据投影的直线或平面。该低维向量 u ( 1 ) u^{(1)} u(1)需要满足投射平均均方误差最小,投射误差是从特征向量向低维平面做垂线的长度。
在这里插入图片描述
如下图所示,如果降维过程是将3D-2D,则需要找到两个方向向量。若是nD-kD,则需找到k个方向向量: u ( 1 ) , u ( 2 ) … … u ( k ) u^{(1)},u^{(2)}……u^{(k)} u(1)u(2)u(k)
在这里插入图片描述

PCA与线性回归是两种不同的算法,PCA最小化的目标是投射误差,不进行任何预测;而线性回归最小化目标是预测误差,其目的是为了进行预测。如下图所示,左边是线性回归误差(垂直于x1周轴),右边则是主要成分分析的误差(垂直于方向向量)。
在这里插入图片描述

2.2 PCA算法

假设我们要将PCA从n维减小到k维,其中原始数据为: x ( 1 ) , x ( 2 ) … … x ( m ) ( s h a p e = ( m , n ) ) x^{(1)},x^{(2)}……x^{(m)}(shape=(m,n)) x(1),x(2)x(m)(shape=(m,n)) x ( i ) x^{(i)} x(i)中包含n个特征值。

首先要进行均值归一化,计算每个特征的均值 u j u_j uj, x j = x j − u j x_j=x_j-u_j xj=xjuj。如果不同的特征值处于不同的数量级,还需要将每个特征除以一个值,该值可以是特征的max-min,也可以是特征的标准偏差,以保证所有的特征在一个缩放范围内。

然后由 x ( i ) x^{(i)} x(i) ( n , 1 ) _{(n,1)} (n,1)计算协方差矩阵(covariance matrix) Sigma ( n , n ) _{(n,n)} (n,n):
Σ = 1 m ∑ i = 1 n ( x ( i ) ) ( x ( i ) ) T \Sigma=\frac{1}{m}\sum_{i=1}^{n}{(x^{(i)})(x^{(i)})^T} Σ=m1i=1n(x(i))(x(i))T

通过奇异值分解(singular value decomposition,SVD)来求解:[U,S,V]=SVD(sigma)。其中计算结果U ( n , n ) _{(n,n)} (n,n)如下图,U 是一个具有与数据之间最小投射误差的方向向量构成的矩阵
在这里插入图片描述

然后从U中选去前k个向量得到一个n*k的矩阵命为 U r e d u c e U_{reduce} Ureduce,则最后计算降维的结果 z ( i ) = U r e d u c e T × x ( i ) z^{(i)}=U^T_{reduce}\times x^{(i)} z(i)=UreduceT×x(i)结果维度 ( k , 1 ) (k,1) (k,1)

下图为该过程的一个总结。
在这里插入图片描述

2.3 压缩重现

在数据降维后得到 z = U r e d u c e T ∗ x z=U^T_{reduce}*x z=UreduceTx,将他映射到原来的高维数据: x a p p r o x = U r e d u c e × z x_{approx}=U_{reduce} \times z xapprox=Ureduce×z

2.4 主成分数量选择

主成分分析的目的是使得投射的平均误差最小,因此主成分的数量k应满足下面的条件,即压缩后的数据应该维持原数据差异性的99%:
1 m ∑ i = 1 m ∣ x ( i ) − x a p p r o x ( i ) ∣ 2 1 m ∑ i = 1 m ∣ x ( i ) ∣ 2 ≤ 0.01 \frac{\frac{1}{m}\sum_{i=1}^{m}{|x^{(i)}-x^{(i)}_{approx}|^2}} { \frac{1}{m}\sum_{i=1}^{m}{|x^{(i)}|^2} } \leq 0.01 m1i=1mx(i)2m1i=1mx(i)xapprox(i)20.01
如果这个比例小于1%,就意味着原本数据方差的99%都保留下来了,即上面的值越小越好。我们可以先令k=1,然后进行主要成分分析,获得 U r e d u c e U_{reduce} Ureduce和z,然后计算比例是否小于1%。如果不是的话再令k=2,如此类推,直到找到可以使得比例小于1%的最小k值。
另外,在我们使用SVD算法时[U,S,V]=SVD(sigma),会得到结果S,其中S为一个 ( n × n ) (n \times n) (n×n)对角矩阵:
S = [ S 11 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ S n n ] S = \begin{bmatrix} S_{11} & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & S_{nn} \end{bmatrix} S=S1100Snn
且满足下面的关系:
1 m ∑ i = 1 m ∣ x ( i ) − x a p p r o x ( i ) ∣ 2 1 m ∑ i = 1 m ∣ x ( i ) ∣ 2 = 1 − ∑ i = 1 k S i i ∑ i = 1 n S i i ≤ 0.01 \frac{\frac{1}{m}\sum_{i=1}^{m}{|x^{(i)}-x^{(i)}_{approx}|^2}} { \frac{1}{m}\sum_{i=1}^{m}{|x^{(i)}|^2} } = 1- \frac{\sum_{i=1}^{k}S_{ii}}{\sum_{i=1}^{n}S_{ii}} \leq 0.01 m1i=1mx(i)2m1i=1mx(i)xapprox(i)2=1i=1nSiii=1kSii0.01
因此k值需要满足: ∑ i = 1 k S i i ∑ i = 1 n S i i ≥ 0.99 \frac{\sum_{i=1}^{k}S_{ii}}{\sum_{i=1}^{n}S_{ii}} \geq 0.99 i=1nSiii=1kSii0.99

2.5 一些建议

应该注意以下几点:

  • 不要用PCA来减少过拟合
  • 不要将PCA看作训练时的默认步骤,应该先尝试原有特征。

假使我们正在针对一张100×100像素的图片进行某个计算机视觉的机器学习,即总共
有10000个特征,则应该按照下面的方法:

  • 得到训练数据
  • 用PCA将10000特征进行降维
  • 使用逻辑回归进行训练
  • 在测试集上测试
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值