一、推荐系统的时代
数据收集的快速增长带来了一个新的信息时代。数据正被用于创建更高效的系统,而这正是推荐系统发挥作用的地方。推荐系统是一种信息过滤系统,因为它们可以提高搜索结果的质量,并提供与搜索项目更相关或与用户的搜索历史更相关的项目。
它们用于预测用户对某个项目的评分或偏好。几乎每一家大型科技公司都以某种形式应用了它们:亚马逊用它来向客户推荐产品,YouTube用它来决定下一步在autoplay上播放哪个视频,Facebook用它来推荐喜欢的页面和关注的人。此外,像Netflix和Spotify这样的公司在很大程度上依赖其推荐引擎的有效性来实现其业务和成功。
在这个内核中,我们将使用TMDB5000电影数据集构建一个基线电影推荐系统。对于像我这样的新手来说,这个内核将在推荐系统中起到很好的基础作用,并将为您提供一些东西。
那我们走吧!
推荐系统基本上有三种类型:-
人口统计过滤——根据电影人气和/或类型,向每个用户提供一般性建议。该系统向具有相似人口统计特征的用户推荐相同的电影。由于每个用户都是不同的,这种方法被认为太简单了。这一体系背后的基本理念是,更受欢迎、更受好评的电影更容易受到普通观众的喜爱。
基于内容的过滤-他们建议基于特定项目的类似项目。该系统使用项目元数据,例如电影的类型、导演、描述、演员等,来提出这些建议。这些推荐系统背后的一般理念是,如果一个人喜欢某个特定的项目,他或她也会喜欢与之相似的项目。
协同过滤-此系统匹配具有相似兴趣的人,并基于此匹配提供建议。与基于内容的过滤器不同,协作过滤器不需要项目元数据。
二、加载数据
import pandas as pd
import numpy as np
df1=pd.read_csv('../input/tmdb-movie-metadata/tmdb_5000_credits.csv')
df2=pd.read_csv('../input/tmdb-movie-metadata/tmdb_5000_movies.csv')
第一个数据集包含以下功能:-
电影id-每部电影的唯一标识符。
演员-主角和配角的名字。
剧组-导演、编辑、作曲家、作家等的姓名。
第二个数据集具有以下功能:-
预算-制作电影的预算。
类型-电影、动作片、喜剧、惊悚片等的类型。
主页-电影主页的链接。
id-这实际上是第一个数据集中的电影id。
关键词-与电影相关的关键词或标签。
原创语言-电影制作时使用的语言。
原片名-翻译或改编前的电影片名。
概述-电影的简要描述。
流行度-指定电影流行度的数字量。
制片公司——电影的制片公司。
生产国-生产该产品的国家。
发布日期-发布的日期。
收入-电影产生的全球收入。
runtime—电影的运行时间(分钟)。
状态-“发布”或“传闻”。
标语-电影的标语。
片名——电影的片名。
投票平均-电影的平均收视率。
计票-收到的票数。
让我们将“id”列上的两个数据集连接起来
df1.columns = ['id','tittle','cast','crew']
df2= df2.merge(df1,on='id')
人口统计过滤-
在开始之前-
我们需要一个指标来评分或评价电影
计算每部电影的分数
对分数进行排序,并向用户推荐评级最好的电影。
我们可以用电影的平均收视率作为分数,但这样做是不够公平的,因为平均收视率为8.9且只有3票的电影不能被认为比平均收视率为7.8但只有40票的电影更好。因此,我将使用IMDB的加权评级(wr),如下所示:-
哪里
v是电影的票数;
m是图表中列出的最低票数;
R是电影的平均收视率;和
C是整个报告的平均投票数
我们已经有了v(投票计数)和R(投票平均数),C可以计算为
C= df2['vote_average'].mean()
因此,所有电影的平均评分在10分制下约为6。下一步是确定m的适当值,即图表中列出的最低投票数