基于标签/关键字的推荐

Posted

技术标签:

【中文标题】基于标签/关键字的推荐【英文标题】:Tag/Keyword based recommendation 【发布时间】:2011-02-17 03:59:55 【问题描述】:

我想知道在标签驱动的电子商务环境中使用哪种算法更聪明:

每个项目都有几个标签。即:

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

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

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

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

想法:

可以使用混合推荐算法,因为每个用户都有朋友。(协作+基于上下文的推荐的混合)。

也许使用用户标签,可以找到相似的用户(peers)来生成推荐。

可能通过标签直接匹配用户和物品之间的标签。

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

【问题讨论】:

完全重复:***.com/questions/2704845/… 不过更好的问题。 投票结束,因为范围太广/工具推荐。 【参考方案1】:

1) 衡量标签的权重。

标签分为几个兴趣组:

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

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

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

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

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

2) 称重您的物品

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

3) 应用阈值。

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

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

【讨论】:

非常感谢您的友好回答!我对这个公式有点困惑:tag_is_in_my_list 到底是什么意思?如果它是某种二进制 1 或 0 ?干杯 关于此的任何示例/示例实现【参考方案2】:

如果可以,请找到一份 O'Reilly 的编程集体智能,作者是 Toby Segaran。对于这个问题,它有一个模型解决方案(还有一大堆非常非常好的其他东西)。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

你能否再充实一下这个答案,比如 HOME 你会使用 RBM 吗?

以上是关于基于标签/关键字的推荐的主要内容,如果未能解决你的问题,请参考以下文章

基于内容的电影推荐:物品画像

基于标签的推荐系统

基于短文本的标签推荐算法

算法基于内容的个性化推荐算法

基于关键词的推荐引擎

推荐系统简介