在我们解决机器学习的问题时,常常要从维度上做文章。有时候我们需要增维, 比如 kernel
methods 就可以在高纬度上重构样本从而解决样本在低维上不的线性不可分问题(高斯 kernel
甚至可以把样本在无穷维上展开)。有时候我们又需要降维,因为我们是三维生物,我们最多只能理解三维世界, 所以想要看看手头的数据, 就必须把它们降到三维以内; 另外,往往很多特征没什么用处, 我们可以可以通过降维或者特征工程的手段来把它们剔除,降低计算复杂度。从信息论的角度上讲增维并不会为我们带来更多的信息,因为我们只是做了简单的投射;但是降维确实会令我们损失信息,歌者文明就是向银河系丢了一个二向箔把我们从三维降低到了二维,从而消灭了太阳系所有的生命(三体书里说降维后的银河系还是保持了全息的样子,那副银河巨画包含了三维银河系的全部信息,笔者表示理解不能)。降维肯定会损失信息,那要怎么为我们的数据选择一款适合的降维算法来减小损失的信息呢?本文尝试对比一些经典的降维算法以及它们的应用场景来对它们做一个直观的介绍,我们不但会谈到数学原理,也会尽量以图表的形式把算法展示给大家。废话不多说, 先上图。总体来说,我们将会涉及 8 个算法,大致可以分为线性算法与非线性算法,非线性算法又有侧重于整体信息的跟侧重于局部信息的。然后我们将尝试利用这些降维算法对下面这副蛋卷一样的图 (swiss roll) 做维度打击
...
继续阅读
(46)