基于用户最近邻模型的协同过滤算法的Python代码实现
来源:互联网 发布:php保存xml文件 编辑:程序博客网 时间:2024/05/22 00:25
最近看了几篇研究最大信息系数的文章,最大信息系数是一种度量两个变量之间关联关系的新方法。传统度量两个变量之间关系的指标包括皮尔逊相关系数和信息论中的互信息。皮尔逊相关系数在度量具有线性相关关系的两个变量时具有较好的效果,但若两个变量之间的关系不是线性时,不能进行准确地度量。互信息是信息论的鼻祖香农老先生在研究通信理论时引入的,后来研究者发现互信息这个度量在研究两个变量之间的关系具有非常强的作用,在统计学界广受欢迎。
本文在这里不去研究以上三个度量之间的区别。受传统用户最近邻模型在计算用户相似度时通常使用皮尔逊相似度计算方法启发,我想在我的研究中使用最大信息系数来计算用户之间的相关度,不过计算最大信息系数的过程还没完全理解透。幸好已经有前辈大牛在网上公开了各种代码。但是其中的Matlab代码一直是有问题的,Python代码是可以跑通的。因此本人在网上找了找Python做最近邻模型的协同过滤的代码也找到了一个前辈的代码(点击打开链接)。不过感觉这个结果跟我以前做的结果有点不同,仔细研读了几天,发现有几点与我的理解不同,这里将我的代码附上。说明:由于我对Python的语法很不熟悉所以在读取数据和最后输出格式方面几乎是复制这位前辈的代码。不过核心算法部分有两处改动,下面一一说明(涉及到另外一位作者的代码时,本文以原代码代替)。
1.在利用皮尔逊相关系数计算公式计算用户相似度时,原代码在计算用户的的评分均值是调用计算用户评分均值公式进行计算;然而计算用户相似度时针对的是两个用户都评价过的项目,故而此时的用户的评分均值应该是在用户对评分交集项目上取均值。文献[1]中的原文为"All the summations and averages in the formula are computed only over those articles that u1 and u2 both rated."。
2.在取前N个最近邻居进行预测评分时,原代码直接根据相似度大小选择最相近的N个邻居;然而常用的做法是将活跃用户u的最近邻居按相似度大小进行排序Nu,并获取训练集中评价过目标项目m的所有用户Nm,对Nu和Nm取交集并取前N项得到,若不足N项则直接取交集。
3.写此篇博客纯为探讨交流,欢迎讨论。
附上代码。
[1] Resnick P, Iacovou N, Suchak M, et al. GroupLens: an open architecture for collaborative filtering of netnews[C]//Proceedings of the 1994 ACM conference on Computer supported cooperative work. ACM, 1994: 175-186.
- 基于用户最近邻模型的协同过滤算法的Python代码实现
- 基于近邻用户协同过滤算法的音乐推荐系统
- 推荐系统-基于用户的最近邻协同过滤算法(MovieLens数据集)
- 推荐系统-基于用户的最近邻协同过滤算法(MovieLens数据集)
- 协同过滤之 一、基于用户最近邻的推荐算法
- 基于用户的协同过滤算法的Python实现
- Python-基于用户的协同过滤算法
- 基于用户协同过滤的推荐系统算法,python 实现
- 推荐系统实践----基于用户的协同过滤算法(python代码实现书中案例)
- 基于用户的协同过滤算法和基于物品的协同过滤算法之java实现
- 【推荐系统】协同过滤之基于用户的最近邻推荐
- (数据挖掘-入门-1)基于用户的协同过滤之最近邻
- 因式分解结合最近邻:多层面的协同过滤模型
- 基于用户的协同过滤推荐模型
- 基于用户的协同过滤和基于物品的协同过滤推荐算法原理和实现
- 自己实现的一个基于用户的协同过滤算法
- Python基于用户协同过滤算法的电影推荐代码demo
- 基于用户(user-based)的协同过滤推荐算法的初步理解以及代码实现
- Linux下C语言编程的-RPC远程调用编程
- accelerated c++习题2-5
- oracle删除分区和添加分区
- hibernate搭建日志环境,报错java.lang.NoClassDefFoundError: org/apache/log4j/Level
- 修身养性古文一则
- 基于用户最近邻模型的协同过滤算法的Python代码实现
- 2014年美团校招之——求An
- Starling Feathers Controls LayoutGroup
- jquery获取checkbox选中的值
- linux c++动态链接库so编写
- Linux 下 solr 安装注意事项
- JAVA实现新浪SAE上 mysql数据库的连接
- linux AWK命令使用详解
- UIBarButtonSystemItem(iOS7)