基于Python的协同过滤算法的研究与应用实现
2019-11-12胡正江兰海翔卢涵宇侯汝冲薛安琪
胡正江 兰海翔 卢涵宇 侯汝冲 薛安琪
摘要:在科技日新月异以及知识产权日益重视的今天,大部分用户都会选择在播放平台看电影。例如腾讯视频、爱奇艺等,用户们急需合理的电影推荐系统。本文为基于Python的协同过滤算法将个性化推荐技术与电影系统进行有机结合,给用户进行电影个性化推荐。
关键词:个性化推荐;协同过滤;Python
中图分类号: TP208 文献标识码:A
文章编号:1009-3044(2019)25-0202-03
Abstract: with the rapid development of science and technology and the increasing importance of intellectual property, most users will choose to watch movies on the broadcast platform.For example, tencent video, iQIYI, etc., users are in urgent need of a reasonable movie recommendation system.In this paper, Python and collaborative filtering algorithm are used to organically combine personalized recommendation technology with movie system to give users personalized movie recommendation.
Key words: Personalized Recommendation;Collaborative Filtering;Python
平常在電商平台购物时经常看到“你可能喜欢”这样的推荐,点进去一看大部分都是自己经常浏览的东西相关的,这个技术一下吸引了我,我平常喜欢看电影,而目前视频播放平台并不能投其所好的给用户推荐符合口味的电影,更多的是推荐娱乐圈的视频。所以基于Python的电影个性化推荐系统就这样产生了,当然这并不是我最先想到的,其实之前就有了一些相关的电影推荐系统,我对比分析发现他们的研究各有优缺,都不够完善,研究不够深入,我的研究只是站在前人的肩膀上进行优化。
大多数人在工作和生活之余都会看几部电影,看电影不仅可以让人释放压力,还可以增长知识等等。本系统致力于用大数据以及深度学习等热点技术给影迷理性而又科学的推荐他们喜欢的电影。其实推荐系统应用很广泛,比如常见的电商产品推荐,即电商平台根据你平常的浏览以及购买过的东西来给你推荐你可能喜欢的东西,这类推荐系统为电商平台获利不少。所以我希望构造一个根据用户的个人口味进行个性化推荐的电影推荐系统。个性化推荐不像令人讨厌的广告弹窗,它是投其所好,解决用户的需求。
国内外目前电影推荐系统的研究主要集中在系统的理论和技术方面,取得了不错的成果。对于评价数据的稀疏性,有学者提出了一种优化的协同过滤推荐算法,也有基于项目评分预测的协同过滤推荐算法,采用一种新颖的相似度量方法计算目标用户的最近邻居[1]。针对算法的可扩充性,也有相关文献提出基于项目的协同过滤推荐算法,显著地提高了推荐系统的推荐质量。以上的各种方法各有优缺,所以现在很多研究者提出结合多种过滤技术的优点来克服自身的不足[2]。国内一些影视网站有自己的推荐系统,例如腾讯视频、爱奇艺以及优酷等,但是目前做得不是很好,推荐结果并不那么令人满意。
1基于协同过滤的推荐系统
1.1协同过滤算法介绍
协调过滤算法是目前最成功有效的个性化推荐算法,广泛应用与各领域中[3]。协同过滤算法分析用户的兴趣,然后在用户群中寻找指定的用户的相似兴趣的用户,最后综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度进行预测。
1.2 协同过滤算法实现步骤
协同过滤算法一般分三步实现:第一步,收集用户偏好,也就是获得用户对某些信息项的评价;第二步,找到相似的用户或物品,即分析用户之间的相似性并预测特定用户对某一信息的喜好。第三步,进行个性化电影推荐。
2 协同过滤算法实现
2.1 收集用户偏好
收集用户的偏好信息是电影个性化推荐系统的推荐效果的重要影响因素,基于用户的行为和偏好发现规律来进行推荐[4]。本系统使用评分的方式对电影个性化推荐系统提供用户的偏好信息。
2.2 寻找相似的用户
利用网络爬虫获取的电影评分数据中选择5个用户对2部电影的评分来说明如何通过用户对电影的偏好寻找相似的用户。对用户的网名采取用户123表示,具体信息见下表。
通过计算5个用户对5部电影的评分我们可以获得用户间的相似度数据。显示user1、user2和user4之间的相似度较高。有了相似度,我们就可以对用户进行电影个性化推荐。
d.为相似用户推荐电影
当我们向用户4推荐电影时,首先我们需要检查之前的相识度列表,发现用户1、2、4的相似度比较高。也就是说这三个用户是一个群体,他们拥有相同的偏好。所以我们可以对用户4推荐用户1和用户2喜欢的电影。但是我们不能直接推荐上表的5部电影,因为这5部电影用户4已经看过了,不能重复推荐。我们应该推荐他一些没有看过的电影。
在本系统中,我们需要向任意用户推荐电影,所以,首先让目标用户(这里假设为用户0,用户0对系统给出的任意10部电影进行评分,推测出他不喜欢的电影类型,然后系统通过皮尔逊相关度评价获取与用户0电影评分的相似度数据,从而向他进行个性化电影推荐。
3 主要研究内容与应用实现
3.1 研究内容
本研究的主要内容为获取大量用户对电影评分的数据,将获得的数据进行处理,然后建立模型并且对建立的模型进行训练,最后验证结果。本系统验证时需要用户对系统给出的任意10部电影进行打分,系统再根据用户的评分预测出用户不喜欢的电影类型,其中本系统设定了包括war、romance、horror以及crime等10多种电影类型,最后,加权平均所有人的评价值向目标用户进行电影推荐。
3.2 应用实现
首先录入用户信息,然后计算皮尔逊相关系数,找出有对某些电影兴趣相同的用户,最后通过加权平均所有人的评价值向目标用户进行电影推荐。首先导入网络爬虫爬起到的数据。
下面2张图是本个性化推荐系统中的推荐电影类型成果展示,当我给系统给出的10部电影打分后,系统推测出我不喜欢的电影类型为film_noir、comedy、unknown以及action。系统并不是很完美,这是因为训练的数据还不够多,后期还得进行改进。
4 结论
本文主要使用Python编程语言,首先利用网络爬虫技术将我需要的用户电影评分信息爬取下来,对大量的数据进行训练,有了数据集后利用皮尔逊相识度来计算相似度,有了相识度后进行电影推荐。让用户对系统所给的10部电影进行评分,系统不仅给出了他不喜欢的电影类型,而且给他推荐出他喜欢的电影。结果表明目标用户不喜欢的电影类型为film_noir、comedy、unknown以及action,与目标用户爱好相似的是user4、user1以及user2,相似度分别是0.816497、0.707107以及0.500000,并且给目标用户推荐《肖申克的救赎》以及《泰坦尼克号》两部目标用户喜欢的电影。本研究以用户为主,找出具有相同电影类型爱好的人,并对他们进行个性化电影推荐。
参考文献:
[1] 刘文佳, 張骏. 改进的协同过滤算法在电影推荐系统中的应用[J]. 现代商贸工业, 2018, 39(17):63-66.
[2] 王建洋. 基于深度学习的电影推荐系统研究与实现[D]. 西南交通大学,2018.
[3] 李诗羽. 基于协同过滤算法的个性化推荐系统的设计与实现[J]. 信息与电脑(理论版), 2018,405(11):58-59.
[4] 杨笑锋. 多维数据融合的电影推荐系统研究与实现[D]. 昆明理工大学,2018.
【通联编辑:光文玲】