gpt4 book ai didi

R - 使用 SVD 获取特征数量减少的矩阵

转载 作者:行者123 更新时间:2023-12-04 10:13:10 27 4
gpt4 key购买 nike

我正在使用带有 R 的 SVD 包,我能够通过将最低奇异值替换为 0 来降低矩阵的维数。但是当我重新组合矩阵时,我仍然拥有相同数量的特征,我找不到如何有效地删除源矩阵中最无用的特征,以减少其列数。

例如我目前正在做的事情:

这是我的源矩阵 A:

  A B C D
1 7 6 1 6
2 4 8 2 4
3 2 3 2 3
4 2 3 1 3

如果我做:
s = svd(A)
s$d[3:4] = 0 # Replacement of the 2 smallest singular values by 0
A' = s$u %*% diag(s$d) %*% t(s$v)

我得到的 A' 具有相同的尺寸(4x4),仅用 2 个“组件”重建,并且是 A 的近似值(包含的信息少一点,可能更少的噪音等):
      [,1]     [,2]      [,3]     [,4]
1 6.871009 5.887558 1.1791440 6.215131
2 3.799792 7.779251 2.3862880 4.357163
3 2.289294 3.512959 0.9876354 2.386322
4 2.408818 3.181448 0.8417837 2.406172

我想要的是一个具有较少列但再现不同行之间距离的子矩阵,如下所示(使用 PCA 获得,我们称之为 A''):
        PC1        PC2
1 -3.588727 1.7125360
2 -2.065012 -2.2465708
3 2.838545 0.1377343 # The similarity between rows 3
4 2.815194 0.3963005 # and 4 in A is conserved in A''

这是使用 PCA 获取 A'' 的代码:
p = prcomp(A)
A'' = p$x[,1:2]

最终目标是减少列数,以加快大型数据集上的聚类算法。

如果有人可以指导我,请提前感谢您:)

最佳答案

我会检查this chapter on dimensionality reductionthis cross-validated question .这个想法是可以使用更少的信息重建整个数据集。它不像 PCA,因为您可能只选择保留 10 个主成分中的 2 个。

当您进行上述修剪时,您实际上只是去除了数据的一些“噪音”。数据仍为相同维度。

关于R - 使用 SVD 获取特征数量减少的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23819596/

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