19

我想知道在标签驱动的电子商务环境中使用什么算法会很聪明:

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

    产品名称:《Metallica - Black Album CD》,标签:《metallica》、《black-album》、《摇滚》、《音乐》

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

    用户名: “testguy”,兴趣: “python”、“rock”、“metal”、“computer-science” 朋友: “testguy2”、“testguy3”

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

想法:

  • 当每个用户都有朋友时,可以使用混合推荐算法。(协作+基于上下文的推荐的混合)。
  • 也许使用用户标签,可以找到相似的用户(同行)来生成推荐。

  • 也许通过标签直接匹配用户和项目之间的标签。

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

4

5 回答 5

18

1) 权衡你的标签。

标签分为几组感兴趣的:

  • 我的朋友都没有分享我的标签
  • 标签我的一些朋友分享,但我没有
  • 我的许多朋友共享的标签。

(有时您可能也想考虑朋友的朋友标签,但根据我的经验,这种努力并不值得。YMMV。)

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

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

注意神奇的数字 2,它使你自己的意见价值是你所有朋友加起来的两倍。随意调整:-)

2) 称重您的物品

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

3) 应用阈值。

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

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

于 2010-05-12T00:55:17.630 回答
5

如果可以的话,找一份 O'Reilly 的 Programming Collective Intelligence 的副本,作者是 Toby Segaran。对于这个问题,它有一个模型解决方案(还有一大堆非常非常好的其他东西)。

于 2010-05-13T11:30:05.977 回答
0

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

于 2010-05-13T13:59:30.747 回答
0

您可以使用 Drools 的Python Semantic 模块以 Python 脚本语言指定规则。您可以使用 Drools 轻松完成此操作。这是一个很棒的规则引擎,我们用来解决几个推荐引擎。

于 2010-05-15T18:12:51.567 回答
0

我会使用受限玻尔兹曼机。巧妙地解决了标签相似但不相同的问题。

于 2011-03-14T04:37:46.020 回答