我正在设计一个网站,该网站基于根据用户的口味向用户推荐各种商品的概念而构建。 (即,他们对商品评分,将商品添加到“我的收藏夹”列表等)。例如,Amazon,Movielens和Netflix。现在,我的问题是,对于该系统的数学部分,我不确定从哪里开始。我愿意学习所需的数学,只是我不知道所需的数学类型。我浏览了Grouplens.org上的一些出版物,特别是“Towards a Scalable kNN CF Algorithm: Exploring Effective Applications of Clustering”。 (pdf)在第5页“预测生成”之前,我非常擅长理解所有内容p.s.尽管这可能会有所帮助,但我并不是正在寻找正在发生的情况的解释,但是我对我需要了解的数学更感兴趣。这样,我可以了解发生了什么。 最佳答案 让我解释一下作者介绍的过程(据我了解): 输入:培训数据:用户,项目和用户对这些项目的评分(不必然每个用户都对所有项)目标用户:对某些项目具有一定等级的新用户目标项目:我们不希望目标用户对其进行评级的项目预测它的等级。 输出: 目标用户对目标项目的预测可以针对一堆商品重复执行此操作,然后我们返回N项最高的商品(最高预测评分) 过程:该算法与朴素的KNN方法非常相似(搜索所有训练数据以找到具有与目标用户相似的评分的用户,然后组合其评分以进行预测[投票])。随着用户/项目数量的增加,这种简单的方法无法很好地扩展。提出的算法是首先将训练用户聚类到 K 组(对项目进行类似评分的人群),其中 K N ( N 是用户总数)。然后,我们扫描这些集群以找到目标用户最接近的集群(而不是查看所有训练用户)。最后,我们从中选择 l ,然后根据与这些 l 聚类的距离加权得出平均值作为预测值。注意,所使用的相似性度量是correlation系数,聚类算法是二等分K-Means算法。我们可以简单地使用标准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希望这可以澄清一些事情:)关于math - 建立协作式过滤/推荐系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1512624/
10-13 04:17