编写基本推荐引擎

ndg*_*ndg 12 recommendation-engine

我正在寻找一个基本的推荐引擎,它将获取并存储一个数字ID列表(与书籍相关),将这些ID与具有大量相同ID的其他用户进行比较,并根据这些查找推荐其他书籍.

经过一段谷歌搜索,我发现这篇文章讨论了Slope One算法的实现,但似乎依赖于用户评价被比较的项目.理想情况下,我希望在不需要用户提供评级的情况下实现这一目标.我假设如果用户在他们的收藏中有这本书,他们会喜欢它.

虽然我觉得我可以默认每本书的评级为10,但我想知道我是否可以使用更高效的算法.理想情况下,我想动态计算这些建议(避免批量计算).任何建议,将不胜感激.

der*_*ias 11

您的任务的基本算法是基于协作内存的推荐系统.这很容易实现,特别是当您的项目(在您的案例中)只有ID而没有其他功能时.

但是,正如您已经说过的那样,您需要对用户进行某种评级.但是不要考虑像1到5星这样的评级,而更像二元选择,如0(书不读)和1(书读),或者感兴趣不感兴趣.

然后用适当的距离度量计算所有用户(和他们的项目的集合)之间的差异和自己,选择ñ最相似的用户自己(的谁的活跃用户),并挑选出你有没有认为他们的项目(或考虑,选择0).

我认为在这种情况下,一个好的距离测量将是1标准距离,或者有时称为曼哈顿距离.但是,您必须尝试使用​​数据集才能获得最佳结果.

Breese等人的论文"协同过滤的预测算法的经验分析"是对该主题的一个很好的介绍.可在此处获取(PDF).对于研究论文,这是一个容易阅读.