0
似乎NMF
R package (v0.22)尚不允許開箱即用的加權非負矩陣分解(WNMF),但歡迎使用自定義算法(p.25 here)。我正在嘗試,但不知道我是否在正確的軌道上。有沒有人已經爲nmf()
實現了自定義算法?任何可以讓我開始使用WNMF的草圖示例? 考慮:NMF中的加權NMF自定義目標函數R
set.seed(0)
X=runif(10) %*% t(runif(5))
X[missing <- X<.05] = 0
W = 1*(!missing)
WNMF忽略的X
零值(通過的W
零映射),並通過逐元素兩側由權重矩陣W
如W.X ~ W.BL
相乘,通過最小化弗羅貝紐斯即近似於X
(或一些其他)規範|W.X - W.BL|
。
UPDATE1: 創建目標函數,但無法弄清楚如何將W
傳遞給它。我猜測method
現在需要採用自定義算法,但在線示例很少。想法是受歡迎的。
WNMF_ObjFn = function(model, target, W, ...) {
sum(W*(target - fitted(model))^2, na.rm=T)
}
library(nmf)
res = nmf(X, rank=2, objective=WNMF_ObjFn, W=W)
Error in fun(y, x, ...) :
unused argument (W = c(1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1))
Timing stopped at: 0 0 0