PCA降维的把握和依据分别是什么?比如把一个近似直线分布的二维点数据降维成直线?

来源:2-3 监督学习,非监督学习,半监督学习和增强学习

神经旷野舞者

2017-12-23

老师,那个PCA把二维的点降维成一条直线,为什么可以这么做?

想不明白,事先又不知道真实数据是不是直线?是因为:

  1. 这些点本来就是近似直线的?如果是近似直线的,我们是怎么知道这些点的原始数据是近似直线的?

  2. 看着近似直线就可以看作直线吗?尽管他们原始数据可能就不是直线就是分散的,如果这样,拟合成直线是否有意义?

  3. 降维正确性的评价标准是什么?

  4. 降维除了PCA还有其他方法吗,感觉PCA不太直观

//img.mukewang.com/szimg/5a3e6faf0001ebbb08470473.jpg

写回答

1回答

liuyubobobo

2017-12-23

这个课程有专门的章节讲解PCA算法,在学习完PCA算法以后或许会更明白。简单回答如下:


1)我们不知道这些点是近似直线的。我们只是尝试将这些点放在一条直线上,看是不是其实并没有丢失什么信息。举一个简单的例子,我们的数据点是(1,1),(2,2),(3,3),(4,4)... 这种情况下我们将这些点放在一条直线上,其实没有丢失任何信息,因为他们本来就在一条直线上!但是如果是以均值为0方差为1随机生成的二维点,降维后就会丢失很多信息。降维的效果就不好。当然,我这里举例是用2维降到1维举例的,这样非常容易可视化,从二维平面到一根直线。实际上应该是从n维降到n-1维。通常,对于高维度的数据,比如图像数据,降维效果是非常好的,我们可以降低60-70%的维度,但是却不损失什么信息。甚至使用降维后的数据进行机器学习算法,准确率会提高,因为产生了一定的降噪作用。我们在PCA一章会看到具体的例子。


2)首先,PCA和直线拟合不是一回事。我们在PCA一章会进行一下简单的比较。其次,依然是,我们只是尝试将原始二维数据用一维数据表示,看是否丢失了过多信息。如果丢失了过多的信息,在我们不能容忍的范围里,就不应该降维。


3)降维没有正确与否的标准,只有丢失信息的多少。实际上,降维的方式本质是有无穷多种的。我们期望在其中找到“最好”,或者说“丢失信息”最少的那一种。PCA算法使用的是:降维后保持原始数据的方差的多少,来衡量降维后保持原始数据了多少信息。对于降维算法来说,这个衡量标准不是固定的。有其他降维方法使用其他的衡量标准。我们在这个课程中只会具体讲解PCA。具体的这个衡量标准的数学表示,会在PCA一章给出。


4)最直观的降维方法或许就是:如果要将n维数据降为k维,只需要从n维数据中挑出k维就好了,其他n-k维扔掉。可惜,这样做一方面是通常效果不好;另一方面,其实他的标准比PCA要模糊的多。如何找到保留的k维?要扔掉哪n-k维?如果使用穷举的方式,则复杂度过高,需要尝试C(n,k)次:)其他的降维方法包括但不局限于:MDS,Isomap,LLE,LDA,t-SNE等等,有兴趣可以找相关资料自学一下:)


加油! 

6
18
神经旷野舞者
回复
liuyubobobo
明白了
2017-12-26
共18条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5850 学习 · 2437 问题

查看课程