以手写数字数据集MNIST为例,每个样本图像的宽高为28×28像素,原始样本具有784个特征,用PCA主成分分析实现降维过程,画出降维后维度的学习曲线,缩小最佳维度的范围,找出最佳维度,并重构出降维后的图像,可视化显示图像的压缩效果。
实验数据集:
MNIST是一个手写体数字的图片数据集,是一个庞大的手写数字数据库,也是网上著名的公开数据集之一。包含了60,000个训练示例图片以及10,000个测试图片,数据集的图片分别代表了阿拉伯数字0-9中的任意一个数字,图片只包含灰度值信息,规格尺寸为28×28,每一张图片就是拥有784列数据。
MNIST手写数字数据集:mnist-original.mat,存放目录当前文件夹下。
1.背景介绍
数据集的数量可能很大,在执行机器学习任务时会给数据存储和处理带来困难,而并非每个模型都需要大量的数据来训练。另外,尽管数据可能具有很多属性,但可能存在不相关的特征以及特征的相互依赖性。
数据降维是一种有助于减少数据集数据量的技术,从而使模型的学习过程更加有效,并帮助模型获得更好的性能,防止过度拟合问题并修复不均匀的数据分布。 降维技术本质是通过减少数据样本的维数,由于减少了样本的属性数量,因此其中包含的信息减少,从而减少数据量的大小。
主成分PCA分析是最为“简单粗暴”的一种数据降维方法,就是找到数据中最主要的方面,用这些方面来代替原始数据。在这一章里,你将使用MNIST手写数据集,采用主成分分析PCA的方法,对手写数字图像进行降维,并进行显示。从而了解机器学习中数据特征提取的重要概念。
2.PCA降维的思想
主成分分析(principal component analysis, PCA)是一种常用的无监督学习方法,基于输入数据的协方差矩阵,可实现“去除数据集的相关性” 。主成股民分分析是最为“简单粗暴”的一种数据降维方法,顾名思义,就是找到数据中最重要的方面,用这些方面来代替原始数据。
PCA算法的目标就是希望找到那些原始数据中最重要的维度,然后把原始数据投影到这些重要维度上,即把高维的数据映射到低维空间中表示。由于映射后新生成的样本点之间的方差是最大的,样本间的差异性就被最大限度保存下来。
PCA方法最著名的应用应该是在人脸识别中特征提取及数据维,我们知 道输入200*200大小的人脸图像,单单提取它的灰度值作为原始特征,则这个原始特征将达到40000维,这给后面分类器的处理将带来极大的难度。著名 的人脸识别Eigenface算法就是采用PCA算法,用一个低维子空间描述人脸图像,同时用保存了识别所需要的信息。
3.基于特征值分解协方差矩阵实现PCA算法
(1)将原始数据按列组成n行m列矩阵X
(2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
(3)求出协方差矩阵
(4)求出协方差矩阵的特征值及对应的特征向量
(5)将特征向量按对应特征值大小从上到下按行进行排列成矩阵,取前k行组成矩阵P
(6)Y=PX即为降维到K维后的数据