02 | Sparrow RecSys:我们要实现什么样的推荐系统?
02 | Sparrow RecSys:我们要实现什么样的推荐系统?
讲述:王喆
时长12:39大小11.57M
废话不多说,直接运行
“麻雀虽小,五脏俱全”的 Sparrow Recsys
Sparrow Recsys 的功能有哪些
Sparrow Recsys 的数据从哪来?
1. movies.csv(电影基本信息数据)
2. ratings.csv(用户评分数据)
3. links.csv(外部链接数据)
Sparrow Recsys 涵盖的技术点
小结
课后思考
赞 77
提建议
精选留言(111)
- Capricornus置顶2020-12-22MAC OS系统 1.下载IDEA(https://www.jetbrains.com/idea/download/#section=mac) 2.下载JDK(https://www.oracle.com/java/technologies/javase-jdk15-downloads.html) 3.安装IDEA和JDK(JDK的路径~/Library/Java/JavaVirtualMachines/openjdk-15.0.1-1) 4.打开IDEA,打开File->Project Strucure->Project->Project JDK(我的好像会自动识别)。若没有识别(显示jdk15.1),点击三角号,自己添加,步骤Add SDK->JDK->选择上面提到的JDK路径选择。 5.在pom.xml点击右键,设置为maven project->'Reload project'。耐心等待,这个很费时间。 6.然后找到SparrowRecSys/src/main/java/com/SparrowRecSys/online/RecSysServer,右击选择"Run 'RecSysServer.main()'",程序就执行起来了. 7.浏览器中键入http://localhost:6010/展开
作者回复: jdk推荐使用java8的版本,因为spark目前对java8以上版本支持不好。
共 12 条评论54 - 挖掘机置顶2020-12-21windows下搭建推荐系统的步骤 1. 使用的vscode作为IDE 2. 编译命令为mvn package assembly:single 3. 我的web root uri在源代码里总是为空,稍微改了一下,这里是为了绕过去,也请指导的高手告诉正确方法 RecSysServer.java中49行改成了绝对路径 URI webRootUri = URI.create("file:/D:/Work/RecommendationSystem/Sparrow/SparrowRecSys/target/classes/webroot/"); 4. 运行java -jar target\SparrowRecSys-1.0-SNAPSHOT-jar-with-dependencies.jar即刻成功展开共 6 条评论11
- 浣熊当家2020-09-23因为没有项目经验,想知道git clone到本地之后,怎么运行这个Maven project呢?油管上有没有类似的demo可以看看,老师能出一下小的录屏么?万分感谢。。第一步就卡住了。。
作者回复: 简单来说就是: 1、到这个地址下载IDE, https://www.jetbrains.com/idea/download/#section=mac 2、安装IDEA 3、打开IDEA 4、选择File->Open->选择项目根目录 5、在pom.xml点击右键,设置为maven project(最新的IDE版本也可能不用) 6、找到类文件 class RecSysServer,右键点击-> run 7、浏览器输入http://localhost:6010/ 8、看到SparrowRecSys首页说明运行成功。
共 7 条评论38 - 嘿人2020-12-09王老师您好,我学习的时候就是经常把握不好“使用者”的度,碰到什么都想扎进去研究,导致很容易陷入‘局部极小值’,请问怎么把握这个度呢?
作者回复: 要有知识广度和宽度的概念,就像你做高考试卷,如果第一道题比较难,不太会,你总不能在第一道题上就花半个小时去解它吧,肯定是先跳过,把整体上比较简单的做完再回头做第一道。 技术学习,和技术积累也是这样的,先知全局,再有针对性的深入,提高,否则你整体的技术水平肯定不会太高。
34 - Hhha爲2020-09-23老师您好,我查阅了网上的一些博客资料,大多认为协同过滤这样的传统方法应该是在召回层。,不过在您的图里是在排序(精排)层,可以问一下这样分类的理由是什么吗?谢谢!
作者回复: 这是个好问题。 五六年前的传统推荐系统不少还在用协同过滤作为主排序模型。这几年慢慢被淘汰了,排序层变成了以深度学习推荐模型为主的复杂模型。 但因为协同过滤类算法比较简单,比如矩阵分解之后可以进行embedding快速召回,所以放在召回层也完全适用。 文章中推荐系统的架构是一个比较经典的架构,但也没必要认为它是无法改变的真理。在实际应用场景之中要根据业务特点灵活运用。
34 - Geek_8a732a2021-08-05问题1: 1、数据部分 flink流处理平台准实时数据处理:src/main/java/com/sparrowrecsys/nearline/flink spark大数据离线数据处理: 数据处理:src/main/java/com/sparrowrecsys/offline/spark/embedding 特征工程:src/main/java/com/sparrowrecsys/offline/spark/featureeng 2、模型部分 模型部分,RecPySpark/src/com/sparrowrecsys/offline/pyspark 模型评估,src/main/java/com/sparrowrecsys/offline/spark/evaluate 离线模型训练,src/main/java/com/sparrowrecsys/offline/spark/model 模型计算,src/main/java/com/sparrowrecsys/online/model 模型部分,TFRecModel/src/com/sparrowrecsys/offline/tensorflow 3、在线服务部分 数据管理,包括电影、评分、客户端,src/main/java/com/sparrowrecsys/online/datamanager 为你推荐、相似电影处理,src/main/java/com/sparrowrecsys/online/recprocess 提供http服务,src/main/java/com/sparrowrecsys/online/service 问题2 1、用户最近的观看历史,影片名字、主演、导演、影片类型,观看时长(“时长”受到别人回答的启发) 2、用户高分和低分的打分数据,点赞、踩、评论、分享(“分享”受到其他人回答的启发) 3、同类型用户最近的观影记录展开27
- pedro2020-09-22暂时没有去跑项目,先尝试回答问题二吧,对于一个电影爱好者而言,从我的角度出发,一个能够取悦我的,电影推荐系统,必须满足我在电影种类,演员,电影内容,电影质量上的需求,要说什么最有帮助,我觉得应该是用户历史浏览记录。
作者回复: 非常好,几乎就是我想说的了。你说的前一部分是content based特征,后一部分是user behavior类特征。一般从对结果的影响大小来看,user behaviour特征在电影推荐、电商推荐等场景下都是更重要的。
共 2 条评论27 - Don2020-09-23召回有优化之后,排序并不能捕捉到召回新增的特征,在排序后召回的优化点弱化很多,这种一般怎么处理?比如:召回有话增加了性别+年龄的特征,但是排序层没有用这维特征,导致根据该特征召回的内容排序后都在靠后位置没有机会曝光
作者回复: 非常好的实践经验。在设计召回层和排序层的时候一般要联合设计,召回层要特别关注召回率指标。 如果你认为你的排序模型效果是非常不错的,把性别和年龄特征召回的item排在后面,就说明二者相关的item不应该被召回。 如果年龄和性别这两个特征对结果影响很大,那为什么排序层模型训练的时候不引入这两个特征呢? 所以需要再重新评估一下两个层,做一个重新的设计。
共 2 条评论18 - 夜雨声烦2020-10-09JAVA小白 mac os系统 安装Sparrow Recsys时的历程: 1,安装java8和scala2.11 网上有很多参考教程。 安装Java8:https://blog.csdn.net/irokay/article/details/71374426 遇到的/etc/profile是readonly的情况,解决方法是更改该文件的权限,增加写权限:775.https://blog.csdn.net/good007boy/article/details/88659162 安装scale:https://blog.csdn.net/u012373815/article/details/53231292 遇到的问题,在执行scala的时候出现“scala [ERROR] Failed to construct terminal; falling back to unsupported”,应该是跟iterm2起了什么冲突,解决方案:https://blog.csdn.net/merrily01/article/details/102823539 2,安装、打开IDEA 略过 3,执行文件 在pom.xml点击右键,设置为maven project->'Reload project' 配置SDK:在File->Project Structure->Project配置Project SDK 然后找到SparrowRecSys/main/java/online/RecSysServer,右击选择"Run 'RecSysServer.main()'",程序就执行起来了 浏览器输入http://localhost:6010/,就可以看到SparrowRecSys首页展开
作者回复: 非常好。推荐给其他同学参考。
共 6 条评论15 - 陈威洋2021-06-18## 上个旧版本有些链接失效,现在补上这个新的,而且更新了步骤。 win7下 搭建 推荐系统 的步骤: 1. 第1步骤:下载IDEA。 https://www.jetbrains.com/idea/download/#section=windows 2. 第2步骤:如何下载和配置JDK1.8(一定要JDK1.8) https://www.cnblogs.com/hejh/p/11276434.html 3.第3步骤:IDEA配置JDK1.8(一定要JDK1.8) https://blog.csdn.net/liluo_2951121599/article/details/78484776 4. 第4步骤:window下安装scala步骤 https://www.cnblogs.com/onlyxx/p/5168882.html 4.1 第4.1步骤:Scala安装问题找不到主类的(不要安装在有空格的路径) https://blog.csdn.net/weekdawn/article/details/94625067 4.2 第4.2步骤:Scala2.11要匹配JDK1.8,否则出问题 https://blog.csdn.net/yulutian/article/details/80566728 5. 第5步骤:IDEA配置Scala https://www.cnblogs.com/starzy/p/10461038.html 6. 第6步骤:win7安装hadoop spark https://www.jianshu.com/p/9f40fe1b6587 7. 第7步骤:安装Redis https://www.cnblogs.com/liuqingzheng/p/9831331.html 大功告成,如果安装过程有问题的同学,请留言,我们一起解决!~^^展开
作者回复: 非常赞
共 6 条评论13 - 明月2020-11-25老师,这是需要去了解一下java吗,在校生做推荐系统还是用Python
作者回复: 线上部分会使用java,spark部分会使用scala,tensorflow部分会使用python。
共 2 条评论12 - 何去何从2020-09-23老师您好!因为之前工作没有过推荐系统相关的项目经验,如果后期有机会面试相关岗位,能否把这个项目写到简历中当做一个项目经验呢?
作者回复: 这个看自己吧,如果你能吃透细节,也能修改,我觉得不是不可以。
10 - 海2020-12-29老师,马上就要秋招找工作了。时间问题只学习了python,感觉学习java体系来不及了,为了找工作想在scala系和pyspark系取舍一下。请问pyspark等用python调大数据相关技术在工业界运用广吗?
作者回复: 如果确实时间紧张的话,就不要去钻研scala了,业界面试不会在乎你是用scala实现的还是python实现的。着重于spark的原理和实践能力是重点。
共 2 条评论7 - 悠悠我心2020-09-24运行起来了,还没仔细看代码,期待
作者回复: 代码还会持续更新,注意在每次新的实践课前通过git pull来更新代码。
7 - wolong2020-09-22大佬您好!我这边大概从事搜索、广告、推荐的工作也大概有六七年的光景,我有几个一直困扰的问题希望您能抽时间帮忙解答。 1.现在关于实时广告点击率预估,业界主流的深度学习解决方案是怎样的思路? 2.深度强化学习在推荐行业目前的应用主要瓶颈在那些点?
作者回复: 我们在之后的课程中讨论这些问题吧。都会在相应的章节中有介绍。因为这两个问题都是要体系化回答的,不是一两句能讲清楚,期待之后咱们再一起讨论。
共 2 条评论7 - 太子长琴2020-09-25用户特征,尤其是行为特征,比如点击记录,有效浏览时长,点评记录,点评结果 物品特征,主演,类型,评分
作者回复: 非常好
6 - Geek43292021-02-23如果哪位同学遇到maven无法下载依赖,报错guava21的类似错误,可以在pom中指定guava版本号如下: <dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>21.0</version> </dependency> </dependencies> </dependencyManagement> 猜测原因,maven版本过低,解析pom依赖树时失败展开共 2 条评论5
- zly2020-12-15请问作为应届生想找推荐系统的工作,除了python以外更推荐学习什么语言呢(看到有的企业需要C++/C,有的要Java),转专业小白有点迷茫
作者回复: python和java是基本的,有的公司的服务器端用C++,如果觉得时间有限,C++可以放一放。
5 - didishuibulou2020-09-23并没有看到“为你推荐页”,是在哪里啊?
作者回复: 项目还不完全,会随着课程进展逐渐完成。
共 8 条评论5 - MutouMan2021-04-25请问下使用tensorflow而不是pytorch是有什么技术原因吗?主要对tensorflow不太熟悉,想知道是不是需要学习tensorflow作为学习推荐系统的主力框架。谢谢
作者回复: 不需要一定是用tensorflow,只不过这门课程主要选择了tf,另外tf在工业级模型部署上有优势,pytorch这部分有所欠缺。
4