如何选择pca之后最相关的前100个特征(子集)?

时间:2013-04-07 17:19:11

标签: matlab data-mining

我在63 * 2308矩阵上进行PCA并获得分数和系数矩阵。得分矩阵为63 * 2308,系数矩阵的尺寸为2308 * 2308。

如何提取前100个最重要的功能的列名,以便我可以对它们进行回归?

3 个答案:

答案 0 :(得分:4)

PCA应该为您提供一组特征向量(您的系数矩阵)和一个特征值向量(1 * 2308),通常称为lambda)。您可能会在matlab中使用不同的PCA函数来获取它们。

特征值表示每个特征向量解释的数据量。选择特征的简单方法是选择具有最高特征值的100个特征。这为您提供了一组功能,可以解释数据中的大部分差异。

如果你需要证明你的写作方法,你实际上可以计算出每个特征向量解释的方差量,并且例如解释为95%的方差。

请记住,仅基于特征值进行选择可能与对回归最重要的特征集不对应,因此如果您没有获得预期的性能,可能需要尝试不同的特征选择方法,例如递归特征选择。我建议使用谷歌学者找几篇相似的文章,看看他们使用的是什么方法。


使用PCA获取前100个主要组件的快速matlab示例。

[eigenvectors, projected_data, eigenvalues] = princomp(X);
[foo, feature_idx] = sort(eigenvalues, 'descend');
selected_projected_data = projected(:, feature_idx(1:100));

答案 1 :(得分:0)

你试过

吗?
B = sort(your_matrix,2,'descend');
C = B(:,1:100);

答案 2 :(得分:0)

小心!

只有63个观察值和2308个变量,您的PCA结果将毫无意义,因为数据未指定。你应该至少(经验法则)尺寸* 3观察。

通过63次观测,您最多可以定义62维超空间!