简介
- similarity_user = train_matrix.dot(train_matrix.T) + 1e-9
- norms = np.array([np.sqrt(np.diagonal(similarity_user))])
- similarity_user = ( similarity_user / (norms * norms.T) )
- similarity_movie = train_matrix.T.dot(train_matrix) + 1e-9
- norms = np.array([np.sqrt(np.diagonal(similarity_movie))])
- 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" )算法来实现。
该项目中,我会聚焦于“协同过滤”办法。起首,我将评论辩论若何 不应用回归, 而是 片子(用户)类似度来猜测评分 ,并基于类似度做片子推荐。然后,我将评论辩论若何 应用回归同时进修潜在特点、做片子推荐 。最后会谈谈 如安在推荐体系中应用深度进修 。
片子类似性
对于基于协作过滤的推荐体系,起重要建立评分矩阵。个中,每一行表示一个用户,每一列对应其对某一片子的打分。建立的评分矩阵如下:
- df = pd.read_csv('ratings.csv', sep=',')
- df_id = pd.read_csv('links.csv', sep=',')
- df = pd.merge(df, df_id, on=['movieId'])
- rating_matrix = np.zeros((df.userId.unique().shape[0], max(df.movieId)))
- for row in df.itertuples():
- rating_matrix[row[1]-1, row[2]-1] = row[3]
- rating_matrix = rating_matrix[:,:9000]
这里“ratings.csv”包含用户id,片子id, 评级,和时光信息;"link.csv"包含片子id, IMDB id,和TMDB id。每一个片子应用 API 大年夜 Movie Databasewebsite 获得海报,都须要 IMDB id——是以,我们将两缸莨狁浇忧⒔一路。我们考验了评分矩阵的稀少性,如下:
推荐阅读
脚本下载 【编辑推荐】亚信安然成功抵抗全球第一只勒索蠕虫WannaCry收集病毒入侵!国度网信安然中间教你如许做前端安然之XSS进击收集安然始创公司存活之道小议验证码的安然性及若何绕过【义>>>详细阅读
地址:http://www.17bianji.com/lsqh/35259.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示