吴恩达机器学习——第15章 降维

1、定义

数据是由一个个特征组成的,假如数有n个特征,则称数据是n维的。
降维就是在保证数据特征趋势不变的前提下,减少特征的个数。
减少特征的依据是把多个相似、相关特征合并为1个特征。

2、目的

降维的目的分为两种:

  • 压缩数据:特征数量变少了,数据量自然也就变少了,压缩数据后,可以提升计算速度,降低存储消耗。
  • 可视化:通过可视化手段可以帮助我们进行数据分析,但是高纬度的数据(比如10维),是无法通过可视化的手段展现的,通过降维把维度降低到3维、2维后,就可以对数据进行可视化处理了。

3、PCA降维

PCA(Principal Component Analysis),主成分分析法,是最常用的降维方法之一。其核心思想是找出一个低维的平面或子空间,把样本投影到上面,使原样本与投影后的样本的距离的平方和最小。
在这里插入图片描述
如上图所示,把二维的数据投影到了一维的直线上。原始样本到直线的垂直距离,也称为“投影误差”。PCA就是找到一条使投影误差的平方和最小的平面。
注意PCA求解过程中,只与特征 x 1 , x 2 , . . . . x_1,x_2,.... 相关,并不涉及到样本的标签y。

3.1 计算过程

  1. 首先对数据进行预处理:均值标准化或特征缩放。
    – 均值标准化:计算某个特征的平均值,然后使用特征值减去平均值来代替原来的特征值,
    – 特征缩放:按照比率把特征缩放到某个特定范围内,比如除以1000.
  2. 计算协方差:
    Σ = 1 m i = 1 m ( x ( i ) ) ( x ( i ) ) T \Sigma=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)})(x^{(i)})^T
    注意左边的 Σ \Sigma 是大写的sigma,不是累加。
    把Sigma代入svd公式,可以求出3个矩阵:
    [ U , S , V ] = s v d ( s i g m a ) [U,S,V]=svd(sigma)
    svd:是奇异值分解算法,是octave中的一个函数。
    U:U是一个n*n的矩阵,称为降维矩阵,降到k维就是取它的前k列。
    在这里插入图片描述
  3. 映射矩阵:映射到子空间上的矩阵
    在这里插入图片描述
    z代表映射后的矩阵,等于降维矩阵的前k列的转置乘以x,是一个k维的向量。
  4. 之后使用z代替x进行计算即可。

3.2 主成分数量的选择

主成分数量,指的是降维的数量,使用k表示,本节介绍如何选择k。
降维的目的是保证特征趋势不变的前提下,尽量选择小的k。
数学上讲就是保留最大的方差性的前提下,选择最小的k。

3.2.1 选择方法1

假设压缩后再还原的特征值为 x a p p r o x x_{approx} ,则 x x a p p r o x x-x_{approx} 代表原始值与还原值的差距,该差距越小,则代表着压缩后的损失越小。

s = 1 m i = 1 m x ( i ) x a p p r o x ( i ) 2 1 m i = 1 m x ( i ) 2 s=\frac{\frac{1}{m}\sum_{i=1}^m||x^{(i)}-x_{approx}^{(i)}||^2}{\frac{1}{m}\sum_{i=1}^m||x^{(i)}||^2}

s代表损失的方差,则选择k的过程就是逐渐增大k,并保证s在合理范围内,比如<=0.01。

计算过程为:

  1. 假设k=1
  2. 计算s的值。
  3. 判断s<=0.01。
  4. 如果不满足条件则k=k+1,重新执行步骤2.

3.2.2 选择方法2

[ U , S , V ] = s v d ( s i g m a ) [U,S,V]=svd(sigma)

在这里插入图片描述
通过矩阵s来计算k:
1 i = 1 k S i i i = 1 n S i i < = 0.01 1-\frac{\sum_{i=1}^kS_{ii}}{\sum_{i=1}^nS_{ii}}<=0.01

i = 1 k S i i i = 1 n S i i > = 0.99 \frac{\sum_{i=1}^kS_{ii}}{\sum_{i=1}^nS_{ii}}>=0.99

3.3 压缩重现

压缩重现就是把压缩后的低维数据恢复到高维,因为
Z = U r e d u c e T X Z=U_{reduce}^T*X
所以 X a p p r o x = U r e d u c e Z X_approx=U_{reduce}*Z

3.4 建议

  • PCA只应用到训练集上,然后把降维矩阵应用到测试集和交叉训练集上。
  • PCA不要用来防止过拟合:因为PCA的计算过程与Y根本就没有关系,降维的过程中可能会丢失与Y有关系的关键信息,所以不要使用PCA来将拟合,而使用正则化的方式。
  • 不要把PCA作为必选步骤:保持简单,有必要的时候再用,比如需要数据压缩或可视化的时候。
发布了48 篇原创文章 · 获赞 34 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/u013252773/article/details/102453625