主成分分析法概述

主成分分析(PCA)是一种降维算法,能够将多个数据指标转换为少数几个主成分,这些主成分是原始变量的线性组合,并且彼此之间互不相关,能够反映原始数据的大部分信息。

主成分分析法的适用情况

一般来说,当研究的问题涉及多个变量且变量之间存在很强的相关性时可以考虑使用主成分分析来对问题数据进行简化。

数据降维的定义

数据降维是指将高维度的数据(指标太多的数据)保留下最重要的一些特征,去除噪声和不重要的特征。当然,降维会导致信息产生一定的损失。

数据降维的作用

  • 使得数据集更加容易使用;
  • 降低算法的计算开销;
  • 去除噪声;
  • 使得模型结果更加容易理解。

主成分分析的步骤

  1. 构建初始数据矩阵:矩阵的每一行表示一个样本,每一列表示一个原始指标。矩阵中的每一个元素表示某一个样本在某一个指标下的得分。
  2. 计算相关系数矩阵:对初始数据矩阵中的各个指标,求出相关系数矩阵。
  3. 计算特征值和特征向量:计算样本相关系数矩阵的特征值和特征向量。计算完成后对特征值进行从大到小的排序。
  4. 计算主成分贡献率和累计贡献率:每一个特征值对应一个主成分和贡献率,某特征值的贡献率=该特征值/所有特征值的和,该特征值对应的主成分即为对应的特征向量。
  5. 选择保留的主成分:一般取累计贡献率超过百分之80的那些主成分作为最终结果。特征值对应的特征向量即为主成分的系数。
  6. 根据系数分析主成分代表的含义
  7. 利用主成分进行后续的分析过程

主成分分析法的不足

主成分的含义解释一般都会带有一些模糊性,不像原始变量那么清楚确切,这是变量降维过程中不得不付出的代价。因此,只有当主成分的个数远小于原始变量的个数时才使用主成分分析,否则可能弊大于利。主成分分析中如果有一个主成分解释不了,那么就可以认为主成分分析失败了。

主成分分析的注意事项

  • 在评价类模型中,不能先用主成分分析后再对主成分进行评价。
  • 主成分分析可以用于聚类。因为聚类结果的维度往往很高,这时可以通过主成分分析法对聚类结果降维,从而在二维或三维空间中作出聚类结果图。

2022年国赛C题主成分分析应用实例(Matlab)

% 首先导入原始数据矩阵
load HighK_Matrix.mat
load PbBa_Matrix.mat%% 高钾玻璃的主成分计算部分Sample_Count=size(HighK_Matrix,1);
Factor_Count=size(HighK_Matrix,2);% 第一步:计算原始数据矩阵的相关系数矩阵
R=corrcoef(HighK_Matrix);
disp("相关系数矩阵为:");
disp(R);% 第二步:计算相关系数矩阵的特征值和特征向量
[A,B]=eig(R);% 第三步:计算各个特征值对应的贡献率以及累计贡献率
CharacteristicValues_Vector=diag(B);
CharacteristicValues_Vector=CharacteristicValues_Vector(end:-1:1);
Cum_DevotionRate=cumsum(CharacteristicValues_Vector./Factor_Count);
disp("累计贡献率为:");
disp(Cum_DevotionRate);
% figure(1);
% plot([1:14],Cum_DevotionRate);% 第四步:筛选合适个数的主成分,并输出相应的主成分
MainFactor_Count=input("请输入需要保留的主成分个数:");
A=rot90(A);
for i=1:MainFactor_Countdisp(strcat("第",num2str(i),"个主成分的系数为:"));disp((A(:,i))');
end%% 铅钡玻璃的主成分计算部分Sample_Count=size(HighK_Matrix,1);
Factor_Count=size(HighK_Matrix,2);% 第一步:计算原始数据矩阵的相关系数矩阵
R=corrcoef(PbBa_Matrix);
disp("相关系数矩阵为:");
disp(R);% 第二步:计算相关系数矩阵的特征值和特征向量
[A,B]=eig(R);% 第三步:计算各个特征值对应的贡献率以及累计贡献率
CharacteristicValues_Vector=diag(B);
CharacteristicValues_Vector=CharacteristicValues_Vector(end:-1:1);
Cum_DevotionRate=cumsum(CharacteristicValues_Vector./Factor_Count);
disp("累计贡献率为:");
disp(Cum_DevotionRate);
% figure(2);
% plot([1:14],Cum_DevotionRate);% 第四步:筛选合适个数的主成分,并输出相应的主成分
MainFactor_Count=input("请输入需要保留的主成分个数:");
A=rot90(A);
for i=1:MainFactor_Countdisp(strcat("第",num2str(i),"个主成分的系数为:"));disp((A(:,i))');
end

数学建模学习笔记(21)主成分分析法相关推荐

  1. 数学建模学习笔记——层次分析法(评价类,专家打分一般不用)

    层次分析法 (1)评价类问题--打分解决 问法--确认评价指标.形成评价体系         亿图图示  

  2. 数学建模学习笔记之评价问题聚类分析法

    数学建模学习笔记之评价问题聚类分析法 物以类聚.人以群分. 聚类分析是一个很大的概念,显然根据分类的依据不同会出现很多很多聚类的方法.例如K-Means .Sequential Leader.Mode ...

  3. 【数学建模学习笔记【集训十天】之第六天】

    数模学习目录 Matplotlib 学习 Matplotlib简介 Matplotlib 散点图 运行效果如下: Matplotlib Pyplot 运行效果如下: 关于plot() 运行效果如下: ...

  4. 数学建模学习笔记(2.3)lingo软件求解线性规划问题

    数学建模学习笔记(2.3)lingo软件求解线性规划问题 lingo软件的优势在于体积小,专注于解决优化问题 且编程语言通俗易懂,没有门槛 对于刚刚接触数学建模同学比较友善 当然对于已经参与建模很久的 ...

  5. 数学建模学习笔记(1)数学模型的特点和分类

    数学建模学习笔记(1)数学模型的特点和分类 ps:学习的教材为姜启源著的<数学模型(第四版)> 领取数模资料和更多内容请关注公众号:拾壹纪元 传送门: 线性规划(LP)问题 https:/ ...

  6. 清风数学建模学习笔记——主成分分析(PCA)原理详解及案例分析

    主成分分析   本文将介绍主成分分析(PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息. 一般 ...

  7. 清风数学建模学习笔记——灰色关联分析(GRA)详细解读与案例分析

    灰色关联分析   灰色关联分析的基本思想 是根据序列曲线几何形状的相似程度来判断其联系是否紧密,曲线越接近,相应序列之间的关联度就越大,反之则越小.   此方法可用于 进行系统分析,也可应用于对问题 ...

  8. 数学建模学习笔记(一):插值法

    文章目录 前言 一.一维插值问题的描述 二.常用插值方法 1.Lagrange插值法 2.Newton插值法 三.高次插值的Runge现象 四.Matlab插值 1.一维插值 2.二维插值 3.散乱点 ...

  9. 数学建模学习笔记(二):非线性规划模型例题与灵敏度分析

    文章目录 前言 一.一个简单的非线性规划模型 二.问题的求解 1.模型的建立与求解 2.得出结论 三.灵敏度分析 总结 参考书目 前言 数学建模解决问题的过程一般分为五个步骤,称为五步方法,五个步骤如 ...

最新文章

  1. 点击UITableView的cell展开收缩
  2. 大智慧825 自选股 导出_互联网技术更新智慧党校迎来发展契机-威尔 WEDS-BP31_济南考勤机行情...
  3. java 强制垃圾回收_Java垃圾回收机制
  4. 2014-06-27nbsp;20:47
  5. 【python图像处理】彩色映射
  6. [Android] 给图像加入相框、圆形圆角显示图片、图像合成知识
  7. switch注意事项
  8. codevs-2235
  9. Android N 去电流程,【私人备忘录】Android P 去电代码流程
  10. EOS小白学习(四)使用http请求EOS节点
  11. mysql php sdk_PHP连接MySQL数据库
  12. mysql5.5函数大全_mysql 函数大全
  13. AI初学者用什么软件?适合AI新手的9款人工智能开源软件
  14. Hello,Bada!
  15. 打印机生产食物?3D打印技术推出人造肉口感佳
  16. 豆瓣社区:《如何高效学习》应用与心得
  17. MacBook Air M1 + MacTex + VS Code的LaTex教程
  18. Autoconf解释
  19. 使用WT工具恢复MongoDB数据
  20. 亿级用户体量,千万级日活用户,《王者荣耀》高并发背后的故事!

热门文章

  1. 【MySQL 中如何去重】
  2. Java计算机毕业设计题目汇总 - 简单的毕设选题
  3. 读取EXCEL然后导出各列值的笛卡尔积——测试用例辅助
  4. docker中mysql执行脚本文件
  5. uniapp关于路径跳转的问题
  6. 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务安卓卡片接入指南
  7. 用EXCEL依据产品名称的关键词分类
  8. php实现excel计算,用PHPExcel计算总和
  9. 100天土鸡饲养计划(32)
  10. 拼多多如何保持顾客粘性,提升产品复购率?拼多多出评