【发布时间】:2016-01-31 03:53:21
【问题描述】:
我正在尝试实现非负矩阵分解,以便为推荐引擎项目找到矩阵的缺失值。我正在使用 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 范数
【问题讨论】:
-
你想用什么方法来预测零值?意思是?频率?
-
我现在已经编辑了问题。
-
推荐引擎的整个想法是计算这些缺失值。我对 nimfa 不熟悉,但您是否必须了解框架用于计算推荐的背后的理论?
-
我已经阅读了许多与此相关的研究论文。但似乎无法弄清楚如何实现这一点以预测缺失值。
-
我否决了这个问题,因为它实际上缺乏研究。在不了解所用框架的情况下,我所做的第一件事是检查它的官方文档。 (这也被很好地引用了)似乎 Lsnmf 方法用于为每个子问题创建一个使用投影梯度的交替非负最小二乘矩阵分解方法。这样一个起点就设定好了。
标签: python numpy sparse-matrix recommendation-engine matrix-factorization