我们有关于用户在我们的应用程序中喜欢什么的信息,我们希望向类似的用户推荐内容,甚至是那些可能没有明确地喜欢某个特定内容但与那些明确喜欢该内容的用户一样的用户。
我计划使用交替最小二乘的隐式反馈变化,使用Apache来实现推荐系统,这将为我找到我可以针对的其他用户。
其中一个调优参数是用于非负矩阵因式分解的布尔标志nonnegative。
我将计算每个用户和标签的喜欢数,这样我就不会有负值了。我可以说nonnegative=true吗,或者它是否意味着完全不同的东西。我的理解是,非负约束是对两个矩阵中的值的约束,该算法将将我的原始矩阵分解到其中,但我不知道这些值对于我的场景是否是非负的。
参考文献:火花ALS算法.不完全是因为有另一个API,但是对于这个问题来说已经足够了。
发布于 2015-12-11 10:13:12
是的,参数nonnegative用于约束两个矩阵的值:用户特性和项特性在使用ALS算法优化时不具有低于零的值。它驱动求解器使用: CholeskySolver或NNLS(共轭梯度)。两者都是在Spark中实现的。
当然,标志与输入相连接。如果您的评级低于零,并且直接将所有数据泵入模型,则在进行nonnegative约束检查时,对负数值的预测将有些困难:-)
在你的例子中,重要的是你有隐含的反馈。因此,您应该设置适当的标志或使用trainImplicit方法。找出nonnegative标志对您的情况最有效的最简单方法是将其作为另一个需要交叉验证检查的超级参数进行威胁。对我来说,在验证的同时测量模型是一个更关键的方面。如果你正在尝试做最好的-N的建议,去排名的措施,如召回@N,MRR@N或AUC。
https://datascience.stackexchange.com/questions/9316
复制相似问题