基于标记/关键字的推荐

时间:2010-05-08 13:37:02

标签: algorithm machine-learning recommendation-engine

我想知道哪种算法可以巧妙地用于标签驱动的电子商务环境:

  • 每个项目都有多个标签。 IE:

    商品名称:“Metallica - Black Album CD”,标签:“metallica”,“black-album”,“rock”,“music”

  • 每个用户都有几个标签和朋友(其他用户)绑定 他们。 IE:

    用户名:“testguy”,兴趣:“python”,“摇滚”,“金属”,“计算机科学” 朋友:“testguy2”,“testguy3”

我需要通过检查他们的兴趣标签并以复杂的方式生成建议来为这些用户生成建议。

思路:

  • 可以使用混合推荐算法,因为每个用户都有朋友。(基于协作+上下文的推荐的混合)。
  • 也许使用用户标签,可以找到类似的用户(对等方)来生成推荐。

  • 也许可以通过标签直接在用户和商品之间匹配标签。

欢迎任何建议。任何基于python的库也是受欢迎的,因为我将在python语言上使用这个实验引擎。

5 个答案:

答案 0 :(得分:18)

1)给你的标签加权。

标签分为几组:

  • 我的朋友没有共享的标签
  • 标记了一些我的朋友分享,但我没有
  • 我的一些朋友分享的我的标签。

(有时你可能也想考虑一下朋友的朋友标签,但根据我的经验,努力是不值得的.YMMV。)

识别此人和/或此人的朋友感兴趣的所有标签,并为该个人的标签附加权重。标签重量的一个简单可能的公式是

(tag_is_in_my_list) * 2 + (friends_with_tag)/(number_of_friends)

请注意神奇的数字2,这使得您自己的意见值是所有朋友放在一起的两倍。随意调整: - )

2)给你的物品加权

对于列表中包含任何标记的每个项目,只需添加标记的所有加权值即可。更高的价值=更多的兴趣。

3)应用阈值。

最简单的方法是向用户显示最高 n 结果。

更复杂的系统也会应用反标签(即不感兴趣的主题)并做很多其他事情,但我发现这个简单的公式有效且快捷。

答案 1 :(得分:4)

如果可以,请追踪Toby Segaran撰写的O'Reilly编程集体智慧的副本。这里有一个模型解决方案来解决这个问题(有很多非常非常好的其他东西)。

答案 2 :(得分:0)

您的问题类似于产品推荐引擎,例如亚马逊广为人知的网站。这些使用称为association rules的学习算法,其基本上构建用户X基于用户和产品之间的共同特征Z购买产品Y的条件概率。许多开源工具包都实现了关联规则,例如OrangeWeka

答案 3 :(得分:0)

您可以使用Python Semantic module for Drools在python脚本语言中指定规则。您可以使用Drools轻松完成此任务。这是一个非常好的规则引擎,我们用它来解决几个推荐引擎。

答案 4 :(得分:0)

我会使用Restricted Boltzmann Machine。非常巧妙地解决类似但不完全相同的标签问题。