【机器学习笔记】第12章:降维

第12章:降维

12.1 主成分分析(PCA)

数据的特征数量,又称为向量的维度。降维(dimensionality reduction)是通过一些方法,减少数据的特征数量,以降低维度,通常采用主成分分析PCA(Principal Component Analysis)。降维的作用有:

  • 数据压缩,减小占用的存储空间
  • 加快算法的计算速度
  • 低维平面可以可视化数据

例如,将数据从二维降至一维就是把二维的点都映射到一条直线,用一个实数z就可以表示;三维降到二维就是把三维的点都映射到一个平面,用两个实数z1和z2就可以表示,如下图所示。
在这里插入图片描述在这里插入图片描述
主成分分析PCA是寻找一个低维平面,使得各个数据点到平面的投影距离最小。换句话说,就是寻找 k 个向量,作为子空间,将数据映射到这个子空间上,则数据的维度转换为 k 。
如下图所示,三维空间的数据几乎可看作分布在一个斜面上,则可在这个斜面上建立一个二维的平面,将数据映射上去,转换为二维空间。
在这里插入图片描述
PCA与线性回归的区别:
在这里插入图片描述
如上图所示,
①左图线性回归是要通过所有的x对变量y进行预测,而PCA的变量都是平等的,没有要预测的y。
②左图线性回归的最小距离是垂直于横轴,而右图的PCA是点到直线的正交距离。

12.2 主成分分析的算法

主成分分析PCA的算法主要由三部分组成:

  1. 数据预处理(均值归一化和特征规范化)
  2. 计算协方差矩阵 Σ \Sigma Σ
  3. 计算协方差矩阵 Σ \Sigma Σ 的特征向量(奇异值分解)

数据预处理主要是进行均值归一化,对每个特征值进行如下变化: μ j = 1 m ∑ i = 1 m x j ( i ) \mu_j=\frac{1}{m}\sum_{i=1}^mx_j^{(i)} μj=m1i=1mxj(i) x j ( i ) : = x j ( i ) − μ j s j x_j^{(i)}:=\frac{x_j^{(i)}-\mu_j}{s_j} xj(i):=sjxj(i)μj均值归一化可使得特征的均值为 0 ,其中 s j s_{j} sj 为特征缩放(取值范围的最大值减去最小值,使之取值范围接近 [-1,1] )。
计算数据的协方差矩阵,采用如下公式,注意 ( x ( i ) ) ( x ( i ) ) T (x^{(i)})(x^{(i)})^{T} (x(i))(x(i))T 是一个矩阵: Σ = 1 m ∑ i = 1 m ( x ( i ) ) ( x ( i ) ) T \Sigma=\frac{1}{m}\sum_{i=1}^m(x^{(i)})(x^{(i)})^{T} Σ=m1i=1m(x(i))(x(i))T进行奇异值分解,在matlab中,可有如下公式: [ U , S , V ] = s v d ( Σ ) [U,S,V]=svd(\Sigma) [U,S,V]=svd(Σ)其中, U = [ ⋮ ⋮ ⋮ u ( 1 ) u ( 2 ) ⋯ u ( n ) ⋮ ⋮ ⋮ ] U=\begin{bmatrix} \vdots & \vdots & & \vdots \\ u^{(1)} & u^{(2)} & \cdots & u^{(n)} \\ \vdots & \vdots & & \vdots \end{bmatrix} U=u(1)u(2)u(n) U U U是一个 n ∗ n n*n nn的矩阵,取前 k k k列,得到 U r e d u c e = [ ⋮ ⋮ ⋮ u ( 1 ) u ( 2 ) ⋯ u ( k ) ⋮ ⋮ ⋮ ] U_{reduce}=\begin{bmatrix} \vdots & \vdots & & \vdots \\ u^{(1)} & u^{(2)} & \cdots & u^{(k)} \\ \vdots & \vdots & & \vdots \end{bmatrix} Ureduce=u(1)u(2)u(k) U r e d u c e U_{reduce} Ureduce是一个 n ∗ k n*k nk的矩阵,接下来: z = ( U r e d u c e ) T ⋅ x z=(U_{reduce})^{T}\cdot x z=(Ureduce)Tx将每一个向量 x x x 转换为 z z z z z z k ∗ 1 k*1 k1 的向量,达到了降维的目的。

注:最后一步转换的 x x x 是没有偏置 x 0 x_{0} x0 的。

12.3 低维空间维度的选择

我们已知主成分分析是要寻找一个低维平面,使得各个数据点到这个平面的距离最小,这个距离可采用平均投影误差的平方(average squared projection error)量化,定义如下: 1 m ∑ i = 1 m ∥ x ( i ) − x a p p r o x ( i ) ∥ 2 \frac{1}{m}\sum_{i=1}^m\Vert x^{(i)}-x_{approx}^{(i)}\Vert^2 m1i=1mx(i)xapprox(i)2其中, x a p p r o x x_{approx} xapprox 是在高维空间中映射到低维平面上的近似点(维度仍然是高维,与 z z z 不同, z z z 的维度是低维), x a p p r o x = U r e d u c e ⋅ z x_{approx}=U_{reduce}\cdot z xapprox=Ureducez

我们需寻找满足下式的最小的 k k k 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\Vert x^{(i)}-x_{approx}^{(i)}\Vert^2}{\frac{1}{m}\sum_{i=1}^m\Vert x^{(i)}\Vert^2}\leq0.01 m1i=1mx(i)2m1i=1mx(i)xapprox(i)20.01其中,右侧的数值可根据实际情况调整,0.01为保证了 99% 的方差。
此外,还有一种计算方法,在奇异值分解 [ U , S , V ] = s v d ( Σ ) [U,S,V]=svd(\Sigma) [U,S,V]=svd(Σ)中, S = [ s 11 0 ⋱ 0 s n n ] S=\begin{bmatrix} s_{11} & & 0 \\ & \ddots & \\ 0 & & 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 n n \frac{\frac{1}{m}\sum_{i=1}^m\Vert x^{(i)}-x_{approx}^{(i)}\Vert^2}{\frac{1}{m}\sum_{i=1}^m\Vert x^{(i)}\Vert^2}=1-\frac{\sum_{i=1}^ks_{ii}}{\sum_{i=1}^ns_{nn}} m1i=1mx(i)2m1i=1mx(i)xapprox(i)2=1i=1nsnni=1ksii只需求解最小的 k k k ,满足下式即可: 1 − ∑ i = 1 k s i i ∑ i = 1 n s n n ≤ 0.01 1-\frac{\sum_{i=1}^ks_{ii}}{\sum_{i=1}^ns_{nn}}\leq0.01 1i=1nsnni=1ksii0.01

12.4 应用PCA的建议

  • 使用PCA去防止过拟合是对PCA算法的误用,正则化才是解决过拟合的正确方法。
  • 在用PCA之前,应该先考虑用原始数据进行训练,如果达不到目的(如速度太慢、内存不够时)再考虑PCA,不要一上来就直接用PCA。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值