协同过滤算法GuFeiyang

一个人想看电影的时候常常会思考要看什么电影呢。这个时候他可能会问周围爱好的人求推荐。现在社会每天都会产生海量的信息。面对这么多信息好多人都不知道什么信息是自己需要的。推荐系统正是起了这么一个作用。推荐系统的应用随处可见。网络购物是一个典型的例子,电子商务的运营商往往会根据用户在网站的行为推荐用户可能会购买的商品。豆瓣FM是做的一个非常好的电台,这个电台能够根据用户的历史行为学习出用户喜欢歌曲的类型,从而给用户推荐歌曲。除此之外还有电影推荐、新闻推荐、博客推荐等等。

本文主要介绍协同过滤算法。本博客以后会逐渐介绍一些其他的推荐算法。

协同过滤算法的出现标志着推荐系统的产生。协同过滤算法包含基于用户的协同过滤算法和基于物品的协同过滤算法。

(公式1)

(公式2)

通过公式1或者2我们能得到一个相似度矩阵。然而在很多应用中这个相似度矩阵式非常稀疏的。也就是很多用户相互之间没有对相同的商品产生行为。如果我们直接先把相似度不为0的用户对数求出来,然后只计算这些不为0的用户对,这样子会剩很多复杂度。用数组C[u][v]记录用户u和v有相同商品行为的数目。首相建立一个倒排表。每个物品都保存被产生过行为的用户。然后对于每个物品所有的用户对数(u,v),C[u][v]加1。这样结束以后就可以只利用相似度不为0的用户对数了。

得到相似度矩阵后利用公式3预测用户u对物品i的感兴趣程度。其中S(u,k)表示与用户u最接近的k个用户N(i)表示对物品i有过行为的用户集合。wuv表示用户u和v的相似度,rvi表示用户v对物品i的感兴趣程度。

(公式3)

到此基于用户的系统过滤算法基本就介绍完了。公式1和公式2衡量用户的用户相似度其实上是比较粗糙的。举个例子,小时候基本每个人都会买《新华字典》,其实并不能据此说明他们的兴趣相似,然而如果两个人都买了《模式识别》,那么就基本可以肯定他们的兴趣是比较相似的。《新华字典》与《模式识别》的区别在于一个是火爆的物品,一个相对不火爆。因此相似度的计算方式可以修改为公式4。

1/(1+N(i))惩罚了火爆的物品。

(公式4)

基于物品的协同过滤算法在应用中更频繁。基于物品的协同过滤算法主要基于这样的思想:如果用户x购买了物品A,那么她很可能会购买与A很相似的物品B(比如A是面膜,B是洗面奶)。这样的话就需要计算物品间的相似度。

在得到了物品相似度后,我们要计算用户u对物品j的兴趣程度:

其中N(u)是用户u喜欢的物品集合,S(j,k)是与物品j最相似的k个物品的集合。wij是物品i和j的相似度。rui是用户u对物品i的兴趣度。基本思想就是,如果要计算用户u与物品j的兴趣度,先找到与j最相似的k个物品,再看用户u与这些物品的感兴趣程度,加权得到用户u对物品j的兴趣程度。

这里需要提出一个问题,如果用户u是一个书商,那么在计算物品相似度的时候,这个书上对他购买书中的任何两本书计算相似的时候都会做出贡献。其实这事不合理的。如果他购买了《数据挖掘导论》和一本《红楼梦》,这个信息其实意义不大的,我们并不能因此而直接地增加这两本书的相似度。这里我们需要对用户的热度做惩罚。

THE END
1.推荐算法协同过滤协同过滤是迄今为止最成功的推荐系统技术,被应用在很多成功的推荐系统中。电子商务推荐系统可根据其他用户的评论信息,采用协同过滤技术给目标用户推荐商品。 协同过滤算法主要分为基于启发式和基于模型式两种。 其中,基于启发式的协同过滤算法,又可以分为基于用户的协同过滤算法(User-Based)和基于项目的协同过滤算法(Item...https://www.jianshu.com/p/5463ab162a58
2.基于流形近邻的协同过滤算法AET为了比较基于欧氏距离的协同过滤算法和基于最小最大距离的协同过滤算法,此处变化邻居数,加权方案取01VD,记使用欧氏距离的协同过滤方案为ECF,得到的实验结果如图2所示。 从图2可以看出,使用流形近邻的协同过滤算法优于使用欧氏距离的协同过滤算法。 3.3不同流形邻居数对实验结果的影响 ...http://www.chinaaet.com/article/3000016485
1.算法篇协同过滤协同过滤算法那么,在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。 算法核心:当一个用户A需要个性化推荐时,可以先找到他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A...https://blog.csdn.net/m0_37739193/article/details/119388606
2.协同过滤算法概述与python实现协同过滤算法基于内容(usr协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型,包括在线的协同和离线的过滤两部分。所谓在线协同,就是通过在线数据找到用户可能喜欢的物品,而离线过滤,则是过滤掉一些不值得推荐的数据,比比如推荐值评分低的数据,或者虽然推荐值高但是用户已经购买的数据。 协同过滤的模型一般为m个物品,m个用户的数据,只...https://cloud.tencent.com/developer/article/1102304
3.利用数据分析量化协同过滤算法的两大常见难题但是对于一些老大难问题怎样分析数据,业内目前还没有一些较为全面和体系化的方法论。2018年在成都举行的 ICCCBDA 2018 会议刊登了一篇题为 Quantitative Analysis of Matthew Effect and Sparsity Problem in Recommender Systems 的论文,尝试着精准量化协同过滤算法中的两个常见难题:马太效应和稀疏性问题。https://www.51cto.com/article/595775.html
4.用Python实现协同过滤的教程python协同过滤 在 用户 —— 物品(user - item)的数据关系下很容易收集到一些偏好信息(preference),比如评分。利用这些分散的偏好信息,基于其背后可能存在的关联性,来为用户推荐物品的方法,便是协同过滤,或称协作型过滤(collaborative filtering)。 这种过滤算法的有效性基础在于: 用户的偏好具有相似性,即用户是可分类的...https://www.jb51.net/article/63730.htm