您的位置:首页 > 编程语言 > MATLAB

基于KNN的协同滤波推荐算法实现

2014-01-08 18:49 309 查看

基于KNN的协同滤波推荐算法实现

        邻居模型通常也被称为k-最近邻模型,或者简称为kNN。KNN 模型可以获得精确的推荐结果并为结果给出合理的解释,它们是CF 推荐系统中最早被使用也是直至目前最流行的一类模型。

为了获得用户对产品的评分预测值,kNN 模型一般包括以下三步:

1. 计算相似度

这步中计算每对产品之间的相似度(similarity)。一些被广泛使用的相似度

测度包括:

Pearson correlation:



其中¯rm 和¯rn 分别表示电影m 和n 获得的评分平均值,而Pmn 表示对电影m 和n 都提供了评分的用户集合,也即Pmn = Pm ∩ Pn 。

Cosine



Adjusted Cosine
                                              


其中¯rv 表示用户v 的评分平均值。

2. 选择邻居

为了预测用户u 对电影m 的评分值,我们首先从Pu 中选取与电影m有最高相似度的特定数量的电影,这些电影形成u−m 对的邻居(neighborhood),记为N(m; u) 。

3. 产生预测值

用户u 对电影m 的评分预测为上步获得的邻居N(m; u) 中评分的加权平均值:



其中bu;n 为用户u 对电影n 的基准预测评分。这里的基准模型可以是任何可以产生预测评分的模型。

按照上述过程,在MATLAB仿真环境下得到的RMSE=1.0776,这里取得邻居个数为10。
下图为邻居个数的选取(0~20)对RMSE的影响曲线:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  推荐系统 matlab