机器学习笔记——降维(dimensionality reduction)

降维

目的

我们对数据进行降维的目的有两个:一个是数据压缩,对于数据压缩我们可以大大地节省存储空间

第二就是使得数据可以可视化,我们将多维数据压缩成二维可以供我们更好地观察数据的特征

主成分分析(PAC)

主成分分析法可以将n维的数据降为k维,实际上我们是选取了一个k维的基向量,然后将n维的数据映射到k维上,使得投影误差最小。这k个基向量就是我们的主成分

在降维之前我们也需要对数据进行预处理

之后我们可以应用matlab中的高级库得到一个矩阵U,U是一个n×n的矩阵,我们取前k个向量就是k维空间的基向量,得到矩阵Ureduce

因此我们可以通过矩阵相乘的形式将n维的数据映射到k维空间上。相当于我们选取了k个n维空间的向量作为k维空间的基向量,然后将需要表示的向量分别与这k个向量做点乘(即目标向量在基向量上的投影),得到k维空间的表示

以下使其在matlab中的表示,需要注意的是我们对输入特征有很好的向量化表示

上面我们讲了如何将n维数据映射到k维,那么我们怎么从压缩后的数据中提取出原数据呢?我们可以通过近似的方法将数据从原来的k维反映射到n维。具体操作也是将k维向量与Ureduce进行矩阵相乘

那我们怎么选取主成分数量k的值呢?我们可以用投射误差与数据方差的比值来作为k选取的依据。一般我们选取最小的k使得这个比值小于某个阈值,例如0.01,0.05。我们一般在描述k的时候不说k的具体值,而是说“99% of variance is retained”

一下是在matlab中求出这个比值的快速算法

建议

需要注意的是降维操作得到的k个基向量应该只在训练集上运行PCA来确定,而不能包括交叉数据集与测试集的数据。当得到了这个映射后可以将其应用在交叉数据集与测试集上

我们应该注意PCA的应用场景,例如数据压缩与数据可视化。但是利用PCA来防止过拟合是对PCA的误用。虽然我们发现PCA确实在某些时候能防止过拟合的产生,但是我们知道降维操作实际上是对数据进行了一定程度的近似,丢失了部分信息,如果我们只想防止过拟合,那么正则化无疑是最好的方法。

因此我们时刻要注意我们的算法是否一定要使用 PCA,如果不必要,那么使用原数据能保证信息不会丢失

猜你喜欢

转载自blog.csdn.net/shanwenkang/article/details/85069811