推荐系统相关算法(2):k-nearest neighbor

1. kNN

1.1 基本的kNN模型

      kNN(k-nearest neighbor)的思想简单来说就是,要评价一个未知的东西U,只需找k个与U相似的已知的东西,并通过k个已知的,对U进行评价。假如要预测风炎君对一部电影M的评分,根据kNN的思想,我们可以先找出k个与风炎君相似的,并且对M进行过评分的用户,然后再用这k个用户的评分预测风炎君对M的评分。又或者先找出k个与M相似的,并且风炎君评价过的电影,然后再用这k部电影的评分预测风炎君对M的评分。在这个例子中,找相似用户的方法叫做user-based kNN,找相似物品的方法叫做item-based kNN。这两种方法的思想和实现都大同小异,因此下文只讨论item-based kNN,并且将其简称为kNN。
    根据kNN的思想,我们可以将kNN分为以下三个步骤(假设预测用户u对物品i的评分):

(1)计算相似度

      推荐系统中常用的相似度有:Pearson correlation,Cosine,Squared Distance,其中Pearson correlation的运用最为普遍,因此本文只介绍Pearson correlation。

      Pearson correlation的取值范围为[-1,1],当值为-1时,表示两组变量负相关,为0时则表示两组变量不相关,为1时表示两组变量正相关,其计算公式如下:

(2)选择邻居

      在用户u评过分的所有电影中,找出k个与电影m相似度最高的电影,并用N(u, m)表示这k个电影的集合。

(3)计算预测值

      有了k个相似的电影后,就可以用以下公式预测评分:

 

1.2 数据稀疏性与kNN的改进

      现在待处理的推荐系统规模越来越大,用户和商品数目动辄百千万计,两个用户之间选择的重叠非常少。如果用用户和商品之间已有的选择关系占所有可能存在的选择关系的比例来衡量系统的稀疏性,那么平时研究最多的MovieLens数据集的稀疏度是4.5%,Netflix是1.2%,Bibsonomy是0.35%,Delicious是0.046%。

      从Pearson correlation的计算公式上看,如果某两个电影的交集大小比其它电影的交集要小得多,那么这两个电影的相似度的可靠性就比较低。由上面描述的数据稀疏性可知,在推荐系统中出现某些交集的较小的情况将会十分平常。而这会大大加强相似度的不可靠性。为了预测结果的可靠性,有必要减轻这种不可靠性,因此我们要根据交集的大小对相似度进行一次压缩(shrinkage):

 

1.3 全局作用与kNN的改进

      用户对电影评分有各种趋势,例如:有的用户是严格的评分者,因而倾向于给较低的分数;有的用户是宽松的评分者,因而倾向于给较高的分数;有的电影的表现即使一般也倾向于获得较高的分数。在推荐系统中,将这些趋势称为全局作用(global effect,简称GE)。

     常用的GE有16种,这里只列出本文用到的3种:

No.

Global Effect

Meaning

0

Overall mean

全部评分的平均值

1

Movie × 1

电影的被评分倾向

2

User × 1

用户的评分倾向

3

User × Time(user)1/2

用户第一次评分后到现在相距了多少时间

表格的第一列表示各个 GE 被考虑的顺序;第二列表示 GE 的名称;第三列表示GE的意义。其中第二列命名的意义为:在“×”之前的部分代表该 GE 是基于用户或基于电影的,在“×”之后的部分代表 xu,m(下文会提到)的取值形式。

     GE的目标是为该GE估计一个特定的参数(第0号GE除外,因为全部评分的平均值能直接计算得到)。在估计参数时,一次只考虑一个GE,并且使用前面已得到的所有GE的预测残差(residual)作为本次估计的真实评分。估计第t+1个GE时的真实评分由以下公式得到:

      在估计GE的特定参数时,也一样要考虑到前面提到的数据稀疏性问题,即该参数也要进行压缩,进行压缩后的参数估计公式如下:

其中表示这是第t个参数,并且是基于用户的,表示用户u评过分的所有电影的集合,表示第u个用户和第m部电影相关的解释变量(explanatory variable),且在计算第1,2号GE时为1,在计算第3号GE时为

      kNN基本模型并没有将GE考虑在内,为了使预测结果更加精确,有必要将GE加到kNN的预测公式中,改进后的预测公式如下:

 

2. 实验

    实验数据使用MovieLens 100k的数据。这份数据由1000个用户对1700部电影的100000个评分组成,其稀疏性为5.88%。评价指标使用RMSE(root mean squared error):

    各算法在该数据集的表现如下所示,其中表中的数值指RMSE。

 

k=10

k=15

k=20

基本kNN模型

1.076

1.071

1.068

压缩相似度的kNN

1.011

1.016

1.020

带GE的kNN

0.987

0.988

0.989

压缩相似度并且带GE的kNN

0.946

0.951

0.955

      从上表可知,当k=10时,压缩相似度的改进效果为6%,GE的改进效果为8.2%,两者叠加的改进效果为12.1%。这说明:(1)数据的稀疏性对越粗糙的模型,影响越大。(2)GE的影响较大,原因是kNN的预测结果是相似度与用户评分的加权平均值。当用户评分包含与相似度无关的因素(即GE)越多时,最终结果越不可靠。

      代码由于较多就不直接贴上,想要的可以在从以下地址下载(Python实现)

http://ishare.iask.sina.com.cn/f/34170290.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看了《OCP/OCA认证考试指南全册:Oracle Database 11g(1Z0-051,...

为什么80%的码农都做不了架构师?>>> 一直对考试用书没好感,觉得里边的内容都刻板不实用。在查找Oracle书籍时,无意中看到有人在豆瓣里说,如果给他一次重新的机会,他只看OCP 052、053,Oracle编程…

.net 集合分成几个等数量集合_巧用数学游戏,帮助幼儿轻松掌握12种数量关系!...

网校在手 轻松教研线上学习灵活高效海量资源轻松获取一键搞定园本教研感知数量关系是幼儿园数学教育的核心内容,是发展幼儿数学思维的重要因素。那么,孩子在幼儿园阶段需要了解哪些数量关系呢?幼儿园有哪些数学教育内容包含着数量关系呢&…

我做的百度飞桨PaddleOCR .NET调用库

.NET Conf 2021中国我做了一次《.NET玩转计算机视觉OpenCV》的分享,其中提到了一个效果特别好的OCR识别引擎——百度飞桨PaddleOCR,后来我逐步把它封装了一下,代码全部开源(可点击查看原文跳转到Github):ht…

超棒的在线Bootstrap主题编辑工具 - lollytin

lollytin 是一款帮助制作Bootstrap3主题的在线工具,虽然现在仍旧是Beta版本,但是已经非常不错了。 主要功能: 通过拖拽来生成主题支持拖拽页头,页脚,内容,幻灯,地图,表单&#xff0c…

CentOS 5.9 yum安装LAMP(Apache+MySQL+PHP)

2019独角兽企业重金招聘Python工程师标准>>> 1、 yum -y install mysql mysql-server /*yum安装MySQL*/ 2、chkconfig --levels 235 mysqld on /*设置开机启动*/ 3、以MySQL用户root登陆: mysql -u root 登陆后设置root密码: set password for rootl…

C#获2021年度编程语言奖,开发者们最该关注这些亮点!

2022年的第一个好消息,应该就是C#获得“TIOBE 年度编程语言奖”。虽然眼下TIOBE的新闻尚未发布,但早在21年12月榜单发布的同时,TIOBE的CEO Paul Jansen表示,C#将获取“TIOBE 年度编程语言奖”。C#有着21年的悠久历史了&#xff0c…

编写程序在窗口中写出自己名字的拼音缩写_各类英文缩写:全称居然这么朴素?网友:最后一个我笑了...

提到听起来很牛的缩写,小优第一个想到的单词是VIP,一直认为它是一个很厉害的单词,那它的全称一定更厉害吧!直到初中,被英语老师打破幻想,原来VIP的全称就只是 Very Important Person! Excuse me ??好吧!那…

如何像Uber一样给工程师派单,解放外包生产力?

2019独角兽企业重金招聘Python工程师标准>>> 2014年,陈柯好的第一个创业项目失败,半年之内,陈柯好以技术合伙人的方式游走于旅游、电商、团购、票务等各种领域。正当他对职业方向感到迷茫时,“大众创业、万众创新”的口…

为什么越来越多的人消失在朋友圈?

全世界只有3.14 % 的人关注了爆炸吧知识微博上有个热门话题讨论:#越来越多的人开始消失在朋友圈#。网友们纷纷评论,也道出了背后的辛酸真相。“越来越觉得自己渺小和不重要。”“其实根本没人关心你朋友圈写的是什么。”……是的,越来越多的人…

教你10分钟对接人大金仓EF Core 6.x

【导读】目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql、SqlSugar(排名不分先后)。FreeSql和SqlSugar都已早早支持国产数据库比如人大金仓、…

史上最全几何技巧,远比傻做一千道题更实用!

▲ 点击查看爱因斯坦说:“一个人当他最初接触欧几里得几何学时,如果不曾为它的明晰性和可靠性所感动,那么他是不会成为一个科学家的。”我们现在再回过头想想,我们小时候学几何的时候,真的有感受到过这种爱因斯坦说的感…

Color the ball

Color the ball Time Limit : 9000/3000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 30 Accepted Submission(s) : 13 Problem DescriptionN个气球排成一排&#xff0c;从左到右依次编号为1,2,3....N.每次给定2个整数a b(a < b),l…

sqlite字段是否存在_【漏洞预警】Linux内核存在本地提权漏洞(CVE20198912)

更多资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)漏洞背景近日&#xff0c;Linux git中发布一个commit补丁&#xff0c;该补丁对应的漏洞是一个本地提权漏洞CVE-2019-8912&#xff0c;漏洞影响范围较广。根据git中的commit信息可知&#xf…

WPF 实现倒计时转场动画~

元旦元旦团团圆圆、WPF开发者在此真诚的祝愿开发者们在新的一年里心想事成、万事如意!WPF开发者QQ群&#xff1a; 340500857由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS&#xff1a;有更好的方式欢迎推荐。01—代码如下一…

数字化架构

看过《EA企业架构》、《应用架构》和《IT与业务之间的鸿沟》文章的好多朋友给我发信息&#xff0c;能不能再写篇文章&#xff0c;各行各业的朋友都能看懂的、容易接受的&#xff0c;下面我将尽量尝试朝着这个方向努力写一篇数字化架构的文章&#xff0c;希望各界的朋友们都能有…

快速理解ASP.NET Core的认证与授权

ASP.NET Core的认证与授权已经不是什么新鲜事了&#xff0c;微软官方的文档对于如何在ASP.NET Core中实现认证与授权有着非常详细深入的介绍。但有时候在开发过程中&#xff0c;我们也往往会感觉无从下手&#xff0c;或者由于一开始没有进行认证授权机制的设计与规划&#xff0…

字符用_连接的是什么加密_防水连接器外壳与铜针表面涂层有什么用?

防水连接器外壳与铜针表面涂层会关系到产品的质量&#xff0c;毕竟材料选择方面&#xff0c;以及手工劳动方面都是需要把好关的&#xff0c;这样我们才能确保做出来了的产品送至用户身上是最好的。(凌科BD系列防水连接器铜针镀金效果)1、无氰偏碱亮铜&#xff1a;在铜合金材料防…