Deep Forest: Towards an Alternative to Deep Neural Networks*
Authors
Zhi-Hua Zhou, Ji Feng
Abstract & Introduction
这篇文章提出了一种名为“gcForest (multi-Grained Cascade Forest)”的基于决策树的集成方法,具有和神经网络相竞争的能力。其高性能主要体现:
- 在无需庞大的训练集。
- 无需较多的超参,训练更容易。
- 训练时易于实现并行算法,训练更高效。
- 可根据现有计算资源控制训练时的资源消耗。
- 基于树形结构和同样的超参设置(甚至是默认设置),其表现更好,理论可解释性更强。
1 Method
gcForest方法是生成一个具有级联结构的深度森林集合,多粒度扫描可以通过获取上下文和结构感知来提升性能
1.1 Cascade Forest Structure
这一部分描述了级联森林的构造形式 —— 类似神经网络的端到端形式。
- Cascade Forest 是由多层森林组成的瀑布型结构,每一层的输入是前一层森林输出的特征信息,且该层森林的输出作为下一层森林的输入特征的一部分。
- 瀑布是由多个森林串成的,而森林又是由多棵决策树集成的。为了保证模型的多样性,采用了多种不同种类的森林。(为了简单起见,文中在每层中只选用了两种森林:two complete random forests 与 two random forests。即每层只有四个森林。)
- 对于随机森林(黑色)来说,其中每棵树的生成方式为:在每个节点随机选择
$\sqrt{d}$
个特征作为候选人(d为特征总数),采用gini系数最大的特征进行划分,直到每个叶节点都包含相同的类别,或样本数量少于10。 - 对于完全随机森林(蓝色),其中每棵树的生成方式为:在每个节点随机选择一个特征用来划分,直到每个叶节点都包含相同的类别,或样本数量少于10。
- 对于随机森林(黑色)来说,其中每棵树的生成方式为:在每个节点随机选择
- 假设现在有三个类别,那么每颗树将会输出一个三维向量(上图展示了三维向量的输出过程,该三维向量即为对三分类问题的判别可能性),将森林里所有树的三维向量取均值即得到每个森林的三维向量,将这些三维向量重新组合以表示增强特征。
- 为了避免过拟合,在每个森林的训练过程中会采用“k-fold”交叉验证,对其每一折的结果取均值作为最终结果。
- 在拓展到新一级时,会用验证集进行验证,若没有进一步的明显改善,则终止训练过程。与深度神经网络相比,没有固定的层数,可提前终止,适用于不同规模的数据集。
1.2 Multi-Grained Scanning
这一部分描述了 1.1 中的训练数据“特征”的来源 —— 滑动窗口输出。
为了挖掘特征关系,对所有的正负实例的特征采用滑动窗口扫描,并分别给随机森林和完全随机森林训练,生成变换特征。若变换特征过长,则可以采用滑动窗口对增强特征进行二次采样。
1.3 Overall Procedure and Hyper-Parameters
不同滑动窗口生成的变换特征将分别于上一级联产生的增强特征组合,作为下一级联的输入。重复这一过程直至验证集上的表现收敛。
在测试时,将最后一级的输出取平均后再取最大值对应的类别标签即可获得对该样本的最终预测。
2 Experiments
- 在图像分类、人脸识别、音乐分类、手部运动识别、情感分类和UCI部分低维数据集上均表现出了强大的能力。
- 用数据证明了加入多粒度扫描后的gcForest比单纯的级联森林表现更好。用数据证明了加入多粒度扫描后的gcForest比单纯的级联森林表现更好。
- 法相比,gcForest的运行时间也更短。法相比,gcForest的运行时间也更短。
这篇文章发表于IJCAI2017,提出了集成学习与深度学习相融合的新思路,可能是集成学习未来发展的一个方向。整体来讲, gcForest 尝试从深度学习/机器学习的本质表征学习入手,借鉴了深度学习的分层结构,利用集成的随机森林来建模每一层表征,同时利用多粒度滑动窗口来学习数据更为丰富的表征信息。级联森林中的“随机森林”可以根据实际应用的计算资源、性能需求综合考虑,替换为 GBDT, XGboost 等模型。
但我个人感觉这个模型没有深度神经网络自然。而且在一开始的特征抽取方面可以有更多的方式。
疑问:为什么可以把对分类结果的判别输出作为特征?
解答:gcForest 模拟神经网络的分层结构,级联森林每一层使用一组 Forest 来模拟表征,且每一层的森林会使用上一层的信息,作为自己的输入信息,同时其输出为下一层提供输入信息(这是一种表征学习的思想,神经网络里用CNN、MLP ,这里使用 forest 而已。GBDT/XGBoost 等其他的模型都可以放到这种级联的结构中来,它可以看成是一种结构化的 Ensemble of Ensemble Model)。
注:以上均为个人整理归纳,如果有问题欢迎提出讨论~