在 Matlab 中使用 PCA 降维

机器算法验证 机器学习 主成分分析 matlab
2022-04-17 10:45:56

我有一个152×27578矩阵,152样品和27578特征,我在 Matlab 中使用 PCA 函数进行降维。

X = load(dataset);
coeff = pca(X);

它产生了一个27578×151矩阵。但我不明白它到底在产生什么,我无法理解下一步该做什么。任何人都可以帮助我理解吗?我的主要目标是减少原始矩阵的维度。

2个回答

如果您键入help pca,您将看到有关该功能的大量信息。

如果只输出一个参数,它将返回主系数,有时称为载荷。27578×151您收到的矩阵包含第一行中的第一个加载,第二行中的第二个,依此类推。

如果你要求两个输出,你会得到

[V, U] = pca(X);

其中 V 包含载荷,U 包含得分值。您通过 重建输入数据U*V'

为了执行降维,您必须选择n两个矩阵的第一个分量为U(:, 1:n)V(:, 1:n)并执行近似重建为U(:, 1:n)*V(:, 1:n)'

PCA 的输出是主成分矩阵。因此,该矩阵包含一组新信号,但现在这些组件根据它们捕获的数据集方差的多少进行排序。矩阵中的第一个主成分描述了与捕获最少coeff(1,:)的最后一个成分的最大方差。coeff(27578,:)所以你只需要选择k您希望将新输入减少到这样的尺寸coeff(1:k,:)

这里建议的一种方法是选择第一个k仍然捕获数据集 99% 的方差的组件。因此,您将减少维度输入,但仍能很好地描述您的数据。