基于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的影响曲线:
相关文章推荐
- 推荐算法:基于领域的协同滤波
- Python3.2 实现基于KNN算法的数据分类
- 基于kd树的KNN算法的实现
- 基于OpenCV底层实现均值滤波,中值滤波和高斯滤波
- 基于Zynq的光流法软硬件协同实现
- 基于用户协同过滤(User-CF)的推荐算法
- ItemCF_基于物品的协同过滤_MapReduceJava代码实现思路
- 基于稀疏矩阵的k近邻(KNN)实现
- 基于KDTree的KNN实现
- [原] 在协同决策系统内实现基于Flex+ArcGIS的航班天气展示
- 基于Bayes和KNN的newsgroup 18828文本分类器的Python实现
- 基于MATLAB图像处理的中值滤波、均值滤波以及高斯滤波的实现与对比
- 用PersonalRank实现基于图的推荐算法(python实现)
- 【推荐算法】协同过滤算法——基于用户 Java实现
- 基于scikit-learn包实现机器学习之KNN(K近邻)
- 【笔记4】用pandas实现条目数据格式的推荐算法 (基于用户的协同)
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(上)
- 【Python】基于kNN算法的手写识别系统的实现与分类器测试
- 【笔记5】用pandas实现矩阵数据格式的推荐算法 (基于物品的协同)
- 基于欧几里德距离的K最近邻(KNN)算法的实现(JAVA版)