个人理解的:
- 为什么要做
- 因为离线的数据太大了,比如user_id * item_id 的量级太大,不可能都离线算好,等到某个 user 来的,直接查表,得到item_id的排序
- 因为需要根据一些在线的特征来计算(当然也会有离线的特征),比如当前浏览的类目、当前时间段、等等之类的
- 因为需要实时反映一些新的模式。以前的模型,可能是事先算好的,一周更新一次(在线用的,也是这个事先算好的模型,只是会有部分在线计算的特征)。但是遇到一些特殊情况,比如某宝的双11,当天的情况跟历史的很不一样,需要更及时地反映用户的行为,所以会一小时更新一次模型等等。
- 怎么做
- 按上面讲的,首先,历史数据回流,离线计算模型
- 然后,有一些特征是在线计算的,当然也要有一些离线的特征
- 对比我们的瀑布流形式,其实就不是机器学习的思路了,而是采用一种逻辑推荐的思路,比如“看过了,还会看这些相似的”,就是配置上去的推荐规则,而不是通过监督训练的方式获得