无法进入的领域: 树模型的失落

      广告和推荐系统都是工业级的大系统,对现在的人工智能有很重要的意义。如果人工智能的几个创新点(人脸识别、对话机器人和无人驾驶等)失败,人工智能的核冬天的惨象也不会重现于世。靠着广告和推荐系统的收益,人工智能社区就能全身而退,重新回到 “世界上最聪明的一群人,每天研究的是如何让人更多的点广告” 。同时广告和推荐系统还是机器学习工业应用的制高点,机器学习最前沿的进步都会被尝试于广告和推荐系统上。对于这样一个制高点,不同的算法都想在里面占一席之地。

      
      随着 SVM 为代表的统计机器学习退出舞台中心,深度学习(深度的神经网络)又成为机器学习的中心, 现在是广告和推荐系统的主流方法。但是在深度学习光耀之外,还有一个机器学习流派一直占有重要作用,也力图进入广告和推荐系统领域但失败而归:树模型。

1.树模型简介和优点

      从 1986 年的 ID3 决策树算法,再到 1993 年经典的 C4.5 决策树算法,树模型对单颗树的优化就基本结束了,树模型的前进方向转向 ensemble。

      首先是 ensemble 中的 bagging,这个方向上产生了著名的 Random Forest。Random Forest 可是在 SVM 巅峰时代,可以和 SVM 一拼高下的算法。

      然后是 ensemble 中的 boost,这个方向持续时间最久,产生了一系列高质量的算法。从 GDBT 到 XGBoost, 再到 LigthGBM, 都是这个方向的成果。

      最后是 ensemble 中的 stack 了,其中最重磅的工作便是 Lambda 的 gcForest。

      树模型本身具有很多优点。

1.1 参数少并且鲁棒

      相对深度学习,树模型的参数比较少。下图是 gcForest 论文中的对 gcForest 和深度学习参数数量的对比。通过这张图,我们可以发现树模型的参数比深度学习少,并且明确。

      
除了参数少之外,树模型的参数还比较鲁棒。不像深度学习,不同参数的效果差异,能让你怀疑人生。

1.2 可解释性

      树模型另一个巨大优点是可解释性。树模型本身就是人类 “按照某个条件,再看某个条件,再看某个条件” 思路发展出来的,生成的模型符合人们做决策时的心理状态。因此相对深度学习,我们可以在一定程度上将模型转化成人们能理解的决策规则。

2.无法进入的领域

      虽然树模型有很多的优点,但一直无法进入广告和推荐系统的核心领域。

      最典型的就是例子就是:XGBoost 模型在 Kaggle 的广告推荐比赛利器,基本上所有 Kaggle 广告推荐比赛获取名次都会使用 XGBoost。但是在实际工业界,XGBoost 模型并没有被广泛地用在广告和推荐系统中。XGBoost 这点上不像深度学习,深度学习自 W&D 模型证明有效之后,迅速取代特征工作+线性模型,占领广告和推荐系统,成为广告和推荐系统的主流方法。

      Facebook 在 2014 年 GDBT + LR 的算法,利用 GDBT 树模型抽取非线性特征,再用线性模型拟合。但人们很快发现,人工特征加上树模型抽取的特征,效果要比只有树模型特征要好。最终,树模型在广告和推荐系统中占了一席之地,却也只是充当一种特征工程工具。

      

3.树模型的缺陷

      那么为什么树模型无法在广告和推荐系统领域,取得像深度学习那样的成就呢?这当然要从树模型的缺陷说起了。

3.1 树模型处理的数据量不如深度学习

      广告和推荐系统应该算是最复杂最工业级的机器学习系统了。广告和推荐系统的 CTR 预估模型需要处理的训练数据,训练数据的实例都是百亿甚至千亿级别,特征数超过十亿级别是正常。深度学习以其极高的模型复杂度,消化如此海量的数据,从而产生比传统机器学习更好的效果。

      
      深度学习之所以能够处理如此海量规模的数据,归功于一系列基于 Mini-batch 的优化算法。Mini-batch 的思想让模型每次根据一小部分数据更新自己,小步快跑,快速到达目标。

      但 Mini-batch 为树模型所不能,树模型每次生长出一条分支就需要遍历所有的数据。这大大限制了树模型的训练效率。 阿里 PAI 实现的 gcForest 应该是我了解最有效率的树模型了,其报告的训练数据是 300 维特征下一亿多实例。这还远远达不到广告和推荐系统的要求。

      

3.2 树模型无法增量更新

      深度学习模型都是可以增量更新的。因为树模型每次生长一条分支,决定分离点时需要遍历全部数据,所以树模型没有办法先用一部分数据训练模型,再用另一部分数据从训练好的模型开始训练。也就是树模型无法增量更新。XGBoost 强行提供了增量更新的接口,但是是伪增量更新,效果比全量数据直接训练差太多。

3.3 树模型处理的特征类型有限

      广告和推荐系统的用户和物料中有大量的语音。深度学习能从视频、语音、图像和文本提取特征,而且 End-to-End 的方式让提取的特征能适应目标的变化。而从图像和文本中提取特征,树模型的效果和效率还需要验证;从视频和语音中提取特征,树模型的结构决定其很难做到。

      对于广告和推荐系统中的属性特征,深度学习能处理的特征也比树模型要好。对于广告和推荐系统来说,id 类特征是重要的一类特征。id 类会极大提高模型的个性化能力和实际效果,并且可以对抗推荐结果类似于热销的问题。对于深度学习来说,这类 id 类特征直接热编码然后 embedding 就好了,非常成熟的处理方案。但是是对于树模型来说,热编码的 id 类特征就很难处理了。比如我有一千万的用户 id, 这些特征热编码之后就变成一千万维特征,在树模型生长一条分支时就需要遍历所有数据中的一千万维数据。基本不可能算下来。最近出现了号称能处理 id 类特征的 CatBoost, 但 CatBoost 内部是将 id 类特征根据点击率处理成连续特征,信息损失比较大。

4.总结和展望

      1986 年反向传播算法问世,标志着神经网络第二次兴起。也是这一年,Quinlan 提出了著名的 ID3 决策树算法,树模型从朴素想法走向形式化数学化。同样以 1986 为重要时间点的两个算法流派,目前在广告和推荐系统领域攻守之势明显。

      “滚滚长江东逝水,浪花淘尽英雄” 出自明朝状元杨慎在 “大礼仪之争” 之后被流放云南时路途所作《临江仙》。虽然不同算法也终将 “浪花淘尽英雄”,但在这个不同算法的风起云涌时代,依然让我满怀热情。

此条目发表在算法荟萃分类目录,贴了标签。将固定链接加入收藏夹。

无法进入的领域: 树模型的失落》有 5 条评论

  1. 说:

    牛逼牛逼牛逼

  2. 说:

    好神奇好神奇好神奇

  3. 说:

    真奇妙真奇妙真奇妙

  4. sargas说:

    写的真好,赞

  5. 开发者头条说:

    感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/6jwj9n 欢迎点赞支持!使用开发者头条 App 搜索 83978 即可订阅《AlgorithmDog》

发表评论

电子邮件地址不会被公开。