基于用户最近邻模型的协同过滤算法的Python代码实现

本文介绍了如何使用最大信息系数(Maximum Information Coefficient, MIC)来计算用户相似度,作为协同过滤算法的一种改进。文章指出在计算用户相似度时,应基于共同评价的项目取均值,并在选择最近邻时采用特定策略。同时,分享了作者对Python协同过滤代码的修改和理解,旨在促进讨论和交流。" 121717820,11457863,理解压缩矩阵转置:三元组表的实现与算法,"['数据结构', '矩阵运算']
摘要由CSDN通过智能技术生成

          最近看了几篇研究最大信息系数的文章,最大信息系数是一种度量两个变量之间关联关系的新方法。传统度量两个变量之间关系的指标包括皮尔逊相关系数和信息论中的互信息。皮尔逊相关系数在度量具有线性相关关系的两个变量时具有较好的效果,但若两个变量之间的关系不是线性时,不能进行准确地度量。互信息是信息论的鼻祖香农老先生在研究通信理论时引入的,后来研究者发现互信息这个度量在研究两个变量之间的关系具有非常强的作用,在统计学界广受欢迎。

    本文在这里不去研究以上三个度量之间的区别。受传统用户最近邻模型在计算用户相似度时通常使用皮尔逊相似度计算方法启发,我想在我的研究中使用最大信息系数来计算用户之间的相关度,不过计算最大信息系数的过程还没完全理解透。幸好已经有前辈大牛在网上公开了各种代码。但是其中的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

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值