我认为你以正确的方式思考它。是的,您想要比订阅和文章的简单存在/不存在更具表现力,因为它们的含义有些不同。我建议选择反映其相对频率的权重。例如,如果用户一直阅读 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.