前言
本文主要根据基于 Python 的 11 种经典数据降维算法整理而来,特别感谢原作者!
一、为什么要进行数据降维?
在实际应用中,我们所用到的有用信息并不需要那么高的维度,而且每增加一维所需的样本个数呈指数级增长,这可能会直接带来极大的「维数灾难」;而数据降维就可以实现:
- 使得数据集更易使用
- 确保变量之间彼此独立
- 降低算法计算运算成本
- 去除噪音
一旦我们能够正确处理这些信息,正确有效地进行降维,这将大大有助于减少计算量,进而提高机器运作效率。而数据降维,也常应用于文本处理、人脸识别、图片识别、自然语言处理等领域。
二、数据降维原理
往往高维空间的数据会出现分布稀疏的情况,所以在降维处理的过程中,我们通常会做一些数据删减,这些数据包括了冗余的数据、无效信息、重复表达内容等。例如:现有一张 10241024 的图,除去中心 5050 的区域其它位置均为零值,这些为零的信息就可以归为无用信息;而对于对称图形而言,对称部分的信息则可以归为重复信息。
因此,大部分经典降维技术也是基于这一内容而展开,其中降维方法又分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。
线性降维方法:PCA 、ICA LDA、LFA、LPP(LE 的线性表示)。
非线性降维方法:
(1)基于核函数的非线性降维方法——KPCA 、KICA、KDA;
(2)基于特征值的非线性降维方法(流型学习)——ISOMAP、LLE、LE、LPP、LTSA、MVU。
下面将主要以 PCA 算法为例介绍降维算法具体操作。
三、主成分分析(PCA)降维
PCA 是一种基于从高维空间映射到低维空间的映射方法,也是最基础的无监督降维算法,其目标是向数据变化最大的方向投影,或者说向重构误差最小化的方向投影。它由 Karl Pearson 在 1901 年提出,属于线性降维方法。与 PCA 相关的原理通常被称为最大方差理论或最小误差理论。这两者目标一致,但过程侧重点则不同。