Bootstrap

数学建模算法笔记(2)——主成分分析

数学建模算法笔记(2)–主成分分析

目的:主成分分析的主要目的是希望用较少的变量去解释原来资料中的大部分变异,将我 们手中许多相关性很高的变量转化成彼此相互独立或不相关的变量,实际上是一种降维方法。

**

基本思想

  • 确定主成分的个数
    1)先把各变量的数据标准化,然后使用协方差矩阵或相关系数矩阵进行分 析。 2)使方差达到大的主成分分析不用转轴 3)主成分的保留。用相关系数矩阵求主成分时,Kaiser主张将特征值小于1的主成 分予以放弃(这也是SPSS软件的默认值)。 4)在实际研究中,由于主成分的目的是为了降维,减少变量的个数,故一般选取 少量的主成分(不超过5或6个),只要它们能解释变异的70%~80%(称累积贡献率) 就行了。

主成分估计

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

特征值因子的筛选

一个实用的方法是删去 p rr λλ λ , 21 L ++ 后,这些删去的特征值之 和占整个特征值之和∑ i λ 的15%以下,
单纯考虑累积贡献率有时是不够的,还需要考虑选择的主成分对原始变量的贡献 值,我们用相关系数的平方和来表示,如果选取的主成分为 r zzz , 21 L ,则它们对原 变量 i x 的贡献值为 ∑ = = r j iji xzr 1 2 ) ,( ρ (33)
这里 ) ,( i j xzr 表示 j z 与 i x 的相关系数

主成分分析法的步骤

Alt
在这里插入图片描述
Alt
在这里插入图片描述

matlab相关函数:

  • c=corrcoef(a)
    如果a是一个nm的矩阵,计算互相关系数的时候,其规则是按列进行的,得出一个mm的互相关系数矩阵c。c的第i行表示a的第i列与第j列(j=1:m)的互相关系数。所以c是一个对称阵

  • xb=zscore(x);
    对矩阵进行标准化处理

  • princomp
    [COEFF,SCORE] = princomp(X)[COEFF,SCORE,latent] = princomp(X)[COEFF,SCORE,latent,tsquare] = princomp(X)[…] = princomp(X,‘econ’)
    1、输入参数 X 是一个 n 行 p 列的矩阵。每行代表一个样本观察数据,每列则代表一个属性,或特征。
    2、COEFF 就是所需要的特征向量组成的矩阵,是一个 p 行 p 列的矩阵,没列表示一个出成分向量,经常也称为(协方差矩阵的)特征向量。并且是按照对应特征值降序排列的。所以,如果只需要前 k 个主成分向量,可通过:COEFF(:,1:k) 来获得。
    3、SCORE 表示原数据在各主成分向量上的投影。但注意:是原数据经过中心化后在主成分向量上的投影。即通过:SCORE = x0*COEFF 求得。其中 x0 是中心平移后的 X(注意:是对维度进行中心平移,而非样本。),因此在重建时,就需要加上这个平均值了。
    4、latent 是一个列向量,表示特征值,并且按降序排列。

  • cumsum
    格式一:B = cumsum(A)
    这种用法返回数组不同维数的累加和。
    如果A是一个向量, cumsum(A) 返回一个向量,该向量中第m行的元素是A中第1行到第m行的所有元素累加和;
    如果A是一个矩阵, cumsum(A) 返回一个和A同行同列的矩阵,矩阵中第m行第n列元素是A中第1行到第m行的所有第n列元素的累加和;
    如果A是一个多维数组, cumsum(A)只对A中第一个非奇异维进行计算。
    格式二:B = cumsum(A,dim)
    这种调用格式返回A中由标量dim所指定的维数的累加和。例如:cumsum(A,1)返回的是沿着第一维(各列)的累加和,cumsum(A,2)返回的是沿着第二维(各行)的累加和。
    -std
    y=std(x) 算出x的标准偏差

  • pcacov
    功能:运用协方差矩阵进行主成分分析
    格式:PC=pcacov(X)
    [PC,latent,explained]=pcacov(X)
    说明:[PC,latent,explained]=pcacov(X)通过协方差矩阵X进行主成分分析,返回主成分(PC)、协方差矩阵X的特征值 (latent)和每个特征向量表征在观测量总方差中所占的百分数(explained)。

  • B = repmat(A,M,N)
    矩阵B是矩阵A的复制品,其中B的维度为[size(A,1)*M, size(A,2)*N]。如果你写成repmat(A,[M,N])也是可以的;如果你写成repmat(A,N),那么它等价于repmat(A,N,N)或者repmat(A,[N,N])。

  • sort
    (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序.
    (2)B=sort(A,dim),对数组按指定方向进行升序排序,
    dim =1,表示对每一列进行排序,dim=2表示对每一行进行排序.
    (3)B=sort(A,dim,mode),mode为指定排序模式,mode为"ascend"时,进行升序排序,为"descend "时,进行降序排序.
    (4)[B,I]=sort(A,…),I为返回的排序后元素在原数组中的行位置或列位置.

  • hg1=[ones(m,1),x0]\y0; %计算普通小二乘法回归系数
    x0: m*(n-1)阶矩阵 y0: m*1矩阵

;