用于降维 MATLAB 的 PCA
PCA for dimensionality reduction MATLAB
我有一个大小为 [4096 x 180] 的特征向量,其中 180 是样本数,4096 是每个样本的特征向量长度。
我想使用 PCA 降低数据的维度。
我尝试使用 MATLAB 的内置 pca 函数 [V U]=pca(X)
并通过 X_rec= U(:, 1:n)*V(:, 1:n)'
重构数据,n
是我选择的维度。 returns 一个 4096 x 180 的矩阵。
现在我有3个问题:
- 如何获取降维?
- 当我将
n
设为 200 时,随着矩阵维数的增加,它给出了一个错误,这让我假设我们不能减少小于样本大小的维数。这是真的吗?
- 如何找到合适的降维数?
我必须使用降维特征集来进一步分类。
如果有人能提供详细的 pca 代码步骤解释,我将不胜感激。我看过很多地方,但我的困惑仍然存在。
您可能需要参考Matlab example来分析城市数据。
这里是一些简化的代码:
load cities;
[~, pca_scores, ~, ~, var_explained] = pca(ratings);
这里,pca_scores
是 pca 分量,每个分量在 var_explained
中具有各自的方差。您不需要在 运行 宁 pca
之后进行任何显式乘法运算。 Matlab 会直接给你组件。
在您的情况下,考虑数据 X
是一个 4096-by-180
矩阵,即您有 4096
个样本和 180
个特征。您的目标是降低维度,使您拥有 p
个特征,其中 p < 180
。在 Matlab 中,您可以简单地 运行 以下
p = 100;
[~, pca_scores, ~, ~, var_explained] = pca(X, 'NumComponents', p);
pca_scores
将是一个 4096-by-p
矩阵,var_explained
将是一个长度为 p
的向量。
回答您的问题:
- 如何获得降维? 我上面的例子,
pca_scores
是你的降维数据。
- 当我将 n 设为 200 时,随着矩阵维数的增加,它给出了一个错误,这让我假设我们不能减少小于样本大小的维数。这是真的? 不能使用 200,因为缩小后的尺寸必须小于 180。
- 如何找到合适的降维数? 您可以通过检查
var_explained
向量来做出此决定。通常,您希望保留大约 99% 的特征差异。 您可以阅读更多相关信息 here。
我有一个大小为 [4096 x 180] 的特征向量,其中 180 是样本数,4096 是每个样本的特征向量长度。
我想使用 PCA 降低数据的维度。
我尝试使用 MATLAB 的内置 pca 函数 [V U]=pca(X)
并通过 X_rec= U(:, 1:n)*V(:, 1:n)'
重构数据,n
是我选择的维度。 returns 一个 4096 x 180 的矩阵。
现在我有3个问题:
- 如何获取降维?
- 当我将
n
设为 200 时,随着矩阵维数的增加,它给出了一个错误,这让我假设我们不能减少小于样本大小的维数。这是真的吗? - 如何找到合适的降维数?
我必须使用降维特征集来进一步分类。
如果有人能提供详细的 pca 代码步骤解释,我将不胜感激。我看过很多地方,但我的困惑仍然存在。
您可能需要参考Matlab example来分析城市数据。
这里是一些简化的代码:
load cities;
[~, pca_scores, ~, ~, var_explained] = pca(ratings);
这里,pca_scores
是 pca 分量,每个分量在 var_explained
中具有各自的方差。您不需要在 运行 宁 pca
之后进行任何显式乘法运算。 Matlab 会直接给你组件。
在您的情况下,考虑数据 X
是一个 4096-by-180
矩阵,即您有 4096
个样本和 180
个特征。您的目标是降低维度,使您拥有 p
个特征,其中 p < 180
。在 Matlab 中,您可以简单地 运行 以下
p = 100;
[~, pca_scores, ~, ~, var_explained] = pca(X, 'NumComponents', p);
pca_scores
将是一个 4096-by-p
矩阵,var_explained
将是一个长度为 p
的向量。
回答您的问题:
- 如何获得降维? 我上面的例子,
pca_scores
是你的降维数据。 - 当我将 n 设为 200 时,随着矩阵维数的增加,它给出了一个错误,这让我假设我们不能减少小于样本大小的维数。这是真的? 不能使用 200,因为缩小后的尺寸必须小于 180。
- 如何找到合适的降维数? 您可以通过检查
var_explained
向量来做出此决定。通常,您希望保留大约 99% 的特征差异。 您可以阅读更多相关信息 here。