主成分分析法(PCA)及MATLAB实现

这篇具有很好参考价值的文章主要介绍了主成分分析法(PCA)及MATLAB实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 主成分分析概念:

 2. 主成分分析法步骤:

第一步:对所有特征进行中心化:去均值

第二步:求协方差矩阵C

第三步:求协方差矩阵C的特征值​编辑和相对应的特征向量​编辑

第四步:将原始特征投影到选取的特征向量上,得到降维后的新K维特征

 3. 主成分分析法MATLAB实现:


1. 主成分分析概念:

        主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化。

降维具有的优点:

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

        假设有n个样本,p个指标,则可构成n*p的样本矩阵x:

matlab主成分分析降维,matlab,开发语言,算法

 例如:此图中有10个样本,2个指标,可以构成10*2的样本矩阵

matlab主成分分析降维,matlab,开发语言,算法

 2. 主成分分析法步骤:

第一步:对所有特征进行中心化:去均值

   求每一个特征的平均值(按列求取),然后对于所有的样本,每一个特征都减去自身的均值。

matlab主成分分析降维,matlab,开发语言,算法

 matlab主成分分析降维,matlab,开发语言,算法

matlab主成分分析降维,matlab,开发语言,算法

第二步:求协方差矩阵C

        求协方差矩阵

        

matlab主成分分析降维,matlab,开发语言,算法

第三步:求协方差矩阵C的特征值和相对应的特征向量

        求协方差矩阵C的特征值和相对应的特征向量

        特征值 λ 会有 N个,每一个 λ  对应一个特征向量 u,将特征值 λ 按照从大到小的顺序排序,选择最大的前k,并将其相对应的k个特征向量拿出来,我们会得到一组 { ( λ 1 , u 1 ) , ( λ 2 , u 2 ) , . . . , ( λ k , u k ) } 。本例中原始特征只有2维,我在选取 λ 的时候,令 k = 1,选择最大的 λ 1 和 其 对 应 的 u 1 和其对应的u1​。

第四步:将原始特征投影到选取的特征向量上,得到降维后的新K维特征

选取最大的前k个特征值和相对应的特征向量,并进行投影的过程,就是降维的过程。对于每一个样本 ,原来的特征是 ,投影之后的新特征是  ,新特征的计算公式如下:

 主成分分析法的原理分析在此处不涉及,感兴趣的友友可以看这一篇文章:

PCA:详细解释主成分分析_lanyuelvyun的博客-CSDN博客_pca

 3. 主成分分析法MATLAB实现:

data1部分原数据:

省份 食品 衣着 家庭设备 医疗 交通 娱乐 居住 杂项
北京 2959.19 730.79 749.41 513.34 467.87 1141.82 478.42 457.64
天津 2459.77 495.47 697.33 302.87 284.19 735.97 570.84 305.08
河北 1495.63 515.9 362.37 285.32 272.95 540.58 364.91 188.63
山西 1406.33 477.77 290.15 208.57 201.5 414.72 281.84 212.1
内蒙古 1303.97 524.29 254.83 192.17 249.81 463.09 287.87 192.96
辽宁 1730.84 553.9 246.91 279.81 239.18 445.2 330.24 163.86
吉林 1561.86 492.42 200.49 218.36 220.69 459.62 360.48 147.76
黑龙江 1410.11 510.71 211.88 277.11 224.65 376.82 317.61 152.85
上海 3712.31 550.74 893.37 346.93 527 1034.98 720.33 462.03
江苏 2207.58 449.37 572.4 211.92 302.09 585.23 429.77 252.54
浙江 2629.16 557.32 689.73 435.69 514.66 795.87 575.76 323.36
安徽 1844.78 430.29 271.28 126.33 250.56 513.18 314 151.39
福建 2709.46 428.11 334.12 160.77 405.14 461.67 535.13 232.29
... ... ... ... ... ... ... ... ...
clear;clc
load data1.mat   % 主成分聚类
[n,p] = size(x);  % n是样本个数,p是指标个数

R = corrcoef(x);
disp('样本相关系数矩阵为:')
disp(R)
[V,D] = eig(R);  % V 特征向量矩阵  D 特征值构成的对角矩阵

%%计算主成分贡献率和累计贡献率
lambda = diag(D);  % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
lambda = lambda(end:-1:1);  % 因为lambda向量是从小大到排序的,我们将其调个头
contribution_rate = lambda / sum(lambda);  % 计算贡献率
cum_contribution_rate = cumsum(lambda)/ sum(lambda);   % 计算累计贡献率  cumsum是求累加值的函数
disp('特征值为:')
disp(lambda')  % 转置为行向量,方便展示
disp('贡献率为:')
disp(contribution_rate')
disp('累计贡献率为:')
disp(cum_contribution_rate')
disp('与特征值对应的特征向量矩阵为:')
% 注意:这里的特征向量要和特征值一一对应,之前特征值相当于颠倒过来了,因此特征向量的各列需要颠倒过来
%  rot90函数可以使一个矩阵逆时针旋转90度,然后再转置,就可以实现将矩阵的列颠倒的效果
V=rot90(V)';
disp(V)


%% 计算我们所需要的主成分的值
m =input('请输入需要保存的主成分的个数:  ');
F = zeros(n,m);  %初始化保存主成分的矩阵(每一列是一个主成分)
for i = 1:m
    ai = V(:,i)';   % 将第i个特征向量取出,并转置为行向量
    Ai = repmat(ai,n,1);   % 将这个行向量重复n次,构成一个n*p的矩阵
    F(:, i) = sum(Ai .* X, 2);  % 注意,对标准化的数据求了权重后要计算每一行的和
end

参考:清风数学建模文章来源地址https://www.toymoban.com/news/detail-531107.html

到了这里,关于主成分分析法(PCA)及MATLAB实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 主成分分析法(PCA)的理解(附python代码案例)

    最近在文献调研,发现PCA基本都有用到,回忆起了机器学习和数学建模,总之还是要好好学学捏。 定义 :主成分分析(Principal Component Analysis, PCA)是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。 换一

    2024年02月03日
    浏览(44)
  • 数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目简介 2.1分析目标 2.2数据集介绍 2.3技术工具 3.算法理论 4.实验过程

    2024年02月03日
    浏览(40)
  • 多元回归预测 | Matlab主成分分析PCA降维,BP神经网络回归预测。PCA-BP回归预测模型

    效果一览 文章概述 多元回归预测 | Matlab主成分分析PCA降维,BP神经网络回归预测。PCA-BP回归预测模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

    2024年02月13日
    浏览(48)
  • 层次分析法(matlab实现)

           在决策理论中,层次分析法是一种以 数学 和 心理学 为基础,组织和分析复杂决策的结构化技术,它代表了一种 量化决策标准权重 的准确方法,通过成对比较,利用个别专家的经验来估计因素的相对大小        在很多情况下,我们对事物的评价,应该多维度的进

    2024年02月09日
    浏览(42)
  • 数学建模———层次分析法及其matlab语法,函数和代码实现

    层次分析法思想登场 建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择那种方案最好,哪位运动员或者员工表现的更优秀。) 评价类问题字眼: 评价的目标是什么? 达到这个目标有那几种方案? 评价准则或指标是什么? 确定权重的方方法——分而治

    2024年02月15日
    浏览(43)
  • 【数学建模学习】matlab实现评价模型——层次分析法(AHP)

    目录 1概述  2算法实现流程 3实例  4matlab实现层次分析法 5计算结果 层次分析法,简称AHP,是评价模型中的一种算法,指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。层次分析法的缺陷在于判断矩阵是主观决定的,

    2024年02月04日
    浏览(54)
  • 【机器学习】主成分分析(PCA)算法及Matlab实现

    【问题引入】 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可

    2024年02月04日
    浏览(50)
  • 层次分析法(MATLAB)

    对之前的学习进行总结,整个比赛下来好像就用到了这个方法,最后也不知道对不对,反正最后还有点赶,就是很懵的那种,对于层次分析话的还是有点了解了,由于是纯小白,有错误的地方希望各位大佬能够指出。 目录 数据提取 归一化处理 判断矩阵 一致性检验  算术平

    2024年02月12日
    浏览(43)
  • 【数据降维-第2篇】核主成分分析(KPCA)快速理解,及MATLAB实现

    一篇介绍了PCA算法的快速理解和应用,本章讲一下KPCA。 KPCA方法与PCA方法一样,是有着扎实的理论基础的,相关理论在论文上以及网络上可以找到大量的材料,所以这篇文章还是聚焦在方法的快速理解以及应用上,此外还会对同学们可能比较关注的参数设置方式进行说明,从

    2024年02月05日
    浏览(85)
  • 数学建模之层次分析法(含MATLAB代码)

    层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是 一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次 分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 基本

    2024年02月01日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包