这篇文章贯穿始终的一个故事场景是如何在一个小镇上将横纵的街道编号,例如科技三路和凤城五路的接口这样一个用俩个数字标注的位置信息,转化更一个只用一个数字标识的位置描述。在上述的例子中,原来的位置信息有俩个维度,我们就用笛卡尔坐标系中的X轴和Y轴来表示吧,而数据降维的目地就是要让数据的维度降低到一维。而在上述的小镇上,如果有一条铁路通过了小镇,而小镇上所有重要的建筑都在铁路边,那么就可以根据距离铁路的起点多远来定义每一个点的位置。当然,这样的定位不如用俩个维度来的准,有的地点离铁路远,但是远多少,在新的表示中就没有得到展示了。这说明数据降维不是无损的,会造成信息的部分丢失。
那数据降维在什么时候应该应用了?回到小镇的例子,数据降维的第一个用途是数据压缩,如果你只能在一张小便签向一位你新认识的朋友写下你家的地址,便签上写不下是××路××号,那你可写铁路第五。而数据降维还可以去做数据可视化或特征提取,比如你要在小镇上开一家点,你先看看那里人群更加密集,你可以通过数据降维,做出那些地方周围的点多,从而人流更密。数据降维的第三个用途是异常值检测和聚类,例如你通过数据降维,发现小镇上的大部分人家都住在两个火车站附近,但是有一俩个家却不在这里,这样你就发现了小镇里那些特立独行的人,接着你发现俩个火车站附件的人家,一家都姓张,一家都姓李,这样,你就将小镇的人家通过数据降维,分成了俩类。
接下来说说各种做数据降维的方法,最熟悉的方法是主成分分析法,即PCA,在上面的例子中,主成分就是我们找到的铁路线,我们将小镇上所有的人家按照铁路开来的顺序,依次排序,从而得到了只用一个数字表示的距离。
然而PCA有一个问题,就是他画出的这条线,一定要是一条直线,如果这个小镇上的人家不是根据铁路线,而是根据一条弯弯区区的河流,在河两岸安家的,那么PCA就无法找出这条弯曲的线了。而我们遇到的大部分小镇,都是逐水而居的,正如我们通常遇到的需要降维数据,而这就需要所谓的非线性数据降维方法了。
第一种非线性的降维方法叫做核PCA,即Kernel PCA。理解核PCA,可以想象我们在标识一家人的住址的时候,先通过一个核函数的方式估算出这家人住的地方海拔有多高,由于水是向低流的,通过先将数据的维度提升,再降低的方式,从而在非线性的约束下实现数据降维。
而第二种非线性的降维方式叫做tsne,tsne是一种很强大,也很费计算时间的非线性降维方法。tsne的逻辑可以这样理解,你要将小镇上每户人家的住址降低成用一个数字表达的数,由于在之前小镇上人们之所以张家和李家住的近,是因为他们自己是亲家,而刘家和王家住的远,是因为他们之间打过架。在之前的住址中,包含了这样拓扑信息,而在降维之后,你在地图上画出一条弯弯曲曲的线,不管这条线你是怎么画的,你都希望在这条线上张家和李家还是很近,刘家和王家还是很远。这就是tsne要保留的高维数据中的拓扑结构。可以想象,小镇里要是住户越多,这条线也越难画,tsne是一种迭代的算法,也就是说人民最开始画的线不一定是最好的,一次次向着优化目标的修改,直到达到相对较好的点。
而这里要介绍的最后一种降维方法,来自于机器学习的门派,叫做自编码器。还是拿小镇上的例子来说,现在你假设要对镇上每户人家的住址用一个数字来编码,但你不知道该怎么办。于是你叫来你的双胞胎儿子,叫弟弟想办法用一个数字来标记每户人家,而叫哥哥在不知情的情况下,根据他弟弟给出的数字去猜测每户人家在那里,最初哥哥猜出的地方和这户人家本来的地方差距很远的,而等到几个月之后,兄弟俩有了默契,他们猜到的地方就差不多了。这时你将弟弟称为编码器,将哥哥称为解码器。而你叫来兄弟俩,问清楚他们各自是怎么做的。通过这种方法,你完成了任务。为了保证兄弟俩没有相互串通,你还故意在告诉弟弟每户人的住址时,故意说错一点,也就是给数据增加了一些误差,通过这样的方式,你可以确保兄弟俩是学到了数据中真实的规律,而不只是鹦鹉学舌。
总结一下,数据降维是拿到高纬度数据后,不可不做的一件事,其既可以用来探索数据的结构,比如做聚类,又可以用来去找出数据中质量不好的离群点,数据降维的方式很多,最常用的是PCA及其衍生改进方法,以及相比PCA慢的多但也强大的多的tsne,另外还有来自神经网络的自编码器。这些方法可以结合起来使用,比如将一个10维的数据先用PCA降成5维,再用tsne降低成2维,这样兼顾的计算耗时和准确度。
扩展阅读
你需要的深度学习数学基础: 从入门到进阶
以下的内容不适合小学生哦,一个是R语言中对应的包,而是一些测试题,测试你对这篇小文的理解。
下面是想深入了解的读者可以回答的一些问题,前四提单选,后两题多选。
原创不易,随喜赞赏
转自巡洋舰的深度学习实战课程- 本文固定链接: https://maimengkong.com/kyjc/1144.html
- 转载请注明: : 萌小白 2022年8月18日 于 卖萌控的博客 发表
- 百度已收录