我正准备使用 R 对我的数据进行稀疏分析。我试图从一个特别的例子开始,但重建结果真的很差。我想知道我是否在代码中犯了任何错误,或者我是否遇到了该方法的任何内在缺陷?
数据是临时的:
> prod
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 2
[2,] 1 2 1 2 3
[3,] 0 1 0 1 1
[4,] 0 0 1 1 1
[5,] 0 1 0 1 1
我用这个
rst = nsprcomp(prod, retx=T, nneg=T)
执行非负稀疏 PCA。
我像这样重建数据:
recon = rst$x %*% t(rst$rotation) + matrix(1,5,1) %*% rst$center
最后的结果真的很差:
> abs(prod - recon)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.386523767 0.2432819 0.1186152 0.3535836 0.3770144
[2,] 0.184944985 1.1214659 0.6230812 1.2173770 1.8819417
[3,] 0.096185913 0.4301642 0.2249522 0.4825192 0.6942987
[4,] 0.009206957 0.5044193 0.2917920 0.6059221 0.8703587
[5,] 0.096185913 0.4301642 0.2249522 0.4825192 0.6942987
任何想法或评论表示赞赏。
编辑
该软件包称为nsprcomp