Joh*_*ohn 8 math coldfusion recommendation-engine collaborative-filtering
我正在设计一个网站,该网站围绕着根据用户的口味向用户推荐各种商品的概念而构建.(即他们评价的项目,添加到收藏夹列表中的项目等).这方面的一些例子是亚马逊,Movielens和Netflix.
现在,我的问题是,我不知道从这个系统的数学部分开始.我愿意学习所需的数学,只是我不知道需要什么类型的数学.
我查看了Grouplens.org上的一些出版物,特别是" 迈向可扩展的kNN CF算法:探索群集的有效应用".(pdf)我很擅长理解所有内容,直到第5页"预测生成"
ps我不是在寻找对正在发生的事情的解释,虽然这可能会有所帮助,但我对我需要知道的数学更感兴趣.这样我就可以理解发生了什么.
Amr*_*mro 11
让我解释作者介绍的程序(据我理解):
输入:
输出:
这可以针对一堆项目重复,然后我们返回N-top项目(最高预测评级)
程序:
该算法与天真的KNN方法非常相似(搜索所有训练数据以找到对目标用户具有相似评级的用户,然后将他们的评级结合起来给出预测[投票]).
随着用户/项目数量的增加,这种简单的方法不能很好地扩展.
所提出的算法是首先将训练用户聚类成K组(类似地对项目进行评级的人群),其中K << N(N是用户的总数).
然后我们扫描这些集群以找出目标用户最接近哪一个(而不是查看所有培训用户).
最后我们挑升出者,我们使我们的预测由那些距离加权平均升集群.
注意,使用的相似性度量是相关系数,并且聚类算法是二等分K-Means算法.我们可以简单地使用标准kmeans,我们也可以使用其他相似性度量,例如欧几里德距离或余弦距离.
第5页的第一个公式是相关性的定义:
corr(x,y) = (x-mean(x))(y-mean(y)) / std(x)*std(y)
Run Code Online (Sandbox Code Playgroud)
第二个公式基本上是加权平均值:
predRating = sum_i(rating_i * corr(target,user_i)) / sum(corr(target,user_i))
where i loops over the selected top-l clusters
Run Code Online (Sandbox Code Playgroud)
希望这能澄清一点点:)
智能网的算法(H Marmanis,D Babenko,Manning publishing)是关于子喷射的介绍性文本.它还涉及搜索概念,但其主要重点是分类,推荐系统等.这应该是您的项目的一个很好的入门,让您可以提出正确的问题,并深入挖掘在您的情况下看起来更有前途或更实际的事情.
这本书还包括相关数学主题(主要是线性代数)的"复习",但这个复习是最小的; 你会在网上做得更好.
一个愉快的发现或回到线性代数的方法是跟随吉尔伯特斯特兰德教授在麻省理工学院开放式课程中提供的18.06系列讲座.
线性代数不是获得救赎的唯一途径;-)你可能会发现有用的是了解基本的统计概念,如分布,协方差,贝叶斯推理......