我有一个基于用户相似性的布尔偏好推荐器。我的数据集本质上包含关系,其中 ItemId 是用户决定阅读的文章。我想添加第二个数据模型,其中 ItemId 是对特定主题的订阅。
我能想到的唯一方法是将两者合并在一起,偏移订阅 ID,这样它们就不会与文章 ID 冲突。对于加权,我考虑放弃布尔偏好设置并引入偏好分数,其中文章子集的偏好分数为 1(例如),订阅子集的偏好分数为 2。
然而,我不确定这是否有效,因为偏好分数并不完全类似于我所追求的权重;它们可能包含一些代表不满意的较低分数的概念。
我必须想象有更好的方法来做到这一点,或者至少对我的计划进行一些调整,使其更符合我想要的方式。
我认为你的想法是正确的。是的,对于订阅和文章,您想要比简单的存在/不存在更具表现力,因为它们的含义有些不同。我建议选择反映其相对频率的权重。例如,如果用户一直阅读 100K 篇文章,并进行了 10000 次订阅,那么您可以选择订阅权重为“10”,阅读权重为“1”。
如果您将这些值视为偏好分数,则由于多种原因,这不太有效。如果您使用一种按其本来面目对待它们的方法,即线性权重,效果会更好。
我会向您介绍 ALS-WR 算法,它是专门为此类输入设计的。例如:隐式反馈数据集的协同过滤 http://www2.research.att.com/~yifanhu/PUB/cf.pdf
这在 Mahout 中实现为ParallelALSFactorizationJob
在 Hadoop 上。尽管需要 Hadoop,但它工作得很好。 (虽然我确实在 Mahout 中编写了大部分推荐代码,但我不能因此而获得荣誉。)
广告:我正在致力于将“下一代”系统商业化,该系统是由我在 Mahout 的工作演变而来的,Myrrix http://myrrix.com/。它是 ALS-WR 的实现,非常适合您的输入类型。这很容易下载并运行 http://myrrix.com/quick-start/,并且不需要 Hadoop。
鉴于它可能直接适合您的问题,我不介意将其插入此处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)