gpt4 book ai didi

machine-learning - 一个标签上的 Vowpal Wabbit 矩阵分解

转载 作者:行者123 更新时间:2023-11-30 09:35:18 26 4
gpt4 key购买 nike

我想要的是一个网络推荐系统,比如“相关产品”。根据用户购买的商品,我想根据其他用户购买的商品查找相关商品。我按照 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

最佳答案

问题的简短回答:

要获得类似于“概率”的预测,您可以使用 --loss_function logistic --link logistic 。请注意,在这种单标签设置中,您的概率风险很快就会趋向于 1.0(即变得毫无意义)。

附加说明:

  • 使用单一标签是有问题的,因为目标没有分离。最终学习者会将所有预测都固定为 1.0。为了解决这个问题 - 建议使用 --noconstant ,使用强正则化,降低学习率,避免多次传递等。(IOW:任何避免过度拟合单个标签的东西)
  • 更好的是:添加用户尚未购买/点击的示例,这些示例应该足够多,这将使您的模型更加稳健和有意义。
  • vw 中有更好的矩阵分解实现(大型模型的 IO 更快、更轻)。检查--lrq选项和 demo/movielens 下的完整演示在源代码树中。
  • 您应该将训练集直接传递给 vw避免Useless use of cat

关于machine-learning - 一个标签上的 Vowpal Wabbit 矩阵分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44702005/

26 4 0