吴恩达机器学习(第十五章)---降维PCA

一、目标

1.数据压缩

在机器学习中,会用到大量数据进行学习训练,当数据量很大,维度高时,对电脑内存的压力会很大,并且学习的速度也会很慢。

2.可视化

我们将一些高维的数据降维到1维,2维,3维的话,就可以进行可视化,将数据以图表的方式展示出来。

二、主成分分析方法

主成分分析方法(Principal Component Analysis (PCA))是目前比较流行的进行降维的算法。

1.主要思想:

找一个向量,使得所有数据点到这个向量的距离(投影误差)最小。

2.线性回归与PCA的区别

  pca                                                                             线性回归

 两者的区别就在于,线性回归是求数据点对其对应在函数上的点之间的误差,是点与点之间的距离;而PCA是求点到直线的距离

三、预处理

在使用PCA之前要先进行预处理-----均值标准化

这个均值化和特征缩放类似,都是为了让所有数据都在一个较小范围内。

\mu_j=\frac{1}{m}\sum_{i=1}^{m}{x_j^i}求得的u是每一个数据的所有特征的平均值,然后x_j=x_j-\mu_j,如果不同的特征之间差的比较大的话,可以将上式改写为x_j=\frac{x_j-\mu_j}{s_j}(s_j是x_j的标准差)

四、PCA计算过程

1.求该矩阵的协方差\Sigma=\frac{1}{m}\sum_{i=1}^{m}{(x^i)(x^i)^T}

2.用[U,S,V]=svd(sigma)对上式结果奇异值分解

3.我们得到的U是n*n的矩阵(n是向量x^i的维度),我们想要降维到k维的向量上,那么就取U的前k列向量。

4.z^i=U_{reduce}^Tx^i   ,U_{reduce}^T为k*n维,求得的z就是最终结果。

注:奇异值分解还在学习中,所以无法给出解释,还是个小菜鸡

五、k的选择

k不能随意选择,否则误差会很大。

1.通常我们用下式进行判断

当其小于0.01的时候我们认为这个k值是可以使用的,当然这个0.01不是绝对的,也可以是0.05,0.1等等,是根据个人而定。x_approx(是z通过压缩重现得到的x的近似值,z_approx=U_reduce*z)

2.也可以使用[U,S,V]=svd(sigma)

1-\frac{\sum_{i=1}^{k}{S_{ii}}}{\sum_{i=1}^{n}{S_{ii}}}\leq 0.01

猜你喜欢

转载自blog.csdn.net/naocanmani/article/details/83615078