如果一个系统有用户和内容,那么根据不同用户推荐不同的内容,我们可以认为这就是推荐系统。我们接着细分:用户分为:新用户、老用户;内容分为:新内容、老内容
所以一个mini推荐系统的推荐流程如下:
- 判断用户类型
一般业务系统存储用户全表,即工程上可实现新旧用户判断。 -
全局热点推荐
按不同品类,可以出不同的排行榜,基于排行榜数据,可对新用户推荐排行榜内容,解决冷启动的问题。 -
协同推荐
对于留存用户,也即老用户,我们一般可以拿到用户的user-item的点击记录或者购买记录,采用user-based 或者item-based的协同过滤方案都可以实现推荐过程。
其中 user-based,即为用户推荐用户,再根据推荐的用户提取用户的观看或者购买记录进行推荐;
而item-based,主要根据用户点击的item,根据item间的相似度,推荐类似的item。
一般协同过滤涉及比较大型的矩阵运算,为了降解矩阵计算过程,可以考虑FunkSVD方案,即把矩阵计算巧妙的采用梯度下降的优化方法实现。
- 过滤观看历史
没有人喜欢购买或者观看相同的物品,如果想要也可以从购物车或者观看历史找到,所以过滤观看历史是必要的。 -
推荐内容补充
推荐内容的数量可能较少,这个时候就需要补充推荐数据。基于content-based的内容推荐策略,可用于内容的补充,特别是新内容挖掘。
上面是一个 mini推荐系统的实现过程,推荐过程也即排序过程,所以从工程实现上,可以把推荐分为两步:粗排、精排。”粗排“一般 考虑大的类目偏好的排序,矩阵维度可控;”精排“基于"粗排"结果进一步从内容池召回数据,然后经过re-rank,推荐给用户。