我所追求的是网络的推荐系统,类似于“相关产品”。根据用户购买的商品,我希望根据其他用户购买的内容查找相关商品。我已经按照MovieLens教程(https://github.com/JohnLangford/vowpal_wabbit/wiki/Matrix-factorization-example)制作了推荐系统。
在上面的例子中,用户给了电影一个分数(1-5)。然后,模型可以预测用户将给出特定项目的分数。
另一方面,我的数据只知道用户喜欢什么。我不知道他们不喜欢什么或者他们喜欢什么。所以我尝试在所有条目上发送1作为值,但这只给了我一个模型,在每次预测时返回1。
关于如何构建数据的任何想法,以便我可以预测用户对0到1之间的项目的可能性?
示例数据:
1.0 |user 1 |item 1
1.0 |user 1 |item 2
1.0 |user 2 |item 2
1.0 |user 2 |item 3
1.0 |user 3 |item 1
1.0 |user 3 |item 3
训练命令:
cat test.vw | vw /dev/stdin -b 18 -q ui --rank 10 --l2 0.001 --learning_rate 0.015 --passes 20 --decay_learning_rate 0.97 --power_t 0 -f test.reg --cache_file test.cache
答案 0 :(得分:2)
获得类似于"概率的预测"你可以使用--loss_function logistic --link logistic
。请注意,在此单标签设置中,您的概率风险会迅速趋于1.0(即变得毫无意义)。
--noconstant
,使用强正则化,降低学习率,避免多次通过等。(IOW:避免过度拟合单个标签的任何内容)vw
中有更好的矩阵分解实现(对于大型模型,IO更快,更轻)。检查源代码树中--lrq
下的demo/movielens
选项和完整演示。vw
以避免Useless use of cat