目标:数据压缩
如果数据特征过多,可能会产生冗余,你也会不太清楚自己到底有哪些特征,需要哪些特征。
数据压缩2D-1D建立一条线,使每个点都投射到这条线上,然后建立新的特征.
数据压缩3D-2D将3维数据投影到一个平面上,就得到了二维数据点。然后用一个二维数据来表示。
目标二:数据可视化
多维数据 将多维数据转化为2维数据多维数据可视化困难,转化成二维数据便于可视化,二维数据的坐标可能没有准确的物理意义
二维数据可视化主成分分析—PCA
数据降维最常用的方法就是PCA算法:PCA算法建立一个低维平面,如下图红色线,然后将数据点投影在这个平面上,使投影误差最小。在进行PCA算法之前,首先要进行均值归一化和特征规范化,使特征均值为0,且在可比较的范围内。
投影平面的选择由上图可以看出,红色的线比紫色的线投影误差较小,更适合作为投影平面。
PCA的正规表示对于2D-1D,相当于找到一个向量,将点投影到该向量上,使得投影误差最小;对于高维数据,相当于找到多个向量。
PCA与线性回归上面左图是线性回归,右图是PCA,两图计算距离的方式不同:线性回归是计算每个x对应的实际y值与拟合线的距离,因此,在计算距离的时候,距离线的方向是垂直于x轴的,表示同一个x对应的距离差。而PCA计算的是点到线的投影距离,是点到线的最短距离,即正交距离。另一方面,线性回归中是给定x的值预测y,而在PCA中,每一个x值拥有相同的权重。
均值归一化在数据处理时,首先进行均值归一化:求出所有数据点的均值,再用每一个数据减去均值,得到归一化的样本点,使数据都处于可比较的范围内。
数据投影在进行降维的时候,要找到合适的一个或多个向量进行投影,那么这些向量是如何得到的呢?
将N-维数据降维k维数据首先建立一个相关系数矩阵,这里的表示的是相关系数矩阵,他是一个n*n的矩阵,对矩阵进行SVD计算,即奇异值分解,求得一个N*N的矩阵U,则根据需要,取U的前k列向量作为我们的投影向量。
降维计算得到k个向量以后,转置得到k*n的矩阵,与样本X的N*N的矩阵相乘,得到k*1新的矩阵,则投影完毕。
PCA算法总流程总的来说,PCA算法如下:先进行特征缩放,然后计算sigma函数求得一个n*n的矩阵;对求出的矩阵进行SVD分解,取前k个向量作为投影向量Ureduce;转置的投影矩阵右乘样本x完成降维。
主成分数量的选择
主成分数量的选择计算两个指标,Average squared projection error和Total variation in the data,然后根据上述公式计算指标,选择对应最小指标的向量个数k.99%通常表示新形成的特征保留了原有数据99%的信息。指将映射后的数据压缩重现后得到的近似值,压缩重现方法见后文。
K的选择进行向量数目选择的时候,首先设定一个k值,然后计算指标,然后改变k值在计算一次,选择指标最小的k的数目。在实际计算中有较为简便的方法:SVD分解的时候求得的S是一个对角阵,通过对角阵上的数据计算指标,这样就不用重复设置k值进行计算和比较,只用根据s矩阵进行计算即可。
k选择的流程先进行SVD分解,然后根据S矩阵计算指标,然后进行选择。
压缩重现
在之前的计算中都是对数据进行压缩降维,那么压缩的数据怎么还原成原来的高维数据呢?
数据压缩重现PCA的使用建议
监督学习的降维在有标签的数据中,可以先忽略标签,对样本进行PCA计算,先对样本进行特征缩放和均值归一化处理,然后求sigma函数和SVD分解,找到投影向量,根据投影向量求得新的特征向量。但是PCA这一过程即特征选择必须在训练集上进行,求得的投影向量可以用于验证集和测试集。上例中,我们假设将10000维的数据降到了1000维,这其实是不切实际的,通常降维处理只能将数据维度降维1/5或1/10,保留大部分的方差从而几乎不影响性能,如分类精度和准确度。
PCA的应用PCA可以压缩数据,从而可以降低数据占据的存储空间,提高学习算法的效率,这一过程通过根据信息保留指标的大小来选择合适的k值来实现,通常指标大小为99%。另一方面,PCA可以帮助实现可视化,将数据讲到2维或3维。
不能用PCA来防止过拟合PCA算法不能用来防止过拟合!因为PCA在进行降维的时候只考虑到了输入x的信息,而不管对应的标签y,在进行降维时会丢失很多信息。即使其信息保留程度达到了99%,其效果也不会比正则化防止过拟合更好。
PCA的使用误区PCA在适当的时候使用是很有效的,但是,在建立学习系统之前,不要急着使用PCA,现在原始数据上进行试验,除非你真的确定进行不下去或者计算太复杂,存储空间不够的情况下,在使用PCA,很多情况下直接使用原始数据效果可能更好。
网友评论