主成分分析
(Principal Component Analysis,PCA)
数据中心化: 首先,对数据进行中心化操作,不改变原始样本的布局,即将每个特征的均值减去相应特征的均值,使数据的均值为零,这有助于消除原始数据的平移影响。
协方差矩阵: PCA的核心思想是通过计算协方差矩阵,找到数据中的主成分,即数据中方差最大的方向。
特征值和特征向量: 对协方差矩阵进行特征值分解,得到特征值和特征向量。特征向量构成了主成分,而特征值表示数据在这些主成分方向上的方差。
降维: 选择特征值较大的特征向量,对应的维度即为主成分,可以将数据投影到这些主成分上,实现降维。
线性降维:PCA是一种线性降维方法,只能捕捉数据中的线性结构。
全局性:PCA通过考虑整体方差来选择主成分,因此可能无法很好地捕捉局部的非线性结构。
非线性映射: 通过核技巧,KPCA将原始数据映射到一个高维的特征空间,使得在这个空间中数据的非线性结构变得线性可分。这使得在高维空间中进行PCA成为可能。
主成分提取: 在高维空间中,KPCA通过找到数据中的主成分来完成降维。这些主成分对应于高维空间中的方差最大的方向。
降维: KPCA将数据映射到高维空间,然后选择其中最重要的主成分,从而实现了在原始数据空间中的降维效果。这有助于保留数据中的非线性结构。
非线性映射:KPCA能够处理包含非线性结构的数据,使得在高维空间中进行线性分析成为可能。这对于一些实际问题,如图像识别和模式识别,非常有用。
保留非线性结构:与传统PCA相比,KPCA更能够保留数据中的非线性结构,因此在处理非线性问题时通常能够提供更好的性能。
核函数的选择:KPCA的性能很大程度上取决于选择的核函数。不同的核函数适用于不同类型的数据,因此在应用KPCA时需要仔细选择适当的核函数。
计算复杂度:由于涉及高维空间的计算,KPCA的计算复杂度相对较高。这可能在处理大规模数据集时成为一个挑战。
为了便于新手小白上手,本程序还支持将特征值、贡献率以及
PCA降维后的数据 KPCA降维后的数据
写进了Excel表中,方便大家套用。
部分程序:
% 特征值排序 % 来自公众号《创新优化及预测代码》
[sortedEigenvalues, idx] = sort(diag(D), 'descend');
%% 提取前5个主成分
numComponents = 5;
topComponents = V(:, idx(1:numComponents));
% 通过PCA降维
reducedData = centeredData * topComponents;
% 计算每个主成分的贡献率
contributionRatio = sortedEigenvalues / sum(sortedEigenvalues);
% 计算累积贡献率
cumulativeContribution = cumsum(contributionRatio);
%% 来自公众号《创新优化及预测代码》
%% 记录数据
% 将特征值、贡献率和累积贡献率写入Excel文件
xlswrite('PCA降维后的数据.xlsx', reducedData, 'Sheet1');
xlswrite('主成分的特征值.xlsx', sortedEigenvalues(1:numComponents), 'Sheet1');
xlswrite('主成分的贡献率.xlsx', contributionRatio(1:numComponents), 'Sheet1');
xlswrite('主成分的累计贡献率.xlsx', cumulativeContribution(1:numComponents), 'Sheet1');
欢迎感兴趣的小伙伴点击左下角“阅读原文”或上方链接获得完整版代码哦~,关注小编会继续推送更有质量的学习资料、文章程序代码~