【问题引入】
在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。
【PCA原理】PCA即主成分分析,是用一个超平面对所有样本进行恰当表达的方法,思想是将n维特征映射到k维上(k 【PCA算法步骤】
注:这里除或不除样本数量N或N-1,其实对求出的特征向量没有影响。
【性质】
【主程序代码】
%%
clear all;
close all;
% 生成一些样本数据
N = 100; % 样本数量
D = 2; % 数据维度
X = randn(N,D)*0.5 + repmat([2, 3], N, 1); % 生成高斯分布的数据
% 中心化数据
mu = mean(X);
X = X - repmat(mu, size(X,1), 1);
% 计算协方差矩阵
C = (X' * X) / (N-1);
% 计算特征向量和特征值
[V, D] = eig(C);
% 将特征向量按特征值从大到小排序
[~, I] = sort(diag(D), 'descend');
V = V(:,I);
% 选取前k个特征向量
k = 1;
W = V(:,1:k);
% 将数据投影到新的空间中
Y = X*W;
% 可视化结果
figure;
scatter(X(:,1), X(:,2), 'filled', 'MarkerFaceColor', 'b');
hold on;
quiver(mu(1), mu(2), W(1), W(2), 'r', 'LineWidth', 2);
xlabel('X1');
ylabel('X2');
title('Principal Component Analysis (PCA)');
【程序分析】
这个程序演示了如何使用主成分分析(PCA)对二维数据进行降维,并将数据投影到新的一维空间中。
【运行结果】

喜欢我就关注我吧!!!!
