沙韬伟,苏宁易购高级算法工程师。
曾任职于Hewlett-Packard、滴滴出行。
数据学院特邀讲师。
主要研究方向包括风控、推荐和半监督学习。目前专注于基于深度学习及集成模型下的用户行为模式的识别。
电商行业中,对于用户的商品推荐一直是一个非常热门而且重要的话题,有很多比较成熟的方法,但是也各有利弊,大致如下:
1、基于商品内容:比如食物A和食物B,对于它们价格、味道、保质期、品牌等维度,可以计算它们的相似程度,可以想象,我买了包子,很有可能顺路带一盒水饺回家。
优点:冷启动,其实只要你有商品的数据,在业务初期用户数据不多的情况下,也可以做推荐
缺点:预处理复杂,任何一件商品,维度可以说至少可以上百,如何选取合适的维度进行计算,设计到工程经验,这些也是花钱买不到的
典型:亚马逊早期的推荐系统
2、基于关联规则:最常见的就是通过用户购买的习惯,经典的就是“啤酒尿布”的案例,但是实际运营中这种方法运用的也是最少的,首先要做关联规则,数据量一定要充足,否则置信度太低,当数据量上升了,我们有更多优秀的方法,可以说没有什么亮点,业内的算法有apriori、ftgrowth之类的。
优点:简单易操作,上手速度快,部署起来也非常方便
缺点:需要有较多的数据,精度效果一般
典型:早期运营商的套餐推荐
3、基于物品的协同推荐:假设物品A被小张、小明、小董买过,物品B被小红、小丽、小晨买过,物品C被小张、小明、小李买过;直观的看来,物品A和物品C的购买人群相似度更高(相对于物品B),现在我们可以对小董推荐物品C,小李推荐物品A,这个推荐算法比较成熟,运用的公司也比较多。
优点:相对精准,结果可解释性强,副产物可以得出商品热门排序
缺点:计算复杂,数据存储瓶颈,冷门物品推荐效果差
典型:早期一号店商品推荐
4、基于用户的协同推荐:假设用户A买过可乐、雪碧、火锅底料,用户B买过卫生纸、衣服、鞋,用户C买过火锅、果汁、七喜;直观上来看,用户A和用户C相似度更高(相对于用户B),现在我们可以对用户A推荐用户C买过的其他东西,对用户C推荐用户A买过买过的其他东西,优缺点与基于物品的协同推荐类似,不重复了。
基于模型的推荐:svd++、特征值分解、概率图、聚分类等等。比如潜在因子分解模型,将用户的购买行为的矩阵拆分成两组权重矩阵的乘积,一组矩阵代表用户的行为特征,一组矩阵代表商品的重要性,在用户推荐过程中,计算该用户在历史训练矩阵下的各商品的可能性进行推荐
优点:精准,对于冷门的商品也有很不错的推荐效果。
缺点:计算量非常大,矩阵拆分的效能及能力瓶颈一直是受约束的。
典型:惠普的电脑推荐
5、基于时序的推荐:这个比较特别,在电商运用的少,在Twitter,Facebook,豆瓣运用的比较多,就是只有赞同和反对的情况下,怎么进行评论排序,详细的可以参见我之前写的一篇文章:应用:推荐系统-威尔逊区间法(http://www.jianshu.com/p/b3e9b300a100)
6、基于深度学习的推荐:现在比较火的CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)都有运用在推荐上面的例子,但是都还是试验阶段,但是有个基于word2vec的方法已经相对比较成熟,也是我们今天介绍的重点。
优点:推荐效果非常精准,所需要的基础存储资源较少
缺点:工程运用不成熟,模型训练调参技巧难
典型:当前电商的会员商品推荐
现在某电商的商品有约3亿个,商品的类目有10000多组,大的品类也有近40个,如果通过传统的协同推荐,实时计算的话,服务器成本,计算能力都是非常大的局限,之前已经有过几篇应用介绍:基于推荐的交叉销售、基于用户行为的推荐预估(http://www.jianshu.com/p/fd245999ebfe)。
会员研发部门因为不是主要推荐的应用部门,所以在选择上,我们期望的是更加高效高速且相对准确的简约版模型方式,所以我们这边基于了word2vec的原始算法,仿造了itemNvec的方式。