第10章 主成分分析(PCA)
1 概念
主成分是选出比原始变量个数少,能解释大部分资料中的变异的几个新变量
主成分分析
是考察多个变量间相关性一种多元统计方法,通过较少的变量(几个主成分)来解释多个变量间的内部结构,即从原始变量中导出少数几个主分量,使它们尽可能多地保留原始变量的信息,且彼此间相互独立(互不相关)
主成分分析--->数据降维
常被用来寻找判断事物或现象的综合指标,并对综合指标所包含的信息进行适当的解释
2 基本思想
设法将原来众多具有一定相关性的变量(如p个变量),
重新组合成一组新的相互无关的综合变量
来代替原始变量将原来p个变量做线性组合作为新的综合变量
方差<--->信息量
,即var(F1)var(F1)var(F1)越大,表示F1F1F1包含的信息越多,因此在所有的线性组合中所选取的F1F1F1应该是方差最大的,故称之为第一主成分
- 如果把两个变量用一个变量来表示,同时这一个新的变量又尽可能包含原来的两个变量的信息,这就是
降维的过程
- 以两个变量X1和X2为例,找出的这些新变量是原来变量的线性组合,叫做
主成分[Z=a1X1+a2X2]
主成分构造原则:
- 在损失很少的数据信息的前提下,把多个因素指标利用
正交旋转变换转换
成几个综合指标(主成分
) - 每个主成分都是原始变量的
线性组合
,且各个主成分之间相互独立(互不相关)
根据主成分的构造思想和(皮尔逊)相关系数公式,要使得综合变量之间不相关,则各自对应的方差应该越大越好
主成分选取原则【任一个满足即可】:
各主成分的累积方差贡献率>80%
特征值
λ>1\lambda>1λ>1
主成分性质:
- 主成分ZZZ的协方差阵为对角阵,且对角线元素为λ1,λ2,...,λp\lambda_1,\lambda_2,...,\lambda_pλ1,λ2,...,λp
- 记∑=(σij)\sum {} = ({\sigma _{ij}})∑=(σij),有∑i=1pλi=∑i=1pσij\sum\limits_{i = 1}^p {{\lambda _i}} = \sum\limits_{i = 1}^p {{\sigma _{ij}}}i=1∑pλi=i=1∑pσij,称αi=λi∑i=1pλ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=1mλi∑i=1pλi,i=1,2,...,p\frac{{\sum\limits_{i = 1}^m {{\lambda _i}} }}{{\sum\limits_{i = 1}^p {{\lambda _i}} }},i = 1,2,...,pi=1∑pλii=1∑mλi,i=1,2,...,p为前m个主成分的累积贡献率
- 选取的主成分对原始变量的贡献值用相关系数的平方和来表示,若选取的主成分为Z1,Z2,...,ZmZ_1,Z_2,...,Z_mZ1,Z2,...,Zm,则它们对原始变量XiX_iXi的贡献值为ρi=∑k=1mr2(Zk,Xi){\rho _i} = \sum\limits_{k = 1}^m {{r^2}} ({Z_k},{X_i})ρi=k=1∑mr2(Zk,Xi)其中r(Zk,Xi)r({Z_k},{X_i})r(Zk,Xi)为ZkZ_kZk与XiX_iXi的相关系数
3 数学模型
假定有n个样本,每个样本共有p个变量(指标),构成一个n×pn \times pn×p的数据矩阵
当ppp较大时,在ppp维空间中考察问题比较麻烦。为了克服这一问题,就需要进行降维处理
,即用较少的几个综合变量代替原来较多的变量,而且使这些较少的综合变量能尽量多地反映原来较多变量所反映的信息
要从原来的所有变量得到新的综合变量,一种较为简单的方法是作线性变换
,使新的综合变量为原始变量的线性组合
条件:
对于任意常数ccc,有var(cFi)=c2var(Fi){\mathop{\rm var}} (c{F_i}) = {c^2}{\mathop{\rm var}} ({F_i})var(cFi)=c2var(Fi)为了使方差var(Fi)var(F_i)var(Fi)可以比较,要求线性组合的系数满足规范化条件:ai12+ai22+ai32+...+aip2=1a_{i1}^2 + a_{i2}^2 + a_{i3}^2 + ... + a_{ip}^2 = 1ai12+ai22+ai32+...+aip2=1
要求原始变量之间存在一定相关性(相关系数分析判断)
要求各个综合变量间互不相关,即协方差为0
为了消除变量量纲不同对方差的影响,通常对数据进行标准化处理,变量之间的协方差即为相关系数
做不做主成分分析的两大检验(任一个满足即可):
KMO
(Kaiser-Meyer-Olkin)检验
:检验变量之间的偏相关系数是否过小【此值>0.5
时可以作主成分分析】Bartlett's检验
:检验显著性水平(Sig.)【此值<0.05
时可以作主成分分析】
4 步骤
对原来ppp个指标进行
数据标准化处理
,以消除变量在水平和量纲上的影响根据标准化后的数据矩阵求出
相关系数矩阵(等同于协方差矩阵)
求出协方差矩阵的
特征根和特征向量
确定主成分
,并对各主成分所包含的信息给予适当的解释
5 主成分回归
主成分回分析(PCR)
是为了克服最小二乘(LS)估计在数据矩阵A存在多重共线性时表现出的不稳定性而提出的,就是将主成分Z1,Z2,...,ZpZ_1,Z_2,...,Z_pZ1,Z2,...,Zp或选择部分作自变量,对yyy与ZZZ之间建立回归模型的过程
基本思想:
将原来的回归自变量变换到另一组变量,即主成分,选择其中一部分重要的主成分作为新的自变量,丢弃了一部分影响不大的自变量,实际上达到了降维的目的,然后用最小二乘法对选取主成分后的模型参数进行估计,最后再变换回原来的模型求出参数的估计
目的:
- 解决当方程个数nnn<未知参数个数ppp时,最小二乘估计失效的问题
- 消减自变量之间的多重共线性
步骤:
先进行
主成分分析
,确定主成分对
主成分和因变量作最小二乘回归
,得到主成分回归方程主成分变量的回归系数乘以特征向量,化成
标准化变量的回归方程
恢复为
原始变量的主成分回归方程
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:nif ls_hg(i)>0fprintf('+%f*x%d',ls_hg(i),i-1)elsefprintf('%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:nif hg(i)>0fprintf('+%6.4f*x%d',hg(i),i-1)elsefprintf('%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)
第10章 主成分分析(PCA)相关推荐
- 主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?
这是从网上看到的PCA算法的步骤: 第一步,分别求每列的平均值,然后对于所有的样例,都减去对应的均值. 第二步,求特征协方差矩阵. 第三步,求协方差的特征值-显示全部 关注者 1,218 被浏览 78 ...
- R语言学习笔记——高级篇:第十四章-主成分分析和因子分析
R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...
- 机器学习--主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?
原文链接:主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是"投影"?_天下对手教会少林武僧-CSDN博客_pca投影矩阵 这是从网上看到的PCA算 ...
- 单细胞测序流程(四)主成分分析——PCA
PCA PCA:线性降维,主要用于数据少的时候使用.看结果的时候,看打分的绝对值大小,而不是单独的看数据的大小,PCA 是最常用的降维方法,通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望 ...
- R 语言主成分分析(PCA)实战教程
作者:落痕的寒假 原文:https://blog.csdn.net/LuohenYJ/article/details/97950522 声明:本文章经原作者同意后授权转载. 主成分分析 Princip ...
- 223.主成分分析PCA
主成分分析 PCA 本节作者:刘华,中国科学技术大学 版本1.0.3,更新日期:2020年6月18日 什么是PCA(Principal Component Analysis) 相关背景 在许多领域的研 ...
- 降维(一)----说说主成分分析(PCA)的源头
降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------------- 前一篇文章中介绍了主成分分析.PCA ...
- 复现经典:《统计学习方法》第16章 主成分分析
第16章 主成分分析 本文是李航老师的<统计学习方法>一书的代码复现.作者:黄海广 备注:代码都可以在github中下载.我将陆续将代码发布在公众号"机器学习初学者", ...
- 机器学习-降维之主成分分析PCA算法原理及实战
主成分分析 前言 近年来,随着互联网和信息行业的发展,数据已经渗透到各行各业,成为重要的生产因素如数据记录和属性规模的急剧增长.社会已经进入大数据时代,数据越多越好似乎已经成为公理.然而,数据量并不是 ...
- 7.4.4 主成分分析 PCA
7.4.4 主成分分析 PCA 假设我们研究的对象具有相关属性,令属性向量为 x=(x1,x2,⋯,xm)\mathbf{x} = (x_1,x_2,\cdots,x_m)x=(x1,x2,⋯,x ...
最新文章
- 杀毒软件已经 OUT 了!未来 CPU 也可以检测病毒
- ios 获取一个枚举的所有值_凯哥带你从零学大数据系列之Java篇---第十一章:枚举...
- OpenGL HDR高动态光照渲染的实例
- C++ stirng,int 互转(转载)
- POJ2299 逆序数
- EF创建上下文对象HttpContext和CallContext
- IOS基础之NSFounation框架的NSDictionary,NSMutableDictionary的使用
- LeetCode 998. 最大二叉树 II
- 怎么用U盘重装系统?
- 第8章防范式编程上(代码大全3)
- Java基础教程【第一章:Java概述】
- 如何删除服务中不存在在服务
- 红蜘蛛 v6.2.1160解除键鼠屏蔽以及实现窗口化
- Linux网站服务之部署Wordpress教程
- Echarts 漏斗图
- ME21N采购订单增强-税码字段默认值
- C#压缩、解压缩文件(夹)(rar、zip)
- 简单理解2台主机数据通信过程
- python星空画法教程_零基础也能画好的星空教程|利用午休时间画出你的星辰大海...
- 如何用python做后端写网页-flask框架
热门文章
- 非门芯片 74AHC1G08 74AHC1G04 74AHC1G02的区别
- C语言程序——计算圆的周长、圆的面积、球的体积
- qt打开xls文件_Qt读取excel文件的两种方法
- 营销公众号该如何运营大纲
- PDF怎么转换成Word?教你两种简单有效的方法
- echarts常用属性
- 在上海、苏州、深圳、长沙从“蜗居”到“安家”,8090后要付出多少?
- 135编辑器使用教程
- Three 之 three.js (webgl)涉及的各种材质简单说明(常用材质配有效果图)
- FaShop-开源拖拽式小程序搭建平台