【问题引入】
在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。
【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)对二维数据进行降维,并将数据投影到新的一维空间中。
【运行结果】
喜欢我就关注我吧!!!!