1 概念
主成分是选出比原始变量个数少,能解释大部分资料中的变异的几个新变量
主成分分析
是考察多个变量间相关性一种多元统计方法,通过 较少的变量(几个主成分)来解释多个变量间的内部结构,即从原始变量中导出少数几个主分量,使它们尽可能多地保留原始变量的信息,且彼此间相互独立(互不相关)
主成分分析--->数据降维
常被用来寻找判断事物或现象的 综合指标,并对综合指标所包含的信息进行适当的解释
2 基本思想
设法将原来众多具有一定相关性的变量(如p个变量),
重新组合成一组新的相互无关的综合变量
来代替原始变量
将原来p个变量做线性组合作为新的综合变量方差<--->信息量<!------->
,即v a r ( F 1 ) var(F1)v a r (F 1 )越大,表示F 1 F1 F 1包含的信息越多,因此在所有的线性组合中所选取的F 1 F1 F 1应该是 方差最大的,故称之为 第一主成分
- 如果把两个变量用一个变量来表示,同时这一个新的变量又尽可能包含原来的两个变量的信息,这就是
降维的过程
- 以两个变量X1和X2为例,找出的这些新变量是 原来变量的线性组合,叫做
主成分[Z=a1X1+a2X2]
主成分构造原则:
- 在 损失很少的数据信息的前提下,把多个因素指标利用
正交旋转变换转换
成几个 综合指标(主成分
) - 每个 主成分都是 原始变量的
线性组合
,且各个主成分之间相互独立(互不相关)
根据主成分的构造思想和(皮尔逊)相关系数公式,要使得综合变量之间 不相关,则各自对应的 方差应该越大越好
主成分选取原则【任一个满足即可】:
各主成分的累积方差贡献率>80%​
特征值
λ > 1 \lambda>1 λ>1
主成分性质:
- 主成分Z Z Z的协方差阵为 对角阵,且对角线 元素为λ 1 , λ 2 , . . . , λ p \lambda_1,\lambda_2,...,\lambda_p λ1 ,λ2 ,...,λp
- 记∑ = ( σ i j ) \sum {} = ({\sigma {ij}})∑=(σi j ),有∑ i = 1 p λ i = ∑ i = 1 p σ i j \sum\limits{i = 1}^p {{\lambda i}} = \sum\limits{i = 1}^p {{\sigma {ij}}}i =1 ∑p λi =i =1 ∑p σi j ,称α i = λ i ∑ i = 1 p λ i , i = 1 , 2 , . . . , p {\alpha _i} = \frac{{{\lambda _i}}}{{\sum\limits{i = 1}^p {{\lambda i}} }},i = 1,2,...,p αi =i =1 ∑p λi λi ,i =1 ,2 ,...,p为第i个主成分的
贡献率
,称∑ i = 1 m λ i ∑ i = 1 p λ i , i = 1 , 2 , . . . , p \frac{{\sum\limits{i = 1}^m {{\lambda i}} }}{{\sum\limits{i = 1}^p {{\lambda _i}} }},i = 1,2,...,p i =1 ∑p λi i =1 ∑m λi ,i =1 ,2 ,...,p为前m个主成分的累积贡献率
- 选取的主成分对原始变量的贡献值用相关系数的平方和来表示,若选取的主成分为Z 1 , Z 2 , . . . , Z m Z_1,Z_2,...,Z_m Z 1 ,Z 2 ,...,Z m ,则它们对原始变量X i X_i X i 的贡献值为ρ i = ∑ k = 1 m r 2 ( Z k , X i ) {\rho i} = \sum\limits{k = 1}^m {{r^2}} ({Z_k},{X_i})ρi =k =1 ∑m r 2 (Z k ,X i )其中r ( Z k , X i ) r({Z_k},{X_i})r (Z k ,X i )为Z k Z_k Z k 与X i X_i X i 的 相关系数
; 3 数学模型
假定有n个样本,每个样本共有p个变量(指标),构成一个n × p n \times p n ×p的数据矩阵
当p p p较大时,在p p p维空间中考察问题比较麻烦。为了克服这一问题,就需要进行 降维处理
,即 用较少的几个综合变量代替原来较多的变量,而且使这些较少的综合变量能尽量多地反映原来较多变量所反映的信息
要从原来的所有变量得到新的综合变量,一种较为简单的方法是 作线性变换
, 使新的综合变量为原始变量的线性组合
条件:
- 对于任意常数c c c,有v a r ( c F i ) = c 2 v a r ( F i ) {\mathop{\rm var}} (c{F_i}) = {c^2}{\mathop{\rm var}} ({F_i})v a r (c F i )=c 2 v a r (F i )为了使方差v a r ( F i ) var(F_i)v a r (F i )可以比较,要求 线性组合的系数满足规范化条件:a i 1 2 + a i 2 2 + a i 3 2 + . . . + a i p 2 = 1 a_{i1}^2 + a_{i2}^2 + a_{i3}^2 + ... + a_{ip}^2 = 1 a i 1 2 +a i 2 2 +a i 3 2 +...+a i p 2 =1
- 要求 原始变量之间存在一定相关性(相关系数分析判断)
- 要求 各个综合变量间互不相关,即协方差为0
- 为了 消除变量量纲不同对方差的影响,通常对数据进行 标准化处理,变量之间的协方差即为相关系数
做不做主成分分析的两大检验(任一个满足即可):
KMO
(Kaiser-Meyer-Olkin)检验
:检验变量之间的偏相关系数是否过小【此值>0.5
时可以作主成分分析】Bartlett's检验
:检验显著性水平(Sig.)【此值<0.05< code>时可以作主成分分析】<!--0.05<-->
4 步骤
- 对原来p p p个指标进行
数据标准化处理
,以消除变量在水平和量纲上的影响 - 根据标准化后的数据矩阵求出
相关系数矩阵(等同于协方差矩阵)
- 求出协方差矩阵的
特征根和特征向量
确定主成分
,并对各主成分所包含的信息给予适当的解释
5 主成分回归
主成分回分析(PCR)
是为了 克服最小二乘(LS)估计在数据矩阵A存在 多重共线性时表现出的不稳定性而提出的,就是将主成分Z 1 , Z 2 , . . . , Z p Z_1,Z_2,...,Z_p Z 1 ,Z 2 ,...,Z p 或选择部分作自变量,对y y y与Z Z Z之间建立回归模型的过程
基本思想:
将原来的回归自变量转化为另一组变量,即主成分,选取一些重要的主成分作为新的自变量,去掉一些影响较小的自变量,实际上达到了降维的目的。然后用最小二乘法对选取主成分后的模型参数进行估计,再转换回原始模型进行参数估计。
[En]
Transform the original regression independent variables into another group of variables, that is, principal components, select some of the important principal components as new independent variables, discard some independent variables with little influence, and actually achieve the purpose of reducing dimensionality. Then the parameters of the model after selecting principal components are estimated by the least square method, and then transformed back to the original model to estimate the parameters.
目的:
- 解决当方程个数n n n
- 消减自变量之间的多重共线性
步骤:
- 先进行
主成分分析
,确定主成分 - 对
主成分和因变量作最小二乘回归
,得到主成分回归方程 - 主成分变量的回归系数乘以特征向量,化成
标准化变量的回归方程
- 恢复为
原始变量的主成分回归方程
6 PCR之Matlab实例
%% 主成分回归分析(PCR)
%% I.清空环境
clc,clear
close all
%% II.导入数据
load sn.txt
[m,n]=size(sn)
%% III.数据预处理
% 提取数据
x0=sn(:,[1:n-1])
y0=sn(:,n)
%% IV.最小二乘法回归(LSR)
% X是系数矩阵(第1列全是1+其余列是自变量) Y是因变量(列向量)
X=[ones(m,1),x0]
Y=y0
% 最小二乘法估计回归系数(最小二乘法的Matlab实现--左除\)
ls_hg=X\Y
ls_hg=ls_hg' % 行向量显示回归系数(第1分量是常数项)
% 显示最小二乘法回归结果
fprintf('最小二乘法回归方程:\n')
fprintf('y=%f',ls_hg(1))
for i=2:n
if ls_hg(i)>0
fprintf('+%f*x%d',ls_hg(i),i-1)
else
fprintf('%f*x%d',ls_hg(i),i-1)
end
end
fprintf('\n')
%% V.主成分回归(PCR)
% 数据标准化处理
xd=zscore(x0)
yd=zscore(y0)
% 计算相关系数矩阵
r=corrcoef(xd)
% 计算协方差矩阵(相关系数矩阵)的特征向量(vec1)和特征值(lamda)以及各个主成分的贡献率(rate)
[vec1,lamda,rate]=pcacov(r)
% 计算累积贡献率,第i个分量表示前i个主成分的累积贡献率
contr=cumsum(rate)
% 构造与vec1同维数的元素为1和-1的矩阵
% sign:符号函数
% repmat(ones(1,4),4,1):垂直堆叠行向量四次
f=repmat(sign(sum(vec1)),size(vec1,1),1)
% 修改特征向量的正负号,使得特征向量的所有分量和为正
vec2=vec1.*f
% 计算所有主成分的得分
df=xd*vec2
%% 通过累积贡献率交互式选择主成分的个数
num=input('请根据累积贡献率(contr值)输入主成分的个数:')
% 最小二乘法估计回归系数(最小二乘法的Matlab实现--左除\)
pca_hg=df(:,[1:num])\yd % 主成分变量的回归系数,这里由于数据标准化,回归方程的常数项为0
% 标准化变量的回归方程系数
bz_hg=vec2(:,[1:num])*pca_hg
% 计算原始变量回归方程系数(第1分量是常数项)
hg=[mean(y0)-std(y0)*mean(x0)./std(x0)*bz_hg, std(y0)*bz_hg'./std(x0)]
% 显示主成分回归方程结果
fprintf('主成分回归方程:\n')
fprintf('y=%6.4f',hg(1))
for i=2:n
if hg(i)>0
fprintf('+%6.4f*x%d',hg(i),i-1)
else
fprintf('%6.4f*x%d',hg(i),i-1)
end
end
fprintf('\n')
%% VI.计算两种回归分析的剩余标准差【均方根误差RMSE:越小越稳定】
ls_rmse=sqrt(sum((ls_hg(1)+x0*ls_hg(2:end)'-y0).^2)/(m-n)) % 最小二乘法回归(LSR)
rmse=sqrt(sum((hg(1)+x0*hg(2:end)'-y0).^2)/(m-num)) % 主成分回归(PCR)
Original: https://blog.csdn.net/qq_41566530/article/details/121660637
Author: 执志@☆飞扬か
Title: 第10章 主成分分析(PCA)

【语音去噪】基于matlab小波硬阈值语音降噪【含Matlab源码 532期】

python2 安装tensorflow 报错 descriptor 文件报错 Syntax Error: invalid syntax 解决办法

LabVIEW图形化的AI视觉开发平台(非NI Vision),大幅降低人工智能开发门槛

矩池云上使用nvidia-smi命令教程

#问题及解决方案整理# | python | anaconda+TensorFlow软件安装运行中的各种问题(已成功解决)

opencv 直方图均衡化

【经验】tf1.x迁移到tf2.x教程

MATLAB——tiff文件数据读取,modis

gazebo中机器人搭载16线激光雷达建图导航

conda 配置虚拟环境

为什么鲜奶牛奶中的蛋白质被看的那么重要?其他食物不也含有不少蛋白质吗,为什么不能代替牛奶呢?

《嵌入式 – 语音识别TWen-ASR-ONE开发笔记》第1章 TWen-ASR-ONE简介

汇编语言

NPU离线推理指南
