@notmylove
2019-07-09T16:41:41.000000Z
字数 3822
阅读 9704
主成分分析法
指标筛选
既然在课程专题四中讲到主成分分析法,那么这里再进一步介绍主成分分析法,概括起来说,主成分分析主要由以下几个方面的作用。
前面三种都挺好理解,这里首先着重分析一下怎么用主成分分析来筛选回归变量。
主成分分析( principal component analysis,PCA) ,也称主
分量分析或矩阵数据分析。它通过变量变换的方法把相关的变量变为若干不相关的综合指标变量,从而实现对数据集的降维,使得问题得以简化。
主成分分析的原理可以简单的陈述如下:借助一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机变量,使之指向样本点散布最开的n个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统。通常数学上的处理就是将原来n个指标作线性组合,作为新的综合指标,并且这些新的综合指标之间是相互无关的。
构造样本矩阵
对矩阵做标准化变换得矩阵
对标准化阵求相关系数矩阵
对相关系数矩阵R求特征值与特征向量
解样本相关矩阵R 的特征方程得n个特征值, 并且(为矩阵R是非负定矩阵)
确定值,使信息的利用率达到 80% 以上。
求出每个特征值的特征向量,并单位化
对每个解方程组,得特征向量,再单位化得
将标准化后的指标变量转换为主成分
对个主成分进行综合评价
对个主成分进行加权求和,即得最终评价值,权数为每个主成分的方差贡献率(单个公因子引起的变异占总变异的比例,说明此公因子对因变量的影响力大小,换句话理解就是这个主成分对信息的利用率).
两个指标之间的相关系数,反映了两个指标之间的相关性。相关系数越大,两个指标反映的信息相关性就越高。而为了使评价指标体系简洁有效,就需要避免指标反映信息重复。通过计算同一准则层中各个评价指标之间的相关系数,删除相关系数较大的指标,避免了评价指标所反映的信息重复。通过相关性分析,简化了指标体系,保证了指标体系的简洁有效,这部分内容在以前的文章中已有介绍。这次通过和主成分分析来结合使用。
通过对剩余多个指标进行主成分分析,得到每个指标的因子载荷。因子载荷的绝对值小于等于1,而绝对值越是趋向于1,指标对评价结果越重要。
那么因子载荷怎么得到的呢?其实很简单,过程如下:
设:是第个主成分(); 是第个特征值对应的特征向量的第个分量;为第个指标的观测值;-主成分的个数;-指标的个数。则第个主成分为
根据主成分分析法的计算过程,求得相关系数矩阵的特征值 , 反映了第个主成分所表示的原始信息含量,即所解释原始指标的数据总方差,则主成分表示的原始指标数据的方差贡献率为:
基于相关性分析的指标筛选和基于主成分分析的指标筛选,均是在准则层内进行指标的筛选处理,准则层之间不进行筛选。这种做法的原因是,通过人为地划分不同准则层,反映评价事物不同层面的状况,避免误删反应信息不同的重要指标。
基于相关性分析的指标筛选和基于主成分分析的指标筛选的思路,均是筛选出少量具有代表性的指标。
两次筛选的目的不同:基于相关性分析的指标筛选的目的是删除反应信息冗余的评价指标。基于主成分分析的指标筛选的目的是删除对评价结果影响较小的评价指标。
两次筛选的作用不同:基于相关性分析的指标筛选的作用是保证筛选选出的评价指标体系简洁明快。基于主成分分析的指标简选的目的是筛选出重要的指标。
通过基于相关性分析的第一次指标定量筛选。通过相关性分析的方法,进行第一次定量筛选,剔除了反应信息重复的指标,保证筛选后的指标体系简洁有效。基于相关性分析的第二次指标定量晒选。通过对评价指标进行主成分分析,删除因子载荷小的评价指标,保证筛选出重要的指标。
主成分分析法实现很简单,python直接调用包就行,这里提一下matlab上的简单实现,针对具体问题的程序,有需求再找我吧。
%输入数据(以矩阵形式输入)
X = [];
%数据预处理:标准化
mu = mean(X);
X_norm = bsxfun(@minus, X, mu);
sigma = std(X_norm);
X_norm = bsxfun(@rdivide, X_norm, sigma);
%协方差矩阵
covMat = cov(X_norm);
%奇异值分解,U为特征向量,S为特征值
[U, S] = svd(covMat);
%提取特征值
lambda = diag(S);
%累积信息占比,也就是累积方差贡献率
fprintf('累积信息占比:%.4f \n', cumsum(lambda)/sum(lambda));
%求因子载荷矩阵
B = U .* sqtr(lambda');