傻瓜攻略(一)

您所在的位置:网站首页 mat2huff函数代码matlab 傻瓜攻略(一)

傻瓜攻略(一)

2023-07-14 04:58| 来源: 网络整理| 查看: 265

主成分分析(收藏的能不能顺手点个赞啊,嘿嘿)

主成分分析法(PCA)是一种高效处理多维数据的多元统计分析方法,将主成分分析用于多指标(变量)的综合评价较为普遍。笔者自从本科学习数学建模就开始接触该方法,但是一直没有系统地整理过,借这个机会总结一下,以备不时之需。

该方法的基本思想是运用较少的变量去解释原始数据中的大部分变异,通过对原始数据相关矩阵内部结构关系的分析和计算,产生一系列互不相关的新变量。根据需要从中选取比原始变量个数少的几个新变量,这些新的变量就是所谓的主成分,它们能够充分解释原始数据的变化。因此,主成分分析法本质上是一种降维方法,也多被用于高维数据的降维处理。

主成分分析的步骤:原始数据(X1,X2,⋯⋯, Xn)标准化,建立变量的相关系数阵,计算特征根和相应的特征向量,确定主成分的个数k(k1)); %num为选取的主成分的个数,这里选取特征值大于1的 df=data*vec2(:,1:num); %计算各个主成分的得分 tf=df*rate(1:num)/100; %计算综合得分 [stf,ind]=sort(tf,'descend'); %把得分按照从高到低的次序排列 stf=stf'; ind=ind'; %stf为得分从高到低排序,ind为对应的样本编号 输出结果分析

代码输出的结果不少,下面按照主成分分析的步骤进行说明。可以结合运行结果来看这部分,表格不少就不贴了。

首先是数据标准化,主成分分析的结果直接受指标量纲的影响。由于各指标的单位可能不一样,因此进行量化评分得到的数据值大小也是不同的。如埋深的单位是米,相应指标在0.8到2.0之间,而人口密度指标的数据值在280左右,这样会导致分析结果的不准确。因此数据的标准化是主成分分析的前提条件,所以实际中可以先把各指标的数据标准化。标准化结果保存在data中。

完成数据的标准化后,对所得结果计算得到标准化数据的相关系数矩阵(相关系数矩阵保存在r中)。相关系数代表了不同指标之间的相关程度,绝对值越大代表相关性越高。相关性较高的变量之间存在信息上的重叠,信息重叠在很大程度上会影响评价结果的客观性,因此相关性矩阵可以证明进行主成分分析的必要性。

由相关系数矩阵可以计算出特征值与特征向量,计算得到与指标数量n相等的n个待选主成分。n个特征值代表了n个主成分对最终评价结果的贡献程度,特征值保存在lamda中,从大到小排列。主成分的特征向量为n*n的矩阵保存在vec1中,表示主成分和相应的原始数据的相关关系,其绝对值越大,则主成分对该指标的代表性越大。为了方便计算,修改特征向量的正负号,使得每个特征向量的分量和为正,即为最终的特征向量,特征向量保存在vec2中,每一列代表一个特征向量,对应一个主成分。 (待选择的)主成分——特征值——贡献率的对应情况见下表。 在这里插入图片描述

在主成分的选取上,对应的特征值大小是一个重要衡量因素,普遍的做法是保存特征值要大于1的主成分,舍弃特征值小于1 的主成分,因此最终的主成分个数会小于指标个数n。也可以根据贡献度大小,累计贡献度达到某个程度,不同标准有70%以上,85%以上或其他。这里选取所有特征值大于1的主成分,选取的主成分个数保存在num中,一共有3个。第1主成分对应的就是vec2中的第一列特征向量,以此类推,具体见下表。 在这里插入图片描述

将特征贡献率作为系数,对应的指标作为自变量,可以得出每一个主成分的计算表达式。将标准化数据Xi代入表达式,就可以得到对应的主成分值。形如(关于下面公式的生成,见文章MATLAB编写多元一次方程) 在这里插入图片描述 将特征值lamda作为系数,对应的主成分作为自变量,可以确定综合评价值的表达式,F=L1F1+L2F2+……+LkFk,即 在这里插入图片描述 带入之前求得的主成分值,得到每个样本的综合评价值(保存在tf中)。将综合评价值从高到低排序(保存在stf中),并输出对应的样本编号(保存在ind中)。

其他实现方式(收藏的能不能顺手点个赞啊,嘿嘿)

最近笔者还简单研究了一下Python实现主成分分析(PCA)降维的代码,和matlab相比各有特点,感兴趣的同学可以了解一下。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3