矩阵分解java,对于R中的大矩阵,使用ALS的矩阵分解具有非常慢的性能和隐式零...

该博客讨论了在R中使用交替最小二乘(ALS)进行矩阵分解时遇到的性能问题。作者指出,随着矩阵大小的增加,计算速度显著下降。他们分享了当前的实现代码,并询问如何提高效率,特别是考虑到已经在使用多核CPU并利用MKL。尽管尝试了不同的矩阵大小,但较大的矩阵(如nr=2000,nr=5000)导致了长时间的计算。作者寻求关于优化代码或加速矩阵分解的建议。
摘要由CSDN通过智能技术生成

我想在R中使用交替最小二乘(ALS)执行矩阵分解 . 虽然代码对于小矩阵工作正常,但对于较大的矩阵来说,这是令人难以置信的慢 . 我将不胜感激加快这一进程 . 我使用的是RRopen 8.01,因此它已经使用 MKL 在多个内核上运行 .

我正在使用二进制矩阵作为隐式反馈矩阵 . 此外,我实现了一个加权矩阵 .

## Matrix Factorization with Alternating Least Squares

## R is u * v binary matrix,

## W is u * v weighting matrix

## U is u * k user feature matrix,

## V is v * k item feature matrix

## u is the number of users,

## v is the number of items,

## k is the number of features

## iter is the number of iterations

这是我做的:

# implicit feedback data matrix.

R

W

我设置以下参数:

k

its

为用户和项目创建初始矩阵

# initial users matrix.

U

# initial items matrix.

V

现在我用ALS执行矩阵分解

w.err

for(iter in 1:its) {

# update users

for(i in 1:nrow(R)) {

U[i,]

as.vector(V %*% as.vector(t(W[i,])%*% diag(R[i,])))))

}

# update items

for(j in 1:ncol(R)){

V[,j]

t(U) %*% (diag(R[,j]) %*% W[, j]))

}

R.hat

w.err[iter]

}

R.hat 是所需的结束矩阵 . w.err 只是对迭代错误的控制 . 很适合绘图:)

它的代码工作正常 . 就在我增加 R (和 W )中的行数和列数时,性能显着下降 . 虽然它可以说是 nr=200, nr=500 ,但它已经在8核2.67 Ghz机器上运行了两个小时 nr=2000, nr=5000 (还没有完成) .

我没有使用 NMF 或 NMFN 包,因为负值是可能的,因此它不是非负MF . 有谁知道如何提高性能?也许我只是愚蠢的我的代码是无稽之谈,如果你能指出改进,我会很高兴 .

我寻找类似的问题,但找不到一个 . 也许我只是忽略了它 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值