PCA简化数据

【概念】

PCA(principal componentsanalysis)即主成分分析技术,又称主成分分析。主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。

在统计学中,主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征.这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面.但是,这也不是一定的,要视具体应用而定.

【方法】

(1) 第一步计算矩阵 X 的样本的协方差矩阵 S(此为不标准PCA,标准PCA计算相关系数矩阵C) :

(2) 第二步计算协方差矩阵S(或C)的特征向量 e1,e2,…,eN和特征值 , t =1,2,…,N ;

(3)第三步投影数据到特征向量张成的空间之中。利用公式,其中BV值是原样本中对应维度的值。


PCA 的目标是寻找 r ( r<n )个新变量,使它们反映事物的主要特征,压缩原有数据矩阵的规模,将特征向量的维数降低,挑选出最少的维数来概括最重要特征。每个新变量是原有变量的线性组合,体现原有变量的综合效果,具有一定的实际含义。这 r 个新变量称为“主成分”,它们可以在很大程度上反映原来 n 个变量的影响,并且这些新变量是互不相关的,也是正交的。通过主成分分析,压缩数据空间,将多元数据的特征在低维空间里直观地表示出来。

【示例】:PCA对半导体数据进行降维

  我们知道,像集成电路这样的半导体,成本非常昂贵。如果能在制造过程中尽早和尽快地检测出是否出现瑕疵,将可能为企业节省大量的成本和时间。那么,我们在面对大规模和高维度数据集时,显然计算损耗会很大,无疑会非常耗时。所以,如果利用PCA等降维技术将高维的数据特征进行降维处理,保留那些最重要的数据特征,舍弃那些可以忽略的特征,将大大加快我们的数据处理速度和计算损耗,为企业节省不小的时间和成本。

1 数据缺失值的问题

显然,数据集中可能会包含很多缺失值,这些缺失值是以NaN进行标识的。那么如何对待这些缺失值呢?如果存在大量的样本存在缺失值,显然选择将这些有缺失值得样本丢弃不可取;此外,由于并不知道这些值的意义,选择将缺失值替换为0也不是一个很好的决定。所以,这里我们选择将数据集中的特征缺失值,用数据集中该维度所有非NaN特征的均值进行替换。相比之下,采用均值替换的方法在这里是一个相对较好的选择。

#缺失值处理函数
def replaceNaNWithMean():
    #解析数据
    datMat=loadDataSet('secom.data',' ')
   #获取特征维度     
    numFeat=shape(datMat)[1]
    #遍历数据集每一个维度
    for i in range(numFeat):
        #利用该维度所有非NaN特征求取均值
        meanVal=mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i])
        #将该维度中所有NaN特征全部用均值替换
        datMat[nonzero(isnan(datMat[:,i].A))[0],i]=meanVal
return datMat

 这样,我们就去除了所有NaN特征,接下来就可以对数据集利用PCA算法进行降维处理了。

2 PCA降维

那么我们如果确定需要保留哪些重要特征呢?PCA函数可以给出数据所包含的信息量,然后通过定量的计算数据中所包含的信息决定出保留特征的比例。下面是具体代码:

dataMat=pca.replaceNanWithMean()
meanVals=mean(dataMat,axis=0)
meanRemoved=dataMat-meanVals
conMat=cov(meanRemoved,rowvar=0)
eigVals,eigVects=linalg.eig(mat(covMat))

从上面的特征值结果,我们可以看到如下几个重要信息:

(1)里面有很多值都是0,这意味着这些特征都是其他特征的副本,都可以通过其他特征来表示,其本身没有提供额外的信息。

(2)可以看到最前面的15个特征值得数量级都大于105,而后面的特征值都变得非常小。这表明,所有特征中只有部分特征是重要特征。

  下图示出了数据集前20个主成分占总方差的百分比:

可以看出,数据的绝大部分方差都包含在前面的几个主成分中,舍弃后面的主成分并不会损失太多的信息。如果只保留前面几个最重要的主成分,那么在保留了绝大部分信息的基础上,可以将数据集特征压缩到一个非常低的程度,显然大大提高了计算效率。

  下表是数据集前20个主成分所占的总方差百分比,以及累计方差百分比:


  一旦,通过特征值分析知道了需要保留的主成分个数,那么我们就可以通过pca函数,设定合适的N值,使得函数最终将数据特征降低到最佳的维度。

【总结】

(1)降维是一种数据集预处理技术,往往在数据应用在其他算法之前使用,它可以去除掉数据的一些冗余信息和噪声,使数据变得更加简单高效,提高其他机器学习任务的计算效率。

(2)pca可以从数据中识别主要特征,通过将数据坐标轴旋转到数据角度上那些最重要的方向(方差最大);然后通过特征值分析,确定出需要保留的主成分个数,舍弃其他主成分,从而实现数据的降维。

【参考文献】

1.百度百科. pca技术[EB/OL].https://baike.baidu.com/item/pca%E6%8A%80%E6%9C%AF/10408698?fr=aladdin.

2.笨鸟多学. 机器学习实战之PCA[EB/OL].https://www.cnblogs.com/zy230530/p/7074215.html.

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值