作者回复: 赞,这是业界的解决方法之一,存储特征的snapshot。
作者回复: 我在存储模块那节课说过,SparrowRecsys项目确实对存储模块进行了一定程度的简化,实际应用中还是要多考虑分级存储,redis实际上当作一个缓存层来使用。
关于大量数据key value数据的存储和线上查找,可以多调研rocksdb,cassandra,dynamodb和mongodb。
作者回复: 用户id和电影id都是非常重要的特征,因为他们之间的关系包含了用户的历史行为信息,其中又隐含了非常多的用户的兴趣偏好。
作者回复: 两个问题都很好,希望大家都有这样实践中的思考。
第一个问题。基本原则是我在分析完分数的总体分布后得出的,3.5分基本是正负样本比例1:1的分界线,另外大于3.5分也符合我们直观意义上的高分,所以认为3.5分是比较合理的。
第二个问题。确实像你说的这样,我们实践中经常从时间戳中提取出周末,假日,季节这些特征,因为这些时间特征往往影响着数据的一些潜在模式,所以还是非常有价值的。
作者回复: 是的,是spark sql和直接操作dataframe的区别。直接操作dataframe不用register
作者回复: 这是个好问题,涉及到默认值选取的问题。常规做法是把全局的均值填进去,但其实没有什么统一的最好的方法。
作者回复: 是这样,第一种方式是不建议采用的。第二种我建议缩短数据分割的粒度,比如改成T-1小时
作者回复: 是这样,最好要进行window处理。可以自行修改提交PR
作者回复: 先分词再word2vec
作者回复: 组合特征当然可以通过人工组合的手段进行组合,这点我们仍然可以沿用之前传统机器学习的经验。
对于深度学习模型来说,也可以交由模型的内部结构来组合,这一点后面关于模型的讲解还会涉及到。
作者回复: 合理
确实真实特征是冷启动的问题,可以查阅一些冷启动方面的文章。
作者回复: 可以参考我的这篇文章https://zhuanlan.zhihu.com/p/351390011
作者回复: 当然可以去尝试,这里只为大家理解原理提供一种方法。
作者回复: 第一个问题确实是个bug,我已经提交了修改。
第二个问题我这边不存在,可能还需要你来debug一下。确认本地的redis环境都配置好了吧?
作者回复: 1. 可以的,也是常用的做法,就是预训练embedding+深度模型的做法
2. 这个问题不是特别理解,我已经在这节专门讲了如何用window函数生成用户和物品特征,来消除未来信息,应该是回答了你这个问题?