PCA:主成分分析法——降维求解

       主成分回归分析采用的方法是将原来的回归自变量变换到另一组变量,即主成分,选择其中一部分重要的主成分作为新的自变量,丢弃了一部分影响不大的自变量,实际上达到了降维的目的,然后用最小二乘法对选取主成分后的模型参数进行估计,最后再变换回原来的变量求出参数的估计。

主成分与原始变量之间的关系:

  1. 主成分是原始变量的线性组合
  2. 主成分的数量相对于原始数据更少
  3. 主成分保留了原始变量的大部分信息

SPSS进行主成分分析:

导入数据——开始分析——统计建模——主成分分析

2 应用步骤

1.进行KMO和Bartlett的检验,判断是否可以进行主成分分析。

KMO>0.7  p<0.05

1.主成分的个数选多少个比较合适?(通过分析方差解释表格和碎石图)

(1)保留的主成分使得方差贡献率达到85%以上

(2)保留的主成分的方差(特征值)大于1

(3)碎石图绘制了关于各主成分及其特征值的图形,我们只需要保留图形中变化最大之处以上的主成分即可

3、通过分析主成分载荷系数与热力图,可以分析到每个主成分中隐变量的重要性

4、通过分析成分矩阵,得出主成分成分公式与权重

5、输出主成分分析法综合得分

3 注意事项

主成分要求变量之间的共线性或相关关系比较强,否则不能通过KMO检验和 Bartlett球形检验;

主成分分析倾向于降维,从而达到简化系统结构,抓住问题实质的目的。(可侧重于方差解释表格、碎石图、因子权重分析)

主成分分析时通常需要综合自己的专业知识,以及软件结果进行综合判断,即使是特征根值小于1也一样可以提取主成分

KMO 值为 null 不存在可能导致的原因为:

  1. 样本量过少容易导致相关系数过高,般希望分析样本量大于5倍分析项个数;
  2. 各个分析项之间的相关关系过高或过低。

4 总结

主成分分析作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。通过对原始变量进行综合与简化,可以客观地确定各个指标的权重,避免主观判断的随意性。并且不要求数据呈正态分布,其就是按数据离散程度最大的方向对基组进行旋转,这特性扩展了其应用范围,比如,用于人脸识别。

但同时,其适用于变量间有较强相关性的数据,若原始数据相关性弱,则起不到很好的降维作用(必须通过KMO和Bartlett的检验),并且降维后,存在少量信息丢失,不可能包含100%原始数据,原始数据经过标准化处理之后,含义会发生变化,且主成分的解释含义较原始数据比较模糊。

主成分分析法的优点:

(1)、 可消除评价指标之间的相关影响 

 因为主成分分析在对原指标变量进行变换后形成了彼此相互独立的主成分,而且实践证明指标之间相关程度越高,主成分分析效果越好。

(2)、 可减少指标选择的工作量

 对于其它评价方法,由于难以消除评价指标间的相关影响,所以选择指标时要花费不少精力,而主成分分析由于可以消除这种相关影响,所以在指标选择上相对容易些。

(3)、 当评级指标较多时还可以在保留绝大部分信息的情况下用少数几个综合指标代替原指标进行分析

 主成分分析中各主成分是按方差大小依次排列顺序的,在分析问题时,可以舍弃一部分主成分,只取前后方差较大的几个主成分来代表原变量,从而减少了计算工作量。

(4)、 在综合评价函数中,各主成分的权数为其贡献率,它反映了该主成分包含原始数据的信息量占全部信息量的比重,这样确定权数是客观的、合理的,它克服了某些评价方法中认为确定权数的缺陷。

主成分分析法的缺点

(1)、在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。

(2)、主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。

(3)、当主成分的因子负荷的符号有正有负时,综合评价函数意义就不明确。

例:

clc,clear

load('cs.mat')

[m,n] = size(cs);%n是样本个数,p是指标个数

x0 = cs(:,1:n-1); y0 = cs(:,n);

r=corrcoef(x0)  %计算相关系数矩阵

xb = zscore(x0); %对设计矩阵进行标准化处理

yb = zscore(y0); %对y0进行标准化处理

%以下命令利用设计矩阵进行主成分分析,返回值c的列向量对应着主成分的系数

%返回值s对应着式(26)中的Z矩阵,每一列都是对应变量的特征向量,t返回的是特征值

[c,s,t]=pca(xb)

contr = cumsum(t)/sum(t) %计算累计贡献率,第i个分量表示前i个主成分的贡献率

num = input('请选择主成分的个数:') %通过累计贡献率交互式选择主成分的个数

hg1 = [ones(m,1),x0]\y0; %计算普通最小二乘法回归系数

hg1 = hg1'

%% 用最小二乘法回归结果(标准自变量)

fprintf('y = %f',hg1(1));

for i = 1:n-1

    fprintf('+%f*x%d',hg1(i+1),i);

end

fprintf('\n')

hg = s(:,1:num)\yb;  %主成分变量的回归系数

hg = c(:,1:num)*hg; %标准化变量的 回归方程系数

%% 计算原始变量回归方程的系数

hg2 = [mean(y0)-std(y0)*mean(x0)./std(x0)*hg,std(y0)*hg'./std(x0)]

%% 显示主成分回归结果(原始自变量)

fprintf('y = %f',hg2(1));

for i = 1:n-1

    fprintf('+%f*x%d',hg2(i+1),i);

end

fprintf('\n')

%% 计算两种回归分析的剩余标准差

rmse1 = sqrt(sum((x0*hg1(2:end)'+hg1(1)-y0).^2)/(m-n))

rmse2 = sqrt(sum((x0*hg2(2:end)'+hg2(1)-y0).^2)/(m-num-1))

r =

    1.0000    0.9997    0.9923    0.9994    0.9982

    0.9997    1.0000    0.9931    0.9988    0.9988

    0.9923    0.9931    1.0000    0.9926    0.9932

    0.9994    0.9988    0.9926    1.0000    0.9984

    0.9982    0.9988    0.9932    0.9984    1.0000

c =

    0.4476   -0.2848   -0.4248   -0.2056    0.7042

    0.4476   -0.2143   -0.0324   -0.6458   -0.5793

    0.4459    0.8903   -0.0901   -0.0014    0.0218

    0.4475   -0.2448   -0.3012    0.7238   -0.3538

    0.4475   -0.1431    0.8483    0.1292    0.2073

s =

   -2.9772    0.0096   -0.0452    0.0189   -0.0022

   -2.8663   -0.0081   -0.0449    0.0171   -0.0058

   -2.7365   -0.1129   -0.0036    0.0340   -0.0054

   -2.5730   -0.1294   -0.0031    0.0247   -0.0044

   -2.3358   -0.0341   -0.0104    0.0118    0.0018

   -2.0952   -0.0486    0.0178    0.0060    0.0032

   -1.8286   -0.0943    0.0165   -0.0135    0.0051

   -1.4234   -0.0149   -0.0004   -0.0365    0.0085

   -1.0492    0.1609   -0.0270   -0.0488    0.0153

   -0.7944   -0.0072    0.0309   -0.0320    0.0054

   -0.4160    0.0169    0.0152   -0.0458   -0.0018

    0.0376    0.1533    0.0143   -0.0408   -0.0067

    0.4234    0.1452    0.0172   -0.0050   -0.0054

    0.7836    0.1549    0.0163    0.0031   -0.0150

    1.1636    0.1141    0.0191    0.0117    0.0019

    1.5126    0.0485    0.0392    0.0261   -0.0078

    1.8893    0.0161    0.0575    0.0225    0.0023

    2.2765   -0.0547    0.0311    0.0293    0.0036

    2.6897   -0.0924    0.0378    0.0288    0.0019

    3.1194   -0.0707    0.0326    0.0274    0.0102

    3.2003    0.0801   -0.1539    0.0477    0.0047

    3.9997   -0.2324   -0.0570   -0.0868   -0.0095

t =

    4.9858

    0.0109

    0.0020

    0.0012

    0.0001

contr =

    0.9972

    0.9993

    0.9998

    1.0000

    1.0000

%第4个特征值的贡献率以及到达最优,所以可以减去第五个主成分

请选择主成分的个数:4

num =

 4

hg1 =

   -8.0585   -0.0319    0.0126    0.0371    0.0197    0.0120

y = -8.058523+-0.031928*x1+0.012628*x2+0.037080*x3+0.019657*x4+0.011977*x5

hg2 =

  -10.1982   -0.0103   -0.0144    0.0458    0.0039    0.0243

y = -10.198155+-0.010274*x1+-0.014383*x2+0.045797*x3+0.003867*x4+0.024287*x5

rmse1 =

    0.7666

rmse2 =

    0.7956

显示R方和P值:

%% 回归模型,判断所建立的回归方程能不能经过检验

clc,clear

load('cs.mat')

[m,n] = size(cs);%n是样本个数,p是指标个数

x0 = cs(:,1:n-1); y0 = cs(:,n);

md1 = fitlm(x0,y0)  %通过估计系数表判断回归方程能否建立

%如果P值大于0.05,建立下一个模型,直至P值满足要求,每次删除一个不满足P值的成分,例:md2 = fitlm(x0,y0,"y~1+x1+x2+x3+x4")

c = md1.Coefficients.Estimate %多元线性回归模型系数,第一个常数项

mu = mean(x0); s  = std(x0);  %求均值向量和标准差向量

xb = (x0-mu)./s   %数据标准化

%% 返回值co的列向量对应着主成分的系数,scor是对应变量的特征向量,lamb返回的是特征值

[co,scor,lamb] = pca(xb)

rate = lamb/sum(lamb)

curate =   cumsum(rate)  %累计贡献率

num = 4 ;  %选取主成分的个数,根据贡献率分析决定值

md2 = fitlm(scor(:,1:num),y0)  %得到主成分回归模型

rmse2 = md2.RMSE   %提出模型的剩余标准差

c2 = md2.Coefficients.Estimate %提出主成分回归方程的系数

c3 = [c2(1);co(:,1:num)*c2(2:end)] %标准化变量的回归系数

c40 = [c3(1)-sum(c3(2:end)'.*mu./s)] %求原始变量 的回归常数项

c41 = c3(2:end)'./s %求原始变量的一次项系数

c4 = [c40,c41]  %显示原始变量的所有回归系数

md1 =

线性回归模型:

    y ~ 1 + x1 + x2 + x3 + x4 + x5

估计系数:

                   Estimate        SE         tStat      pValue

                   _________    _________    _______    ________

    (Intercept)      -8.0585       6.2113    -1.2974     0.21289

    x1             -0.031928     0.014343     -2.226    0.040733

    x2              0.012628     0.018246     0.6921      0.4988

    x3               0.03708     0.017356     2.1364    0.048439

    x4              0.019657     0.011379     1.7274     0.10334

    x5              0.011977    0.0097003     1.2347     0.23477

观测值数目: 22,误差自由度: 16

均方根误差: 0.767

R 方: 0.857,调整 R 方 0.813

F 统计量(常量模型): 19.2,p 值 = 2.98e-06

c =

   -8.0585

   -0.0319

    0.0126

    0.0371

    0.0197

    0.0120

xb =

   -1.3214   -1.3442   -1.3150   -1.3067   -1.3699

   -1.2690   -1.2875   -1.2814   -1.2527   -1.3185

   -1.2019   -1.2194   -1.3206   -1.1694   -1.2081

   -1.1215   -1.1373   -1.2624   -1.0995   -1.1331

   -1.0325   -1.0466   -1.0709   -1.0259   -1.0472

   -0.9304   -0.9338   -0.9791   -0.9279   -0.9140

   -0.7922   -0.7931   -0.9007   -0.8118   -0.7914

   -0.6192   -0.6153   -0.6476   -0.6627   -0.6381

   -0.4831   -0.4807   -0.3218   -0.5415   -0.5185

   -0.3562   -0.3375   -0.3632   -0.3881   -0.3312

   -0.1893   -0.1597   -0.1718   -0.2274   -0.1820

   -0.0292    0.0138    0.1518   -0.0522    0.0003

    0.1381    0.1642    0.3164    0.1470    0.1815

    0.2885    0.3237    0.4855    0.3154    0.3395

    0.4791    0.4871    0.6187    0.4949    0.5224

    0.6356    0.6530    0.7139    0.6749    0.7049

    0.8135    0.8245    0.8516    0.8397    0.8952

    1.0177    1.0087    0.9636    1.0428    1.0574

    1.2095    1.2029    1.1136    1.2351    1.2529

    1.4039    1.3868    1.3253    1.4198    1.4392

    1.4683    1.3868    1.5123    1.4918    1.2972

    1.8916    1.9036    1.5817    1.8045    1.7615

co =

    0.4476   -0.2848   -0.4248   -0.2056    0.7042

    0.4476   -0.2143   -0.0324   -0.6458   -0.5793

    0.4459    0.8903   -0.0901   -0.0014    0.0218

    0.4475   -0.2448   -0.3012    0.7238   -0.3538

    0.4475   -0.1431    0.8483    0.1292    0.2073

scor =

   -2.9772    0.0096   -0.0452    0.0189   -0.0022

   -2.8663   -0.0081   -0.0449    0.0171   -0.0058

   -2.7365   -0.1129   -0.0036    0.0340   -0.0054

   -2.5730   -0.1294   -0.0031    0.0247   -0.0044

   -2.3358   -0.0341   -0.0104    0.0118    0.0018

   -2.0952   -0.0486    0.0178    0.0060    0.0032

   -1.8286   -0.0943    0.0165   -0.0135    0.0051

   -1.4234   -0.0149   -0.0004   -0.0365    0.0085

   -1.0492    0.1609   -0.0270   -0.0488    0.0153

   -0.7944   -0.0072    0.0309   -0.0320    0.0054

   -0.4160    0.0169    0.0152   -0.0458   -0.0018

    0.0376    0.1533    0.0143   -0.0408   -0.0067

    0.4234    0.1452    0.0172   -0.0050   -0.0054

    0.7836    0.1549    0.0163    0.0031   -0.0150

    1.1636    0.1141    0.0191    0.0117    0.0019

    1.5126    0.0485    0.0392    0.0261   -0.0078

    1.8893    0.0161    0.0575    0.0225    0.0023

    2.2765   -0.0547    0.0311    0.0293    0.0036

    2.6897   -0.0924    0.0378    0.0288    0.0019

    3.1194   -0.0707    0.0326    0.0274    0.0102

    3.2003    0.0801   -0.1539    0.0477    0.0047

    3.9997   -0.2324   -0.0570   -0.0868   -0.0095

lamb =

    4.9858

    0.0109

    0.0020

    0.0012

    0.0001

rate =

    0.9972

    0.0022

    0.0004

    0.0002

    0.0000

curate =

    0.9972

    0.9993

    0.9998

    1.0000

    1.0000

md2 =

线性回归模型:

    y ~ 1 + x1 + x2 + x3 + x4

估计系数:

                   Estimate       SE        tStat       pValue  

                   ________    ________    _______    __________

  (Intercept)      5.2755     0.16962     31.102    1.9994e-16

    x1             -0.52532    0.077752    -6.7563    3.3576e-06

    x2               6.5491      1.6602     3.9448      0.001045

    x3               16.492       3.835     4.3004    0.00048455

    x4               13.672      5.0434     2.7108      0.014835

观测值数目: 22,误差自由度: 17

均方根误差: 0.796

R 方: 0.837,调整 R 方 0.798

F统计量(常量模型): 21.8,p值 = 1.66e-06

rmse2 =

    0.7956

c2 =

    5.2755

   -0.5253

    6.5491

   16.4922

   13.6720

c3 =

    5.2755

  -11.9175

  -11.0023

    4.0901

    3.0906

   14.5851

c40 =

  -10.1982

c41 =

   -0.0103   -0.0144    0.0458    0.0039    0.0243

c4 =

  -10.1982   -0.0103   -0.0144    0.0458    0.0039    0.0243

  • 23
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值