作家
登录

如何用深度学习推荐电影?教你做自己的推荐系统!

作者: 来源: 2017-05-17 09:30:42 阅读 我要评论

简介

  1. similarity_user = train_matrix.dot(train_matrix.T) + 1e-9 
  2. norms = np.array([np.sqrt(np.diagonal(similarity_user))]) 
  3. similarity_user = ( similarity_user / (norms * norms.T) ) 
  4. similarity_movie = train_matrix.T.dot(train_matrix) + 1e-9 
  5. norms = np.array([np.sqrt(np.diagonal(similarity_movie))]) 
  6. similarity_movie = ( similarity_movie / (norms * norms.T) ) 

几乎所有人都爱好与家人、同伙一路不雅看片子度过闲暇时光。大年夜家可能都有过如许的体验:本想在接下来的两个小时里看一个片子,却坐在沙发上坐了20分钟不知道看什么,选择艰苦症又犯了,结不雅好心境也变得沮丧。所以,我们很须要一个电脑代劳,在做遴选片子的时刻供给推荐。

如今,片子智能推荐体系已经成为日常生活中的一部分。

Data Science Central 曾表示:

“固然硬数据很难获得,但知恋人士估计,对亚马逊和Netflix如许的大年夜型电商平台,推荐体系为它们带来高达10%至25%的收入增长”。

成功找到了蜘蛛侠!

在这个项目中, 我研究了一些针对片子推荐的根本算法,尝尝试精深度进修融入到片子推荐体系中。

把娱乐与视觉艺术相结合,片子是一个很好的例子。片子海报可以直接、快速地把片子信息传达给不雅众。Design Mantic表示:“不论上映前后,片子海报都是创造噱头的重要身分。多半的人(目标不雅众)都根据海报来决定买不买票,看不看片子。”我们甚至可以仅仅根据海报字体,来推想这个片子的情感。

这听起来竽暌剐点像魔术——但看一眼海报就猜测出片子的类型,切实其实是可能的。就拿我来说,瞟一眼海报就知道我想不想看这个片子了。举个例子,我不是卡通迷,一看到有卡通主题海报,就知道不是我的菜。这个决定计划的过程很直接,并不须要浏览片子评论(不肯定谁真的有时光读那些评论)。是以,除了标准的片子推荐算法,我还用了深度进修来处理海报,并将类似的片子推荐给用户。最注目标是模仿仁攀类视觉,并仅仅经由过程不雅察海报,就能用深度进修创建一个直不雅的片子推荐体系。该项目是受到Ethan Rosenthal博客启发。我对他博客里的代码进行了修改,以适应这个项目标算法。

我们用的是大年夜 MovieLens 下载的片子数据集。他包含9066个片子和671名用户,分成了100000个打分和1300个标签。这个数据集最后更新于10/2016.

协同过滤

粗略地说,有三种类型的推荐体系(不包含简单的评级办法)

  • 基于内容的推荐

  • 协同过滤

  • 混淆模型

“基于内容的推荐”是一个回归问题,我们把片子内容作为特点,对用户对片子的评分做猜测。

而在“协同过滤”推荐体系中,一般无法提前获得内容特点。是经由过程用户之间的类似度(用户们给了用一个片子雷同的评级)和片子之间的类似度(有类似用户评级的片子),来进修潜在特点,同时猜测用户对片子的评分。此外,进修了片子的特点之后,我们便可以衡量片子之间的类似度,并根据用户汗青不雅影信息,向他/她推荐最类似的片子。

“基于内容的推荐”和“协同过滤”是10多年前最先辈的技巧。很显然,如今有很多模型和算法可以进步猜测效不雅。比如,针对事先缺乏用户片子评分信息的情况,可以应用隐式矩阵分化,用偏好和置信度代替用户片子打分——比如用户对片子推荐有若干次点击,以此进行协同过滤。别的,我们还可以将“内容推荐”与“协同过滤”的办法结合起来,将内容作为侧面信息来进步猜测精度。这种混淆办法,可以用“进修进行排序”("Learning to Rank" )算法来实现。

该项目中,我会聚焦于“协同过滤”办法。起首,我将评论辩论若何 不应用回归, 而是 片子(用户)类似度来猜测评分 ,并基于类似度做片子推荐。然后,我将评论辩论若何 应用回归同时进修潜在特点、做片子推荐 。最后会谈谈 如安在推荐体系中应用深度进修 。

片子类似性

对于基于协作过滤的推荐体系,起重要建立评分矩阵。个中,每一行表示一个用户,每一列对应其对某一片子的打分。建立的评分矩阵如下:

  1. df = pd.read_csv('ratings.csv', sep=','
  2. df_id = pd.read_csv('links.csv', sep=','
  3. df = pd.merge(df, df_id, on=['movieId']) 
  4. rating_matrix = np.zeros((df.userId.unique().shape[0], max(df.movieId))) 
  5. for row in df.itertuples(): 
  6. rating_matrix[row[1]-1, row[2]-1] = row[3] 
  7. rating_matrix = rating_matrix[:,:9000] 

这里“ratings.csv”包含用户id,片子id, 评级,和时光信息;"link.csv"包含片子id, IMDB id,和TMDB id。每一个片子应用 API 大年夜 Movie Databasewebsite 获得海报,都须要 IMDB id——是以,我们将两缸莨狁浇忧⒔一路。我们考验了评分矩阵的稀少性,如下:

 1/5    1 2 3 4 5 下一页 尾页

  推荐阅读

  如何使用WhatsApp收集大量数据(附脚本)

脚本下载 【编辑推荐】亚信安然成功抵抗全球第一只勒索蠕虫WannaCry收集病毒入侵!国度网信安然中间教你如许做前端安然之XSS进击收集安然始创公司存活之道小议验证码的安然性及若何绕过【义>>>详细阅读


本文标题:如何用深度学习推荐电影?教你做自己的推荐系统!

地址:http://www.17bianji.com/lsqh/35259.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)