我正在设计一个网站,它是围绕着根据用户的品味向用户推荐各种商品的概念而建立的。(例如,他们评分的项目、添加到收藏夹列表的项目等)亚马逊、Movielens和Netflix就是这样的例子。
现在,我的问题是,关于这个系统的数学部分,我不确定从哪里开始。我愿意学习所需的数学,只是我不知道需要什么类型的数学。
我看过Grouplens.org上的一些出版物,特别是“Towards a Scalable kNN CF Algorithm: Exploring Effective Applications of Clustering”。(pdf)我很擅长理解所有的东西,直到第5页“预测生成”
附注:我并不是在寻找正在发生的事情的解释,尽管这可能会有所帮助,但我更感兴趣的是我需要知道的数学知识。这样我就能理解发生了什么。
发布于 2009-10-03 03:18:29
让我解释一下作者介绍的过程(根据我的理解):
输入:
输出:
目标用户对目标项的
这可以对一堆项目重复,然后我们返回前N个项目(最高预测评级)
过程:
该算法非常类似于朴素的KNN方法(搜索所有训练数据以找到与目标用户具有相似评级的用户,然后组合他们的评级以给出预测投票)。
这种简单的方法不能很好地扩展,因为用户/项目的数量增加了。
提出的算法是首先将训练用户聚类到K组(对项目进行相似评分的组),其中K << N (N是用户总数)。
然后,我们扫描这些集群,找出目标用户最接近的一个(而不是查看所有训练用户)。
最后,我们从这些集群中选择l,并将预测作为到这些l集群的距离加权的平均值。
请注意,使用的相似性度量是correlation系数,而聚类算法是二等分K均值算法。我们可以简单地使用标准kmeans,也可以使用其他相似性度量,如Euclidean distance或余弦距离。
第5页上的第一个公式是相关性的定义:
corr(x,y) = (x-mean(x))(y-mean(y)) / std(x)*std(y)第二个公式基本上是加权平均值:
predRating = sum_i(rating_i * corr(target,user_i)) / sum(corr(target,user_i))
where i loops over the selected top-l clusters希望这能让事情变得更清晰一些:)
发布于 2009-10-03 02:36:55
Programming Collective Intelligence是对该领域的一个非常用户友好的介绍,提供了大量Python语言的示例代码。至少,这将有助于为理解有关该主题的学术论文中的数学知识奠定基础。
发布于 2009-10-03 02:46:28
(H Marmanis,D Babenko,Manning出版)是关于subjet的介绍性文本。它还涵盖了搜索概念,但其主要关注点是分类、推荐系统等。这应该是你的项目的一个很好的入门读物,允许你提出正确的问题,并更深入地挖掘在你的情况下事情似乎更有前途或更实用的地方。
这本书还包括对相关数学主题(主要是线性代数)的“复习”,但这种复习很少;你在web上会做得更好。
发现或回到麻省理工学院线性代数的一个令人愉快的方法是关注麻省理工学院OpenCourseWare上的Prof. Gilbert Strand's 18.06 lecture series。
线性代数不是拯救的唯一方法;-)你可能会发现温习一些基本的统计概念是有用的,比如分布、协方差、贝叶斯推理……
https://stackoverflow.com/questions/1512624
复制相似问题