采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,那个PCA把二维的点降维成一条直线,为什么可以这么做?
想不明白,事先又不知道真实数据是不是直线?是因为:
这些点本来就是近似直线的?如果是近似直线的,我们是怎么知道这些点的原始数据是近似直线的?
看着近似直线就可以看作直线吗?尽管他们原始数据可能就不是直线就是分散的,如果这样,拟合成直线是否有意义?
降维正确性的评价标准是什么?
降维除了PCA还有其他方法吗,感觉PCA不太直观
这个课程有专门的章节讲解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等等,有兴趣可以找相关资料自学一下:)
加油!
非常感谢!
老师的解答相当详细啊 原来降维的效果是丢失信息,感觉信息比较抽象,总感觉这信息损失了居然还能近似表示原来的信息,这样的信息应该比较特殊吧,比如图像可以容忍大的损失。 图像降维是说把噪声降了,是不是因为降维的时候,噪声相当于异常点,所以噪声就被降掉了,还是说是别的原因导致降维效果更好? 感觉噪声会干扰降维啊,比如原来可以近似看成直线了,结果有个异常点,然后降维度降不到直线了
信息损失依然可以表达原有信息是很常见的事情。如果举一个抽象的例子,我们日常在互联网中用的图像压缩算法,比如jpg等,都是通过减少图像原有信息达到让图片文件更小的目的。利用的就是即使损失了信息,对原有图像主体信息的影响是不大的。但是压缩的太狠了,就会慢慢让整个图像越来越模糊,最终导致完全看不出是什么东西,这就是信息损失的太大了。降维不等于降噪,降噪只是降维可能的结果,但不是一定的结果,尤其是原始信息完全没有噪音的时候。你说的噪声会干扰降维,非常对。但是异常点的例子太极端,已经可以不叫做噪音了。不过如果有异常点,确实会更大的干扰降维。
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.5k 17
2.9k 15
1.6k 15
1.4k 14