我正在尝试实现非负矩阵分解,以便为推荐引擎项目找到矩阵的缺失值。我正在使用 nimfa 库来实现矩阵分解。但似乎无法弄清楚如何预测缺失值。该矩阵中的缺失值用 0 表示。
a=[[ 1. 0.45643546 0. 0.1 0.10327956 0.0225877 ]
[ 0.15214515 1. 0.04811252 0.07607258 0.23570226 0.38271325]
[ 0. 0.14433757 1. 0.07905694 0. 0.42857143]
[ 0.1 0.22821773 0.07905694 1. 0. 0.27105237]
[ 0.06885304 0.47140452 0. 0. 1. 0.13608276]
[ 0.00903508 0.4592559 0.17142857 0.10842095 0.08164966 1. ]]
import nimfa
model = nimfa.Lsnmf(a, max_iter=100000,rank =4)
#fit the model
fit = model()
#get U and V matrices from fit
U = fit.basis()
V = fit.coef()
print numpy.dot(U,V)
但是给出的 ans 几乎与 a 相同,我无法预测零值。请告诉我使用哪种方法或任何其他可能的实现以及任何可能的资源。
我想使用这个函数来最小化预测值的错误。
错误=|| a - UV ||_F + c*||U||_F + c*||V||_F
其中 _F 表示 frobenius 范数