深度学习推荐系统实战
王喆
Roku 推荐系统架构负责人,前 hulu 高级研究员,《深度学习推荐系统》作者
33298 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

国庆策划 | 深度学习推荐系统基础,你掌握了多少?

定义:电影被评价的次数
添加热度排序规则
热度
满分100分
每道题10分
推荐服务器代码
排序规则
首页内部电影排序
show me the code
选做
查缺补漏
基础知识
10道选择题
交流
movielens数据
代码阅读
留言区评论
两道实践题
测试题
基础架构篇
10月9日
SparrowRecSys
国庆假期
王喆
深度学习推荐系统基础

该思维导图由 AI 生成,仅供参考

你好,我是王喆。
今天是国庆假期的第二天,我在基础架构篇的基础上,设计了一套测试题,希望你能在假期里试做一下,温故知新,巩固所学。
在这套测试题中,有 10 道选择题,每道题 10 分,满分为 100。这些内容全部来自我们之前专栏所讲的内容,都是基础知识,希望能帮助你查缺补漏。
最后呢,我还为你准备了两道实践题,这两道题为选做。如果你对自己有更高的要求,我希望你可以 show me the code!当然,在答题和实践中遇到任何问题,都可以在留言区评论,我们一起来探讨。还等什么,点击下面的按钮开始测试吧!

选择题

问答题

第一题:通过阅读 SparrowRecSys 的代码,你能找到首页中每行内部的电影都是按照什么排序的吗?
第二道题:如果你已经发现了排序的规则,你能在推荐服务器的代码里添加一个叫“热度”(popularity)的排序规则,然后让首页按照“热度”排序吗(💡补充:热度的定义是“这个电影被评价的次数”)?
我相信这是熟悉 movielens 数据、推荐服务器代码的一个非常好的机会,那在实现过程中的任何问题,都欢迎你留言和我交流!我们 10 月 9 日再见!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深度学习推荐系统实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 神经蛙
    课后题: 1.排序依据: 根据影片历史平均评分,降序排列。详细调用过程: a.index.html里面的js代码,调用在头部加载的recsys.js 的addGenreRow, 传入参数(页面ID,影片类别名称,rowId, 每行放置影片个数,baseUrl) b.在addGenreRow调用已注册的 getrecommendation 服务,传参的排序依据为rating. c.服务getrecommendation绑定类RecommendationService, GET请求数据 d.RecommendationService.doGet 中 调用 online.datamanager.DataManager#getMoviesByGenre,根据每个影片的历史平均rating,降序排列. 2.根据popularity排序: a.recsys.js function addGenreRow(pageId, rowName, rowId, size, baseUrl) { addRowFrame(pageId, rowName, rowId, baseUrl); $.getJSON(baseUrl + "getrecommendation?genre="+rowName+"&size="+size+"&sortby=popularity", function(result){ $.each(result, function(i, movie){ appendMovie2Row(rowId, movie.title, movie.movieId, movie.releaseYear, movie.averageRating.toPrecision(2), movie.ratingNumber, movie.genres,baseUrl); }); }); }; b.com.wzhe.sparrowrecsys.online.datamanager.DataManager#getMoviesByGenre: 添加一行: case "popularity": movies.sort((m1, m2) -> Integer.compare(m2.getRatingNumber(), m1.getRatingNumber()));break; 用mmovie.getRatings.size() 也行,但应该效率比上面的低。 c.改改前端的展示代码 不太擅长

    作者回复: 非常好。前端展示代码不用修改,修改js就可以了。

    2020-11-24
    2
    24
  • Sean
    第一题 是根据电影的分数(rating)排序的 第二题 1. 先从RecSysServer.java进入,找到68行的RecommendationService 2. 再看到getMoviesByGenre.java第35行的getMoviesByGenre() 3. 在switch中新增: case "popularity": movies.sort((m1, m2) -> Integer.compare(m2.getRatingNumber(), m1.getRatingNumber()));break; 就是按照热度排序了 4. 再回到RecommendationService的33行, String sortby = request.getParameter("sortby"); 代表排序依据的参数是由某个api传入的 5. 找到recsys.js第102行,把sortby=rating修改为sortby=popularity即可:$.getJSON(baseUrl + "getrecommendation?genre="+rowName+"&size="+size+"&sortby=popularity", function(result)

    作者回复: 赞

    2021-04-28
    2
    10
  • 朱月俊
    先说一下每一种类型的电影是如何排名的: 默认是按照打分平均分数以及发布时间排名,在recsys.js中的addGenereRow处指定排名的方式。 如何新增排名算法,比如增加热度这个指标? 需要在DataManager中照葫芦画瓢增加ratingNumber,然后在js中指定一下即可。 还在研究的问题:首页是如何调用getrecommendation接口以及如何传入参数的。麻烦老师指教一下。

    作者回复: 关注一下addGenereRow方法中的sortby参数 $.getJSON(baseUrl + "getrecommendation?genre="+rowName+"&size="+size+"&sortby=rating"

    2020-10-07
    8
  • Kepler
    问题:如果修改js及对应的RecommendationService后,主页仍未显示排序效果 解决: 方式1. 拉新github(推荐,避免后续有什么其他问题) 方式2. 修改index.html的<script src="./js/recsys.js"></script>,原加载js文件为recsys.js?v=1.19

    作者回复: 非常好 改js版本可是避免很多缓存问题

    2021-02-03
    3
  • ALAN
    问题一:按电影的平均打分从高到低排序 问题二:修改DataManager.java中221行代码。将compara函数中参数getAverageRating函数改成getRatingNumber函数

    作者回复: 是的,如果需要看到效果的话,还需要修改一些recsys.js中相关的js代码

    2020-10-05
    3
  • 大钰儿
    今天拉的主干代码,默认用了redis载入embedding导致无法启动,是不是需要改一下😅

    作者回复: good point,已经改回了默认从file load数据

    2020-10-13
    2
  • 金鹏
    问题一: 首页每行(一个类别)按电影的AverageRating平均打分从高到低做为排序依据; 问题二: public List<Movie> getMoviesByGenre(String genre, int size, String sortBy){ if (null != genre){ List<Movie> movies = new ArrayList<>(this.genreReverseIndexMap.get(genre)); switch (sortBy){ case "rating":movies.sort((m1, m2) -> Double.compare(m2.getAverageRating(), m1.getAverageRating()));break; case "releaseYear": movies.sort((m1, m2) -> Integer.compare(m2.getReleaseYear(), m1.getReleaseYear()));break; case "popularity":movies.sort((m1, m2) -> Integer.compare(m2.getRatingNumber(), m1.getRatingNumber()));break; default: } ........

    作者回复: 赞。 要真正更改排序的方法,还需要修改一下前端js的一些条件。

    2020-10-02
    2
    2
  • 课后选择题习题第二题:感觉选项D其实也是深度学习带来的重要变革。 推荐系统是连接人与物的,那么如何表示和编码人与物就是非常重要的,毕竟只有更好的认知,才能带来更好的连接,深度学习带来的表示学习我觉的能算是重要变革吧?虽然非深度学习时代的矩阵分解等得到的latent vector也算是embedding吧,但和如今万物皆可embedding,应该算是个重要变革?

    作者回复: 这样理解也没有错。原题选项D是 “推荐系统可利用的特征发生了根本性的变化”,我的本意是推荐系统可利用的特征原数据其实没有变化,只是处理特征的方式发生了根本性的改变。 只是一道选择题,大家理解知识就好,不用解决于说法。

    2021-01-06
    1
  • VICTOR
    针对修改完后前端没有现实的原因,可能是因为js缓存的原因,尝试Win: Ctrl+Shift+R / Mac OS: Cmd+Shft+R 强制刷新缓存进行刷新
    2021-11-29
    1
  • 闫阿佳需要学习
    修改index.html的<script src="./js/recsys.js"></script> 没有起作用,最后还是清楚缓存重新加载后显示的 步骤:(chrome)F12->勾选" Disable cache" -> 刷新
    2021-10-04
    1
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部