国庆策划 | 深度学习推荐系统基础,你掌握了多少?
王喆
该思维导图由 AI 生成,仅供参考
你好,我是王喆。
今天是国庆假期的第二天,我在基础架构篇的基础上,设计了一套测试题,希望你能在假期里试做一下,温故知新,巩固所学。
在这套测试题中,有 10 道选择题,每道题 10 分,满分为 100。这些内容全部来自我们之前专栏所讲的内容,都是基础知识,希望能帮助你查缺补漏。
最后呢,我还为你准备了两道实践题,这两道题为选做。如果你对自己有更高的要求,我希望你可以 show me the code!当然,在答题和实践中遇到任何问题,都可以在留言区评论,我们一起来探讨。还等什么,点击下面的按钮开始测试吧!
选择题
问答题
第一题:通过阅读 SparrowRecSys 的代码,你能找到首页中每行内部的电影都是按照什么排序的吗?
第二道题:如果你已经发现了排序的规则,你能在推荐服务器的代码里添加一个叫“热度”(popularity)的排序规则,然后让首页按照“热度”排序吗(💡补充:热度的定义是“这个电影被评价的次数”)?
我相信这是熟悉 movielens 数据、推荐服务器代码的一个非常好的机会,那在实现过程中的任何问题,都欢迎你留言和我交流!我们 10 月 9 日再见!
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深度学习推荐系统实战》,新⼈⾸单¥68
《深度学习推荐系统实战》,新⼈⾸单¥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-24224 - 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-28210 - 朱月俊先说一下每一种类型的电影是如何排名的: 默认是按照打分平均分数以及发布时间排名,在recsys.js中的addGenereRow处指定排名的方式。 如何新增排名算法,比如增加热度这个指标? 需要在DataManager中照葫芦画瓢增加ratingNumber,然后在js中指定一下即可。 还在研究的问题:首页是如何调用getrecommendation接口以及如何传入参数的。麻烦老师指教一下。
作者回复: 关注一下addGenereRow方法中的sortby参数 $.getJSON(baseUrl + "getrecommendation?genre="+rowName+"&size="+size+"&sortby=rating"
2020-10-078 - Kepler问题:如果修改js及对应的RecommendationService后,主页仍未显示排序效果 解决: 方式1. 拉新github(推荐,避免后续有什么其他问题) 方式2. 修改index.html的<script src="./js/recsys.js"></script>,原加载js文件为recsys.js?v=1.19
作者回复: 非常好 改js版本可是避免很多缓存问题
2021-02-033 - ALAN问题一:按电影的平均打分从高到低排序 问题二:修改DataManager.java中221行代码。将compara函数中参数getAverageRating函数改成getRatingNumber函数
作者回复: 是的,如果需要看到效果的话,还需要修改一些recsys.js中相关的js代码
2020-10-053 - 大钰儿今天拉的主干代码,默认用了redis载入embedding导致无法启动,是不是需要改一下😅
作者回复: good point,已经改回了默认从file load数据
2020-10-132 - 金鹏问题一: 首页每行(一个类别)按电影的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-0222 - 轩课后选择题习题第二题:感觉选项D其实也是深度学习带来的重要变革。 推荐系统是连接人与物的,那么如何表示和编码人与物就是非常重要的,毕竟只有更好的认知,才能带来更好的连接,深度学习带来的表示学习我觉的能算是重要变革吧?虽然非深度学习时代的矩阵分解等得到的latent vector也算是embedding吧,但和如今万物皆可embedding,应该算是个重要变革?
作者回复: 这样理解也没有错。原题选项D是 “推荐系统可利用的特征发生了根本性的变化”,我的本意是推荐系统可利用的特征原数据其实没有变化,只是处理特征的方式发生了根本性的改变。 只是一道选择题,大家理解知识就好,不用解决于说法。
2021-01-061 - VICTOR针对修改完后前端没有现实的原因,可能是因为js缓存的原因,尝试Win: Ctrl+Shift+R / Mac OS: Cmd+Shft+R 强制刷新缓存进行刷新2021-11-291
- 闫阿佳需要学习修改index.html的<script src="./js/recsys.js"></script> 没有起作用,最后还是清楚缓存重新加载后显示的 步骤:(chrome)F12->勾选" Disable cache" -> 刷新2021-10-041
收起评论