首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >稀疏矩阵R中的快速NMF

稀疏矩阵R中的快速NMF
EN

Stack Overflow用户
提问于 2020-11-24 19:13:13
回答 1查看 452关注 0票数 2

我在寻找一个在R中快速实现稀疏矩阵的NMF方法。

R NMF软件包由许多算法组成,没有一种算法在计算时间上给人留下深刻印象。

NNLM::nnmf()目前在R中似乎是最先进的,特别是method = "scd"loss = "mse",它们是通过顺序坐标下降求解的交替最小二乘实现的。然而,这种方法在非常大的、非常稀疏的矩阵上是非常慢的。

rsparse::WRMF函数非常快,但这是因为A中只有正数才用于WH的逐行计算。

在稀疏矩阵上求解NMF是否有合理的实现?

R中是否有与scikit-learn等价的?请参阅this question

有各种各样的工作函数,如fnnls、R中的tsnnls,没有一个超过nnls::nnls (用Fortran编写)。我一直无法将任何这些函数编码到一个更快的NMF框架中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-02 16:49:44

忘了我甚至发了这个问题,但一年后.

我在RcppEigen中编写了一个非常快速的NMF实现,参见CRAN上的RcppML R包。

代码语言:javascript
复制
install.packages("RcppML")

# for the development version
devtools::install_github("zdebruine/RcppML")

?RcppML::nmf

它至少比NNLM::nnmf快一个数量级,相比之下,RcppML::nmf可以与irlba::irlba SVD的运行时相媲美(尽管它是一种完全不同的算法)。

我已经成功地将我的实现应用于130万个包含26000个基因的单细胞,在一个96%的稀疏矩阵中,在1分钟内进行秩-100分解。我觉得这很合理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64993328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档