基于用户的协同过滤是怎么推荐电影的?

大数据
我们平时在浏览电商、视频等网站时,网页一般会有一个“猜你喜欢”,也就是”智能推荐系统“,虽然一般来说推荐的不是很准确,但是程Sir还是研究了一下这个玩意是怎么弄出来的……今天说一说最简单的一个实现方法,叫做基于用户的协同过滤。

[[170074]]

我们平时在浏览电商、视频等网站时,网页一般会有一个“猜你喜欢”,也就是”智能推荐系统“,虽然一般来说推荐的不是很准确,但是程Sir还是研究了一下这个玩意是怎么弄出来的……今天说一说最简单的一个实现方法,叫做基于用户的协同过滤。

假设有几个人分别看了如下电影并且给电影有如下评分(5分***,没看过的不评分),我们目的是要向A用户推荐一部电影:

协同过滤的整体思路只有两步,非常简单:寻找相似用户,推荐电影

寻找相似用户

所谓相似,其实是对于电影品味的相似,也就是说需要将A与其他几位用户做比较,判断是不是品味相似。有很多种方法可以用来判断相似性,(与我之前写的K-Means文章中判断两点是否类似的方法是一致的)这篇文章用“欧几里德距离”来做相似性判定。

我们把每一部电影看成N维空间中的一个维度,这样每个用户对于电影的评分相当于维度的坐标,那么每一个用户的所有评分,相当于就把用户固定在这个N维空间的一个点上,然后利用欧几里德距离计算N维空间两点的距离:每一个电影的评分求差值,然后求每个差值的平方,然后求平方的和,然后在开平方。距离越短说明品味越接近。本例中A只看过两部电影(《老炮儿》和《唐人街探案》),因此只能通过这两部电影来判断品味了,那么计算A和其他几位的距离:

然后我们做一个变换,变换方法为:相似性 = 1/(1+欧几里德距离),这个相似性会落在【0,1】区间内,1表示完全品味一样,0表示完全品味不一样。这时我们就可以找到哪些人的品味和A最为接近了,计算后如下:

相似性:B-0.27,C-0.28,D-0.27,E-0.50,F-0.25,G-0.47

可见,E的口味与A最为接近,其次是G

推荐电影

要做电影加权评分推荐。意思是说,品味相近的人对于电影的评价对A选择电影来说更加重要,具体做法可以列一个表,计算加权分:

把相似性和对于每个电影的实际评分相乘,就是电影的加权分

加权后,还要做少量的计算:总分是每个电影加权分的总和,总相似度是对这个电影有评分的人的相似性综合,推荐度是总分/总相似性,目的是排除看电影人数对于总分的影响

结论在最终一行,就是电影的推荐度(因为是根据品味相同的人打分加权算出的分,可以近似认为如果A看了这部电影,预期的评分会是多少)。

有了电影的加权得分,通常做法还要设定一个阈值,如果超过了阈值再给用户推荐,要不怎么推荐都是烂片,如果这里我们设置阈值为4,那么最终推荐给A的电影就是《寻龙诀》。

我们现在的做法是向用户推荐电影。当然还可以从另外角度来思考:如果我们把一开始的评分表的行列调换,其他过程都不变,那么就变成了把电影推荐给合适的受众。因此,要根据不同场景选择不同的思考维度。

责任编辑:赵宁宁
相关推荐

2023-10-31 16:46:45

2017-02-05 21:02:44

大数据深度学习推荐系统

2022-07-20 23:04:59

矩阵分解算法Spark

2020-06-28 07:30:00

推荐算法推荐系统

2021-11-15 12:45:44

协同过滤算法架构

2017-04-27 18:09:26

item embedd推荐系统算法

2018-05-21 08:22:14

自编码器协同过滤深度学习

2018-03-23 11:56:09

相似性推荐推荐算法推荐

2018-03-23 11:33:56

协同过滤程序算法

2024-03-11 08:00:00

位置偏差算法矩阵分解算法

2019-05-05 09:00:00

数据分析算法推荐系统

2024-07-23 08:00:00

2024-10-29 09:00:00

2017-06-29 09:15:36

推荐算法策略

2024-02-05 09:30:10

推荐算法深度学习内容过滤

2021-12-16 08:00:00

推荐系统MovieMat数据

2021-11-12 11:51:03

基于内容的推荐查询推荐

2020-06-29 07:00:00

推荐算法推荐系统

2023-11-17 23:02:38

模型学习

2015-06-25 10:57:15

推荐系统老婆算出来
点赞
收藏

51CTO技术栈公众号