该博客为个人学习清风建模的学习笔记,代码全部摘自清风老师,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili
目录
名称 | 重要性 | 难度 |
主成分分析 | ★★★★ | ★★★★ |
1模型引入
1.1问题的提出
在实际问题研究中,多变量问题是经常会遇到的。变量太多,无疑会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,人们会很自然地想到,能否在相关分析的基础上, 用较少 的新变量代替原来较多的旧变量,而且使这些较少的新变量尽可能多地 保留原来变量所反映的信息?事实上,这种想法是可以实现的,主成分分析方法就是综合处理这种问题的一种强有力的工具。主成分分析是把原来多个变量划为少数几个综合指标的一种统计 分析方法。从数学角度来看,这是一种 降维 处理技术。
1.2数据降维的作用
降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。降维具有如下一些优点: 使得数据集更易使用; 降低算法的计算开销; 去除噪声; 使得结果容易理解。
1.3主成分分析的思想
1.4数学证明
参考教材:《应用多元统计分析》王学民PCA 详细的证明过程可看视频: https://www.bilibili.com/video/av32709936(证明过程需要一定的多元统计基础和较强的线性代数基础)
2PCA计算步骤
2.1矩阵标准化
clear;clc
load data1.mat % 导入数据
% 注意,这里可以对数据先进行描述性统计
[n,p] = size(x); % n是样本个数,p是指标个数
%% 第一步:对数据x标准化为X
X=zscore(x); % matlab内置的标准化函数(x-mean(x))/std(x)
2.2计算标准化矩阵的协方差矩阵
%% 第二步:计算样本协方差矩阵
R = cov(X);
2.3计算协方差矩阵的特征值和特征向量
%% 第三步:计算R的特征值和特征向量
% 注意:R是半正定矩阵,所以其特征值不为负数
% R同时是对称矩阵,Matlab计算对称矩阵时,会将特征值按照从小到大排列哦
% eig函数的详解见第一讲层次分析法的视频
[V,D] = eig(R); % V 特征向量矩阵 D 特征值构成的对角矩阵
2.4计算主成分贡献率和累积贡献率
%% 第四步:计算主成分贡献率和累计贡献率
lambda = diag(D); % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
lambda = lambda(end:-1:1); % 因为lambda向量是从小大到排序的,我们将其调个头
contribution_rate = lambda / sum(lambda); % 计算贡献率
cum_contribution_rate = cumsum(lambda)/ sum(lambda); % 计算累计贡献率 cumsum是求累加值的函数
2.5写出主成分
%% 计算我们所需要的主成分的值
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
2.6分析
1.根据系数分析主成分代表的意义
对于某个主成分而言,指标前面的系数越大,代表该指标对于该主成分的影响越大。
2.利用主成分的结果进行后续的分析
(1)主成分得分:可用于评价类模型吗?(千万别用!!!)
(2)主成分可用于聚类分析(方便画图)
(3)主成分可用于回归分析
在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平,其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释。主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义 那么清楚、确切,这是变量降维过程中不得不付出的代价。 因此,提取的主成分个数m 通常应明显小于原始变量个数 p (除非 p 本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。 如果原始变量之间具有较高的相关性,则前面少数几个主成分的累计贡献率通常就能达到一个较高水平,也就是说,此时的累计贡献率通常较易得到满足。主成分分析的困难之处主要在于要能够给出主成分的较好解释,所 提取的主成分中如有一个主成分解释不了,整个主成分分析也就失败了。主成分分析是变量降维的一种重要、常用的方法,简单的说,该方法要应用得成功,一是靠原始变量的合理选取,二是靠“运气”。—— 参考教材:《应用多元统计分析》王学民
3例题
注意:本题给我们的数据直接就是样本相关系数矩阵,一般来说,建模的时候,得到的数据是最原始的数据(每一列是指标,每一行是样本)。参考教材:《应用多元统计分析》王学民
3.1计算关键变量
3.2写出主成分并分析
4主成分分析滥用
5主成分用于聚类
聚类看博主其他博客:聚类模型★★★★-CSDN博客
6主成分用于回归
主成分回归可用来解决多重共线性的问题。
问题 1 :之前学过逐步回归,逐步回归也可以用来解决多重共线 性问题,我该用逐步回归还是今天学习的主成分分析呢?如果能够很好的解释清楚主成分代表的含义,那么我建议在正文中既用主成分分析,又用逐步回归(多分析点没啥坏处,只要能保证不分析错就行),如果解释不清楚,那么还是用逐步回归吧。问题 2 :主成分回归后,需要将原来的变量带回到回归方程吗?觉得没必要,要是你带回去了,那和普通的回归有什么区别呢。主成分的核心作用就是降维,带回去了维度也没降下来呀。