从客户购买/收听行为中统计“相似产品/音乐/...”的工作原理是啥?

Posted

技术标签:

【中文标题】从客户购买/收听行为中统计“相似产品/音乐/...”的工作原理是啥?【英文标题】:How does statistical calculation of "similar products/music/..." from customer buying/listening behaviour work?从客户购买/收听行为中统计“相似产品/音乐/...”的工作原理是什么? 【发布时间】:2011-07-02 04:31:43 【问题描述】:

我的意思是亚马逊上的产品推荐,或者更具体地说是 Last.fm 上的类似乐队推荐。

鉴于您可以存储用户的完整收听/购买行为(谁听了 WHAT How OFTEN?),您如何计算哪些频段与任何给定频段相似,以及多少?

我在 Wikipedia 上找到了一些网站(Association rule learning、Affinity analysis),但我想从程序员的角度获取一些信息,最好是一些伪代码或 Python 代码。

因为我有

 dic = 
"Alice"   :  "AC/DC" : 2, "The Raconteurs" : 3, "Mogwai" : 1 ,
"Bob"     :  "The XX" : 4, "Lady Gaga" : 3, "Mogwai" : 1, "The Raconteurs" : 1 
"Charlie" :  "AC/DC" : 7, "Lady Gaga" : 7 
 

其中的数字是播放次数,我将如何迭代它以找到乐队的相似性?

【问题讨论】:

我认为您的问题不清楚:您是在问实施篮子分析需要哪些数据结构? 嗯,也许我可以编辑我的问题以使其更清楚。我正在寻找使用的算法。如果它被称为篮子分析,你已经在某种程度上帮助了我。我现在在 Wikipedia 的 Affinity Analysis 下找到了它。但是,我在任何地方都找不到它的伪代码或 Python 代码。 @Justin:不,我没有使用数据库......但我期待着假设我使用的答案。我可能会学到一些东西。 好问题,恕我直言。我一直想知道这类算法。 【参考方案1】:

《Programming Collective Intelligence: Building Smart Web 2.0 Applications》这本书很经典,使用Python。除其他外,它还处理推荐引擎。

【讨论】:

甜蜜。买了,但在 oreilly.com 上作为 ePub,因为这样在我的 iPad 上更好。 @Paul:有道理,我将链接更改为直接指向 O'Reilly。 哦,抱歉,这更有利于 Stack Overflow 弄清楚要拥有哪些附属链接。不过,知道 SO 的人们更喜欢从哪里获得他们的书会很有趣。 我现在也买了。本来希望在这里得到直接的答案,但是这本书有这么好的评论,我认为它完全值得购买。 +1。【参考方案2】:

您可能会发现 Orange 中的 Association Rules 小部件(以及其他小部件)有助于入门。另一个有用的软件包是pysuggest,它实现了许多recsys/协作过滤算法。

【讨论】:

【参考方案3】:

我认为您所说的是协同过滤。据我所知,亚马逊和其他公司使用了一个名为 Apache Mahout 的 Java 框架,简而言之,它是一个基于用户/项目数据的“推荐工厂”。

检查一下,它是免费的。但是,我不确定它是否适合 Python 集成,我在那个部门还不是新手。

【讨论】:

【参考方案4】:

当您拥有关联用户和产品的数据时,您在这两个集合之间隐含了一个二分图。该图的(非常稀疏的)邻接矩阵很有用。如果您对列的长度进行规范化,然后将其转置乘以矩阵本身,那么在某种意义上,您就会拥有项目与项目的相似性,因为它们反映在中间用户群中。

【讨论】:

以上是关于从客户购买/收听行为中统计“相似产品/音乐/...”的工作原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

从文件中统计中文词语出现的频次

C语言:从给出的数据中统计出既是回文数又是素数的数

从日志文件中统计给定时间段内的唯一用户数

从海量文本中统计出前k个频率最高的词语

MySQL中统计一天之内每个时间段内的数据,很急

Spark中统计程序运行时间