对于R中的大型矩阵,带ALS的矩阵分解具有非常缓慢的隐式零性能

对于R中的大型矩阵,带ALS的矩阵分解具有非常缓慢的隐式零性能,r,performance,matrix,alternating,matrix-factorization,R,Performance,Matrix,Alternating,Matrix Factorization,我想在R中使用交替最小二乘法(ALS)执行矩阵分解。虽然代码对小矩阵运行良好,但对大矩阵运行速度却非常慢。如果有人能帮助我加快进程,我将不胜感激。我使用的是RRopen 8.01,因此它已经使用MKL在多个内核上运行 我使用一个二进制矩阵作为隐式反馈矩阵。此外,我还实现了一个加权矩阵 ## Matrix Factorization with Alternating Least Squares ## R is u * v binary matrix, ## W is u * v weighting

我想在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 <- matrix(nr=2, nc=5, data=rbinom(2*5,1, prob=.2))
W <- matrix(nr=2, nc=5, data=rbinom(2*5,7, prob=.2))
#隐式反馈数据矩阵。

R是否可以
Rcpp
加快进程?我还没有用过
Rccp
。你怎么认为?
k <- 20
its <- 10
# initial users matrix.
U <- matrix(nr= nrow(R), nc=k, data=5 *rnorm(nrow(R)*k))
# initial items matrix.
V <- matrix(nr=k, nc=ncol(R), data=5* rnorm(ncol(R)*k))
w.err <- NULL
for(iter in 1:its) {
  # update users
  for(i in 1:nrow(R)) {
    U[i,] <- t(solve(V %*% (diag(R[i,])%*% t(V)) + 0.1 * diag(k),
                     as.vector(V %*% as.vector(t(W[i,])%*% diag(R[i,])))))
  }
  # update items
  for(j in 1:ncol(R)){
    V[,j] <- solve(t(U) %*% (diag(R[,j]) %*% U) + 0.1 * diag(k),
                   t(U) %*% (diag(R[,j]) %*% W[, j]))
  }
  R.hat <- U %*% V
  w.err[iter] <- sum((R* (W-U%*%V))^2) 
}