《机器学习实战》PCA简化数据

一、降维技术

1.1 数据降维的必要性

<1>多重共线性--预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。

<2>高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有0.02%。

<3>过多的变量会妨碍查找规律的建立。

<4>仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。

1.2 降维的目的

减少预测变量的个数、确保这些变量是相互独立的

1.3 降维的方法

降维的方法有:主成分分析、因子分析、用户自定义复合等。

二、主成分分析法(PCA)

2.1 概述

PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。

2.2 基本原理

在 PCA中,数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标选择的原始数据中方差最大的方向,第二个新坐标城的选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为原始数据中特征的数目,大部分方差都包含在最前面的几个新坐标中,因此可以忽略余下的坐标轴,即对数据进行了降维处理。

样本X和样本Y的协方差(Covariance):


协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。

扫描二维码关注公众号,回复: 1783863 查看本文章

当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是.

比如对于3维数据(x,y,z),计算它的协方差就是:


如何求得协方差矩阵的特征向量和特征值呢?欢迎大家参考这篇文章

[转载]特征值、特征向量和PCA的概念及理解

2.3 算法流程

将数据转换成前N个主成分的实现流程;

去除平均值

计算协方差矩阵

计算协方差矩阵的特征值和特征向量

将特征值从大到小排序

保留最上面的N个特征向量

将数据转换到上述N个特征向量构建的新空间中

2.4 程序代码(Python)

def pca(dataMat, topNfeat=9999999):

    meanVals = mean(dataMat, axis=0)
    meanRemoved = dataMat - meanVals #remove mean
    covMat = cov(meanRemoved, rowvar=0)
    eigVals,eigVects = linalg.eig(mat(covMat))
    eigValInd = argsort(eigVals)            #sort, sort goes smallest to largest
    eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions
    redEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallest
    lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions
    reconMat = (lowDDataMat * redEigVects.T) + meanVals

    return lowDDataMat, reconMat

2.5 对TestSet.txt数据集进行PCA降维


结果


原始数据(三角形点)以及降维后数据点(圆形点)

2.6 对半导体制造数据集进行PCA降维

原始数据:

具有590个特征,包含很多的缺失值(NaN标识),几乎所有的样本都含有NaN,无法去除含有NaN的样本,也不能把NaN的值设置为某一确定值,不同的数据有不同的意义,,这里的处理采用平均值代替缺失值,平均值根据非NaN得到。

分析结果:


很多值都是0(超过20%),这意味着这些特征都是其他特征的副本(他们可以通过其他特征来表示,而本身并没有提供额外的信息)

2.7 对Iris数据集进行PCA降维

原始数据:

150个样本,三类不同的鸢尾花

每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征,

分析结果:


4.223 和 0.242 相对较大,所以数据改为考虑这两种属性

绘图:

2.8 总结与体会

优点:降低数据的复杂性,识别最重要的多个特征

缺点:有可能损失有用数据

降维技术使得数据变得更好使用,并且他们往往能去除数据中的噪声,使得其他机器学习的任务更加精确,降维往往作为数据预处理步骤,在数据应用到其他算法之前清洗数据,这其中独立成分分析法、因子分析法和主成分分析法比较流行。PCA可以从数据中识别其主要特征,通过沿着数据最大化方差方向旋转坐标轴来实现的,选择方差最大的方向作为第一条坐标轴,后续坐标轴与前面的坐标轴正交,协方差矩阵上特征值分析可以用一系列的正交坐标轴来获取。

三、参考文献

【1】《机器学习实战》Peter Harrington

非常感谢阅读!如有不足之处,请留下您的评价和问题


猜你喜欢

转载自blog.csdn.net/anthomy/article/details/80755734