机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中
降维的本质是学习一个映射函数f:x->y,其中x是原始数据点的表达,目前最多使用向量表达形式
y是数据点映射后的低维向量表达,通常y的维度小于x的维度(当然提高维度也是可以的)
f可能是显式的或隐式的、线性的或非线性的
目前大部分降维算法处理向量表达的数据,也有一些降维算法处理高阶张量表达的数据
之所以使用降维后的数据表示是因为在原始的高维空间中,包含有冗余信息以及噪音信息,在实际应用例如图像识别中造成了误差,降低了准确率;而通过降维,我们希望减少冗余信息所造成的误差,提高识别(或其他应用)的精度
又或者希望通过降维算法来寻找数据内部的本质结构特征
在很多算法中,降维算法成为了数据预处理的一部分,如PCA
事实上,有一些算法如果没有降维预处理,其实是很难得到很好的效果的
主成分分析算法(PCA)PrincipalComponentAnalysis(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性
通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息
可以证明,PCA是丢失原始数据信息最少的一种线性降维方式
(实际上就是最接近原始数据,但是PCA并不试图去探索数据内在结构)设n维向量w为目标子空间的一个坐标轴方向(称为映射向量),最大化数据映射后的方差,有:其中m是数据实例的个数,xi是数据实例i的向量表达,x拔是所有数据实例的平均向量
定义W为包含所有映射向量为列向量的矩阵,经过线性代数变换,可以得到如下优化目标函数:其中tr表示矩阵