推荐的基础是数据,前两步挖掘了内容数据,第三步就是挖掘用户行为生成用户画像。
1、采集:通常采用前端埋点的方式,上报用户的点击、分享、收藏等等行为。
日志采集是数据挖掘非常重要的环节,如果采集有缺失或错误(很可能的事),那么后续不管怎么做都没有效果,同时前端的改动也可能影响日志,如果不有效协同,会对后端有很大影响。
2、传输:用于用户兴趣的收集,往往越快越好,这样用户的某个操作就能快速反馈到下一步推荐中,所以就需要日志的稳定传输和更新。
但由于成本考虑,用户 profile 不是都能实时更新的,有的可能延时1小时,有的可能1天1更、一周1更,甚至更久。
3、挖掘:这一过程是将用户数据计算、挖掘处理成我们想要的特征(俗称“用户画像”,业内通常叫用户profile)。
用户挖掘通常要与算法结合,而不能凭空挖特征,没有算法应用再牛逼的用户画像也是没有价值的。
4、存储:用户的兴趣在一段时间内不会变化太大,因此可以用用户长期留下的行为来积累用户画像,并需要把这些profile存起来。
如果用户量很大,那么需要的存储资源也是海量的,那就需要一个能对大量数据进行分布式存储的数据库,并且需要可靠和廉价,例如 hdfs(Hadoop Distributed File System),如果想要实时计算用户兴趣,就需要可快速存取的数据库比如redis,所以购买服务器也是微博、今日头条等公司很大的开支。
当然用户的兴趣不是一成不变的,因此用户兴趣需要随时间“衰减”,设置合理的衰减系数,对用户profile也很重要。