作者回复: jdk推荐使用java8的版本,因为spark目前对java8以上版本支持不好。
作者回复: 简单来说就是: 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首页说明运行成功。
作者回复: 要有知识广度和宽度的概念,就像你做高考试卷,如果第一道题比较难,不太会,你总不能在第一道题上就花半个小时去解它吧,肯定是先跳过,把整体上比较简单的做完再回头做第一道。 技术学习,和技术积累也是这样的,先知全局,再有针对性的深入,提高,否则你整体的技术水平肯定不会太高。
作者回复: 这是个好问题。 五六年前的传统推荐系统不少还在用协同过滤作为主排序模型。这几年慢慢被淘汰了,排序层变成了以深度学习推荐模型为主的复杂模型。 但因为协同过滤类算法比较简单,比如矩阵分解之后可以进行embedding快速召回,所以放在召回层也完全适用。 文章中推荐系统的架构是一个比较经典的架构,但也没必要认为它是无法改变的真理。在实际应用场景之中要根据业务特点灵活运用。
作者回复: 非常好,几乎就是我想说的了。你说的前一部分是content based特征,后一部分是user behavior类特征。一般从对结果的影响大小来看,user behaviour特征在电影推荐、电商推荐等场景下都是更重要的。
作者回复: 非常好的实践经验。在设计召回层和排序层的时候一般要联合设计,召回层要特别关注召回率指标。 如果你认为你的排序模型效果是非常不错的,把性别和年龄特征召回的item排在后面,就说明二者相关的item不应该被召回。 如果年龄和性别这两个特征对结果影响很大,那为什么排序层模型训练的时候不引入这两个特征呢? 所以需要再重新评估一下两个层,做一个重新的设计。
作者回复: 非常好。推荐给其他同学参考。
作者回复: 非常赞
作者回复: 线上部分会使用java,spark部分会使用scala,tensorflow部分会使用python。