搭建一个mini推荐系统

如果一个系统有用户和内容,那么根据不同用户推荐不同的内容,我们可以认为这就是推荐系统。我们接着细分:用户分为:新用户、老用户;内容分为:新内容、老内容

所以一个mini推荐系统的推荐流程如下:

WX20190531-191957@2x

  • 判断用户类型
    一般业务系统存储用户全表,即工程上可实现新旧用户判断。

  • 全局热点推荐
    按不同品类,可以出不同的排行榜,基于排行榜数据,可对新用户推荐排行榜内容,解决冷启动的问题。

  • 协同推荐
    对于留存用户,也即老用户,我们一般可以拿到用户的user-item的点击记录或者购买记录,采用user-based 或者item-based的协同过滤方案都可以实现推荐过程。
    其中 user-based,即为用户推荐用户,再根据推荐的用户提取用户的观看或者购买记录进行推荐;
    而item-based,主要根据用户点击的item,根据item间的相似度,推荐类似的item。

一般协同过滤涉及比较大型的矩阵运算,为了降解矩阵计算过程,可以考虑FunkSVD方案,即把矩阵计算巧妙的采用梯度下降的优化方法实现。

  • 过滤观看历史
    没有人喜欢购买或者观看相同的物品,如果想要也可以从购物车或者观看历史找到,所以过滤观看历史是必要的。

  • 推荐内容补充
    推荐内容的数量可能较少,这个时候就需要补充推荐数据。基于content-based的内容推荐策略,可用于内容的补充,特别是新内容挖掘。

上面是一个 mini推荐系统的实现过程,推荐过程也即排序过程,所以从工程实现上,可以把推荐分为两步:粗排、精排。”粗排“一般 考虑大的类目偏好的排序,矩阵维度可控;”精排“基于"粗排"结果进一步从内容池召回数据,然后经过re-rank,推荐给用户。

搭建一个mini推荐系统