数学建模(NO.21 主成分分析) |
您所在的位置:网站首页 › 数学建模例题和答案解析 › 数学建模(NO.21 主成分分析) |
主成分分析
一.应用二.数据降维的作用三.一个简单的例子四.主成分分析的思想五.PCA的计算步骤六.例题1讲解七.例题2讲解八.主成分分析用于聚类九.主成分回归十.关于主成分回归的看法
一.应用
主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。 一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化 二.数据降维的作用降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。 在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。 降维具有如下一些优点: 使得数据集更易使用;降低算法的计算开销;去除噪声;使得结果容易理解 三.一个简单的例子例如,某人要做一件上衣要测量很多尺寸,如身长、袖长、胸围、腰围、肩宽、肩厚等十几项指标,某服装厂要生产一批新型服装绝不可能把尺寸的型号分得过多 ?而是从多种指标中综合成几个少数的综合指标,做为分类的型号,利用主成分分析将十几项指标综合成3项指标,一项是反映长度的指标,一项是反映胖瘦的指标,一项是反映特殊体型的指标。 四.主成分分析的思想五.PCA的计算步骤 六.例题1讲解 clear;clc load data1.mat % 主成分聚类 % load data2.mat % 主成分回归 % 注意,这里可以对数据先进行描述性统计 % 描述性统计的内容见第5讲.相关系数 [n,p] = size(x); % n是样本个数,p是指标个数 %% 第一步:对数据x标准化为X X=zscore(x) % matlab内置的标准化函数(x-mean(x))/std(x) %% 第二步:计算样本协方差矩阵 R = cov(X) %%以上两步可合并为下面一步:直接计算样本相关系数矩阵 R = corrcoef(x); disp('样本相关系数矩阵为:') disp(R) %% 第三步:计算R的特征值和特征向量 % 注意:R是半正定矩阵,所以其特征值不为负数 % R同时是对称矩阵,Matlab计算对称矩阵时,会将特征值按照从小到大排列哦 % eig函数的详解见第一讲层次分析法的视频 [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) 经过计算,相关系数矩阵的特征值、相应的特征向量以及贡献率列于下表: 从表中可以看到前三个主成分的累计贡献率达85.9%,因此可以考虑 只取前面三个主成分,它们能够很好地概括原始变量。 写出主成分并简要分析 七.例题2讲解八.主成分分析用于聚类 Spss聚类 聚类效果图 个人觉得,主成分聚类最大的意义就是能帮我们可视化最后的聚类效果,毕竟, 使用主成分是会降低部分信息的。言外之意,只有在指标个数特别多,且指标 之间存在很强的相关性时才用主成分聚类。 九.主成分回归在Stata中回归结果 十.关于主成分回归的看法 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |