【数模】主成分分析PCA

  • 主成分分析(Principal Component Analysis,PCA),是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。
  • 使用场景:一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,可考虑使用主成分分析的方法来对数据进行简化。

一、主成分分析的简要介绍

1.1 降维

  • 主成分分析:把原来多个变量划为少数几个综合指标的一种统计分析方法 → 降维
  • 降维的优点:
    • 使得数据集更易使用;
    • 降低算法的计算开销;
    • 去除噪声;
    • 使得结果容易理解。

1.2 PCA详细证明过程

  • 参考视频(需要基础:多元统计和线性代数)

二、PCA的计算步骤

假设有n个样本,p个指标,则可构成大小为n×p的样本矩阵x:在这里插入图片描述

2.1 标准化处理

在这里插入图片描述

2.2 计算标准化样本的协方差矩阵

在这里插入图片描述

( 2.1和2.2合并:直接计算x矩阵的样本相关系数矩阵 )

在这里插入图片描述

2.3 计算R的特征值和特征向量

  • 软件会算好,不必自己算,Matlab中计算特征值和特征向量的函数:eig(R)函数
  • R一定是半正定矩阵 → 则一定非负(线代知识)
    在这里插入图片描述

2.4 计算主成分贡献率以及累计贡献率

在这里插入图片描述

2.5 写出主成分

  • 一般取累计贡献率超过80%的特征值所对应的第一、第二、… 、第m(m≤p)个主成分。第i个主成分:F=a1iX1+ a2iX2+…十apiXp(i=1,2,…,m)

2.6 根据系数(api)分析主成分代表的意义

  • 对于某个主成分而言,指标前面的系数越大,代表该指标对于该主成分的影响越大

2.7 利用主成分的结果进行后续的分析

  1. 主成分得分:不能评价类模型!
  2. 主成分可用于聚类分析→方便画图
  3. 主成分可用于回归分析

三、主成分分析的应用例题1

3.1 题目

  • 在制定服装标准的过程中,对128名成年男子的身材进行了测量,每人测得的指标中含有这样六项:身高(x1)、坐高(x2) 、胸围(x3) 、手臂长(x4) 、肋围(x5)和腰围(x6) 。所得样本相关系数矩阵(对称矩阵)列于下表。
  • 注意:本题给我们的数据直接就是样本相关系数矩阵,一般建模时,得到的数据是最原始的数据(每一列是指标,每一行是样本)。在这里插入图片描述

3.2 计算关键变量

  • 经过计算,相关系数矩阵的特征值、相应的特征向量以及贡献率列于下表:在这里插入图片描述
  • 从表中可以看到前三个主成分的累计贡献率达85.9%,因此可以考虑只取前面三个主成分,它们能够很好地概括原始变量。

3.3 写出主成分并简要分析

在这里插入图片描述

  • 第一主成分F1对所有(标准化)原始变量都有近似相等的正载荷,故称第一主成分为(身材)大小成分。
  • 第二主成分F2在X3,X5,X6上有中等程度的正载荷,而在X1,X2,X4上有中等程度的负载荷,称第二主成分为形状成分(或胖瘦成分)。
  • 第三主成分F3在X2上有大的正载荷,在X4上有大的负载荷,而在其余变量上的载荷都较小,可称第三主成分为臂长成分。
  • 注:由于第三主成分的贡献率不高(7.65%)且实际意义也不太重要,因此我们也可以考虑只取前两个主成分进行分析。

3.4 主成分分析的说明

  • 在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平,其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释。
  • 主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。 因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。
  • 如果原始变量之间具有较高的相关性,则前面少数几个主成分的累计贡献率通常就能达到一个较高水平,也就是说,此时的累计贡献率通常较易得到满足。
  • 主成分分析的困难之处主要在于要能够给出主成分的较好解释,所提取的主成分中如有一个主成分解释不了,整个主成分分析也就失败了。
  • 主成分分析是变量降维的一种重要、常用的方法,简单的说,该方法要应用得成功,一是靠原始变量的合理选取,二是靠“运气”。
    ——参考教材:《应用多元统计分析》王学民

四、主成分分析的应用例题2

4.1 题目

在这里插入图片描述

4.2 计算关键变量

在这里插入图片描述

4.3 对主成分的简要分析

在这里插入图片描述
由上表可知,前两个主成分的累计贡献率已高达93.7%,第一主成分F1在所有变量上有几乎相等的正载荷,可称为在径赛项目上的强弱成分。第二主成分F2在各个指标上的载荷基本上逐个递减,反映了速度与耐力成绩的对比

4.4 Matlab代码

  • PCA.m(更加详细的代码注释可见源代码)
%% 第一步:对数据x标准化为X
X=zscore(x);%% 第二步:计算样本协方差矩阵
R = cov(X);
%% 注意:以上两步可合并为下面一步:直接计算样本相关系数矩阵
R = corrcoef(x);%% 第三步:计算R的特征值和特征向量
[V,D] = eig(R); % V 特征向量矩阵 D 特征值构成的对角矩阵%% 第四步:计算主成分贡献率和累计贡献率
lambda = diag(D); % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
lambda = lambda(end:-1:1); % 因为lambda向量是从小大到排序的,我们将其调个头
% 计算贡献率
contribution_rate = lambda / sum(lambda);
% 计算累计贡献率 cumsum是求累加值的函数
cum_contribution_rate = cumsum(lambda)/ sum(lambda);
% 注意:这里的特征向量要和特征值一一对应,之前特征值相当于颠倒过来了,因此特征向量
的各列需要颠倒过来
% rot90函数可以使一个矩阵逆时针旋转90度,然后再转置,就可以实现将矩阵的列颠倒的效果
V=rot90(V)';
对相关系数R进行可视化
  • ①将R的数据复制到Excel表中,并设定行高为50在这里插入图片描述

  • ③色阶修改在这里插入图片描述

  • ④管理规则(颜色越深代表相关性越强)在这里插入图片描述

4.5 利用Matlab进行主成分分析

在这里插入图片描述

4.6 对结果的解释

在这里插入图片描述

从上表可以看出,前两个和前三个主成分的累计贡献率分别达到80.6%和87.8%,第一主成分F1在所有变量(除在x2上的载荷稍偏小外)上都有近似相等的正载荷,反映了综合消费性支出的水平,因此第一主成分可称为综合消费性支出成分。第二主成分F2在变量x2上有很高的正载荷,在变量x4上有中等的正载荷,而在其余变量上有负载荷或很小的正载荷。可以认为这个主成分度量了受地区气候影响的消费性支出(主要是衣着 ,其次是医疗保健 )在所有消费性支出中占的比重(也可理解为一种消费倾向),第二主成分可称为消费倾向成分。第三主成分很难给出明显的解释,因此我们只取前面两个主成分。


五、主成分分析的滥用:主成分得分

  • ①王学民老师在这里插入图片描述

  • ②清风老师的补充

    • 主成分是降维算法,既然已经有数据了,为什么不把这些数据的信息全部用上呢?主成分分析是会损失原始数据的信息的。
    • 指标可能有各种类型(极大、极小、区间等),主成分只有标准化的过程,并没有正向化的过程。
  • 滥用的例子:在这里插入图片描述


六、主成分分析用于聚类

  • Matlab生成结果复制进spss中
    在这里插入图片描述

  • 查看能大概分成几类:如下为3类在这里插入图片描述

    • 主成分和之前聚类模型对比生成的聚类结果:在这里插入图片描述
  • 生成聚类效果图在这里插入图片描述
    在这里插入图片描述

  • 聚类效果图:主成分聚类最大的意义就是可视化最后的聚类效果,毕竟使用主成分是会降低部分信息的。(只有在指标个数特别多,且指标之间存在很强的相关性时才用主成分聚类。)在这里插入图片描述


七、主成分回归

  • 主成分回归可用来解决多重共线性的问题。

7.1 例题:探究棉花单产和五个指标之间的关系在这里插入图片描述

7.2 主成分的解释

在这里插入图片描述

  • 从表中可以看出,前两个主成分的累计贡献率为97.74%,第一主成分F1在所有变量(除在x3上的载荷稍偏小外)上都有近似相等的正载荷,反映了在种植投入上较为综合的水平,因此第一主成分可称为综合投入成分。第二主成分F2在变量x3(农药)上有很高的负载荷,在变量x2上有较低的负载荷,而在其余变量上均为正载荷。可以认为这个主成分度量了受土壤环境影响的投入(主要是农药 ,其次是机械费用 )在所有投入中占的比重。

7.3 在Stata中回归结果

  • Stata回归代码:reg Y F1 F2
  • Stata异方差检验代码:estat imtest,white
  • 最重要解释回归系数,因为都是显著的
    在这里插入图片描述

八、思考

  • 问题1:之前学过逐步回归,逐步回归也可以用来解决多重共线性问题,该用逐步回归还是今天学习的主成分分析呢?
    • 如果能够很好的解释清楚主成分代表的含义,那么建议在正文中既用主成分分析,又用逐步回归(多分析点没啥坏处,只要你能保证你不分析错就行);如果解释不清楚,还是用逐步回归。
  • 问题2:主成分回归后,需要将原来的变量带回到回归方程吗?
    • 没必要。因为要是代回去了,和普通的回归没什么区别。主成分的核心作用就是降维,代回去了维度也没降。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/77074.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java序列化框架全集讲解

一、简介 Java序列化框架是一种用于在Java应用程序中将对象转换为字节流或从字节流反序列化为对象的工具。序列化是将对象的状态转换为字节流的过程,以便可以将其存储在文件中、通过网络传输或在不同的系统之间共享。反序列化是将字节流转换回对象的过程。 Java序列…

ShaderToy着色器移植到Three.js全过程记录

推荐:用 NSDT设计器 快速搭建可编程3D场景。 作为 Publicis Pixelpark Innovationlab 研究的一部分,我们研究了如何将较低底层的语言用于网络技术。 显而易见的选择似乎是 asm.js 或 WebAssembly。 但你也可以使用 WebGL 着色器来解决面向机器的问题。 …

Prometheus服务器、Prometheus被监控端、Grafana、Prometheus服务器、Prometheus被监控端、Grafana

day03 day03Prometheus概述部署Prometheus服务器环境说明:配置时间安装Prometheus服务器添加被监控端部署通用的监控exporterGrafana概述部署Grafana展示node1的监控信息监控MySQL数据库配置MySQL配置mysql exporter配置mysql exporter配置prometheus监控mysql自动…

【Docker】Docker容器数据卷、容器卷之间的继承和DockerFIle的详细讲解

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass

1.概述 亚马逊云科技提供了完备的IoT服务能力,涵盖设备服务、连接和控制服务以及云端分析服务,是快速构建安全可靠、可扩展的 IoT 平台的常见选择。Amazon IoT Greengrass 边缘运行时和云服务,可帮助您在设备上构建、部署和管理 IoT 应用。A…

ansible常见模块的运用

ansible常见模块的运用 一:Ansible简介二:ansible 环境安装部署管理端安装 ansibleansible 目录结构配置主机清单配置密钥对验证 三:ansible 命令行模块1.command 模块在远程主机执行命令,不支持管道,重定向…

【C++】STL——vector的模拟实现、常用构造函数、迭代器、运算符重载、扩容函数、增删查改

文章目录 1.模拟实现vector1.1构造函数1.2迭代器1.3运算符重载1.4扩容函数1.5增删查改 1.模拟实现vector vector使用文章 1.1构造函数 析构函数 在C中,vector是一个动态数组容器,可以根据需要自动调整大小。vector类提供了几个不同的构造函数来创建和初…

【计算机网络】NAT技术

文章目录 1. NAT技术简介2. 使用NAT技术转换IP的过程3. NAPT4. NAT技术的缺陷5. NAT和代理服务器 1. NAT技术简介 NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效避免外…

【测试学习三】软件测试的生命周期 BUG的相关知识

目录 一、软件测试的生命周期(重要) 🍑1、软件的生命周期? 🍑2、软件测试的生命周期? 二、关于BUG 🍑1、如何描述与定义一个BUG?(了解) 🍑2…

滑动奇异频谱分析:数据驱动的非平稳信号分解工具(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

分治法、回溯法与动态规划

算法思想比较 回溯法:有“通用解题法”之称,用它可以系统地搜索问题的所有解。回溯法是按照深度优先搜索(DFS)的策略,从根结点出发深度探索解空间树分治法:将一个难以直接解决的大问题,分割成一些规模较小的相同问题&…

如何建立含有逻辑删除字段的唯一索引

业务场景 在实际工作当中,遇到一个场景,就是在用户注册时,名字要全局唯一,当然,我们是可以对用户进行删除的,你会怎么去做? 分析 一般来说,我们可以在用户注册请求时&#xff0c…

Typescript+React入门

初识Typescript 出现背景 Typescript(以下简称TS)实际上就是JavaScriptType,用数据类型的方式来约束了JS的变量定义 在JS的基础上增加了类型支持 在JS中大多数错误都是因为数据类型造成的,所以TS为了规避这个问题加入了类型限制…

iPhone 6透明屏是什么?原理、特点、优势

iPhone 6透明屏是一种特殊的屏幕技术,它能够使手机屏幕变得透明,让用户能够透过屏幕看到手机背后的物体。 这种技术在科幻电影中经常出现,给人一种未来科技的感觉。下面将介绍iPhone 6透明屏的原理、特点以及可能的应用。 iPhone 6透明屏的原…

尚品汇总结三:商城首页(面试专用)

目录 首页商品分类实现 1、封装数据接口 2、页面静态化: 什么是页面静态化 为什么要使用静态化 首页商品分类实现 前面做了商品详情,我们现在来做首页分类,我先看看京东的首页分类效果,我们如何实现类似效果: 思路…

shell 脚本

一、使用PID过滤该进程的所有信息 #! /bin/bash # Function: 根据用户输入的PID,过滤出该PID所有的信息 read -p "请输入要查询的PID: " P nps -aux| awk $2~/^$P$/{print $11}|wc -l if [ $n -eq 0 ];thenecho "该PID不存在!&#xff0…

【深度学习】MAT: Mask-Aware Transformer for Large Hole Image Inpainting

论文:https://arxiv.org/abs/2203.15270 代码:https://github.com/fenglinglwb/MAT 文章目录 PSAbstractIntroductionRelated WorkMethod总体架构卷积头Transformer主体Adjusted Transformer Block Multi-Head Contextual Attention Style Manipulation …

原型链污染例题复现

一、什么是原型链 下面我们通过这个小例子来看看。 可以看到b在实例化为test对象以后,就可以输出test类中的属性a了。这是因为在于js中的一个重要的概念:继承。而继承的整个过程就称为该类的原型链。 在javascript中,每个对象的都有一个指向他的原型(p…

【Unity3D应用案例系列】Unity3D中实现文字转语音的工具开发

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在开发中,会遇到将文字转语音输出的需求&#xff0…

问题解决方案

前端开发 1、npm安装的时候老是卡住 reify:rxjs: timing reifyNode:node_modules/vue/cli/node_modules 查看当前使用的那个镜像 nrm lsnpm ---------- https://registry.npmjs.org/yarn --------- https://registry.yarnpkg.com/cnpm --------- https://r.cnpmjs.org/taobao …