gpt4 book ai didi

matlab - 使用 PCA 降维 - MATLAB

转载 作者:行者123 更新时间:2023-11-30 09:09:42 24 4
gpt4 key购买 nike

我正在尝试使用 PCA 降低训练集的维数。我遇到了两种方法。

[V,U,eigen]=pca(train_x);
eigen_sum=0;
for lamda=1:length(eigen)
eigen_sum=eigen_sum+eigen(lamda,1);
if(eigen_sum/sum(eigen)>=0.90)
break;
end

end
train_x=train_x*V(:, 1:lamda);

在这里,我简单地使用特征值矩阵来重建训练集,其中较少数量的特征由描述原始集 90% 的主成分确定。

我发现的替代方法几乎完全相同,保存最后一行,更改为:

train_x=U(:,1:lamda);

换句话说,我们将训练集作为原始训练集到某些特征 lamda 的主成分表示。

这两种方法似乎都会产生相似的结果(样本外测试误差),但存在差异,无论差异多么微小。

我的问题是,哪一种方法是正确的?

最佳答案

答案取决于您的数据以及您想要执行的操作。

使用您的变量名称。一般来说,很容易预期 pca 的输出保持

U = train_x * V

但这仅在您的数据标准化时才成立,特别是如果您已经从每个组件中删除了平均值。如果没有,那么可以期待的是

U = train_x * V - mean(train_x * V)

在这方面,您是否想要在处理数据之前删除或维护数据的平均值,取决于您的应用程序。

还值得注意的是,即使在处理之前去除均值,也可能存在一些微小的差异,但会在浮点精度误差左右

((train_x * V) - U) ./ U ~~ 1.0e-15

并且可以安全地忽略此错误

关于matlab - 使用 PCA 降维 - MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com