IDC

小白都能懂的推荐算法入门之一,从上古时期的LR开始聊起

作者:admin 2021-05-03 我要评论

大家好,不知不觉做推荐系统挺久的了,很多同学私信让我好好写写推荐系统相关,但苦于沉淀不够有货倒不出。最近充电总结了一段时间,有了一些积累,给大家好好说...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

大家好,不知不觉做推荐系统挺久的了,很多同学私信让我好好写写推荐系统相关,但苦于沉淀不够有货倒不出。最近充电总结了一段时间,有了一些积累,给大家好好说道说道。

既然是介绍推荐系统,我们先从最简单最简单的模型开始说起。说起推荐算法领域最简单的模型,自然就是LR了。

LR模型是机器学习领域的基础模型,我想接触过这个领域的同学应该都不陌生。

为什么是LR

什么是LR大家已经知道了,但还有一个问题却没有回答。那就是为什么早年的时候LR模型如此受欢迎呢?难道就不能使用其他一些看起来高级一些的模型吗,比如决策树、随机森林、GBDT?不是说XGBoost在各种比赛的效果都非常好吗?为什么业内不用来做推荐呢?

尤其是当我读到2014年Facebook推出的GBDT+LR的paper的时候,这种困惑更是明显。

这篇论文非常经典,在业内地位很重,甚至可以说是推荐领域必读的paper之一。深度学习兴起之前很多公司和厂商都沿用了这个做法,论文当中的做法倒是不难,说是创新的做法,其实本质上就是将GBDT预测的时候样本落到的节点作为multi-hot编码,然后将这个编码之后的01的数组看成是新的特征,然后用这个转换过的特征来训练LR。可以说它的本质仍然是训练LR,所谓的GBDT只不过是一个编码器。

我当时看这篇paper的时候,里面的意思都已经理解了,但是有一个问题怎么也没想明白。既然都用GBDT了,结合其他模型不香吗,非得结合LR?

我估计这个问题很多在推荐领域的从业者可能也未必答得上来,我先卖个关子,把问题记在这里,等会晚点来回答。

推荐领域的特征有什么特点?

在算法领域,提及效果,特征和模型两者是一体两面,很难剥离。好的模型也需要好的特征支撑,好的特征需要好的模型才能充分表达。所以我们先把模型的问题放一放,来思考一下特征。

推荐领域主要的特征只有三块,以电商为例,分别是item,user和context。也就是商品,用户以及环境信息,比如时间,地点,展示位置等等。context特征比较少,来来回回就那么几样,我们也先放一放。剩下的就是用户和商品,围绕用户和商品我们形成的特征主要又可以分成两个部分,一个是基础特征,另外一个是统计特征。

以商品举例,基础特征就是品牌、价格、类目、评价,统计特征就是最近点击率、最近销售额、最近转化率等等。这些特征按照类别分又可以分为两种,一种是浮点型的连续型特征,一种是类别特征,比如商品的类目,品牌等等。到这里都很正常,没有什么难理解,或者是不可思议的部分。

我们接着往下,再来看看模型要预测的目标——点击率。我们结合一下模型预测的目标再来观察一下前面列举的特征,你会发现,除了历史点击率、历史转化率等少数几个指标和最终的结果是强正相关之外,其他的浮点型的特征没有特别明显的正相关或者是负相关。可以说商品的价格和点击率负相关吗?其实不太行,商品越便宜可能质量越差,反而不会有人点。用户的购买力呢?越有钱点的商品越多吗?也不成立。

正是因为上面说的这个原因,所以在推荐领域,效果很好的浮点型特征很少,大部分都是类别特征,也就是01特征。

所以你说GBDT、随机森林、XGboost这些模型的效果会很好吗?很难说,因为这些模型的长处往往都在浮点型特征,也就是连续型特征。这些树模型会设计规则对这些连续特征进行分段,如果大部分特征都是01特征,那还怎么分段呢?

所以,到这里也就回答了,为什么在深度学习模型兴起之前,推荐领域普遍都使用LR,而不是那些看着很牛的树模型。

LR模型的原理

LR模型也就是纯线性模型,它可以简单理解成若干个特征的加权和。每个特征的权重或大或小,最后累加在一起,得到一个预测的概率。这毫无毛病,也是学过的人都知道。

但我们往下一层,有没有想过这一点在推荐领域意味着什么呢?

意味着模型其实是”记住“了每个特征和最终结果的关系,我们把模型拟人化,把它看成一个机器人的话。机器人看到样本有特征A并且点击了,于是特征A的权重提升一点,样本有特征B但是没点击,于是把特征B的权重降低一些。模型就是在这样一个策略当中找到一个最佳的平衡。

这就意味着,一些容易被记忆的特征往往会发挥比较好的效果。比如男士通常会买烟,女士通常买口红,那么我们就可以设计男士_烟和女士_口红的组合特征。当模型看到大部分男士看到烟都点击了之后,它就能学到这个组合是一个强特征并给与一个比较高的权重。这样只要我们尽可能地找出这些特征的组合,那么模型就可以得到很好的效果。

所以到这里大家就明白了,LR模型在推荐领域发挥作用,本质上就是靠的“记性”。因为它可以记住那些类别特征以及类别特征的组合,所以它往往比那些看起来更高端的树模型效果要好。这也是为什么到了LR时代的后期,算法工程师们的工作就是整天挖掘一些类别特征的组合,以期望模型达到很好的效果。

LR模型的优缺点

到这里,关于LR模型在推荐领域的应用就差不多说完了,我们做一个简单的总结,首先从它的优点开始说起。

LR模型的优点教科书上已经说了很多了,比如训练速度快,由于参数空间比较小,LR模型可以迅速收敛,它的训练速度要比那些树模型以及后面的深度学习模型快得多。其次是可解释性强,由于我们可以查阅得到所有特征的权重,所以我们很容易解释究竟是什么特征发挥了作用,或者是什么特征拖了后腿。

但是LR在推荐领域也有一个很大的缺点,是什么呢,就是脏活累活很多。

因为几乎所有的特征组合都需要人工挖取,需要人工遍历很多特征组合,甚至是一一尝试找到最佳的组合。这个过程当中需要花费大量的人力,几乎可以说是纯堆人工。所以对于LR时代的算法工程师来说可能螺丝钉的感觉比现在还要严重得多,什么优化模型基本上是不用想了,LR这么简单的模型也没什么优化的空间,剩下的事情基本上就只有做特征做实验了。

俗话说得好,前辈的缺点就是后辈努力的方向。那么对于LR模型的这些缺点又该怎么弥补或者是优化呢?

本文转载自微信公众号「TechFlow」,可以通过以下二维码关注。转载本文请联系TechFlow公众号。


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/DHJrEUjq0dQR4xnNOxHBEA

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • Java中的内存溢出问题

    Java中的内存溢出问题

  • 驻云科技:基于MaxCompute搭建社交好友

    驻云科技:基于MaxCompute搭建社交好友

  • 长沙营智:PolarDB助力长沙营智提速资

    长沙营智:PolarDB助力长沙营智提速资

  • 心动网络:PolarDB助力心动网络打造爆

    心动网络:PolarDB助力心动网络打造爆

腾讯云代理商
海外云服务器