3

我有一个基于用户相似性的布尔偏好推荐器。我的数据集本质上包含 ItemId 是用户决定阅读的文章的关系。我想添加第二个数据模型,其中包含 ItemId 是对特定主题的订阅。

我能想到的唯一方法是将两者合并在一起,抵消订阅 ID,这样它们就不会与文章 ID 冲突。对于加权,我考虑放弃布尔偏好设置并引入偏好分数,其中文章子集的偏好分数为 1(例如),订阅子集的偏好分数为 2。

但是,我不确定这是否可行,因为偏好分数与我所追求的权重并不完全相似;它们可能包含一些代表不满意的较低分数的概念。

我必须想象有更好的方法来做到这一点,或者至少对我的计划进行一些调整,使其更符合我的愿望。

4

1 回答 1

4

我认为你以正确的方式思考它。是的,您想要比订阅和文章的简单存在/不存在更具表现力,因为它们的含义有些不同。我建议选择反映其相对频率的权重。例如,如果用户一直阅读 10 万篇文章并进行了 10000 次订阅,那么您可以选择订阅权重为“10”,阅读权重为“1”。

如果您将这些值视为偏好分数,这并不完全有效,原因有很多。如果您使用一种像对待它们一样对待它们的方法,即线性权重,它会更好地工作。

我会向您指出 ALS-WR 算法,它是专门为这种类型的输入设计的。例如:隐式反馈数据集的协同过滤

这在 Mahout 中与ParallelALSFactorizationJob在 Hadoop 上一样实现。虽然需要 Hadoop,但它工作得很好。(虽然我确实在 Mahout 中编写了大部分推荐程序代码,但我不能对此表示赞赏。)

Advertisement: I'm working on commercializing a "next generation" system, evolved from my work in Mahout, as Myrrix. It is an implementation of ALS-WR and is ideal for your kind of input. It's quite easy to download and run, and doesn't need Hadoop.

Given that it may be directly suitable for your problem I don't mind plugging it here.

于 2013-03-29T16:28:49.020 回答