GCForest Study1:GCForest理解

GCForest

gcForest:南大周志华教授提出的新的决策树集成方法:决策树集成的集成;通过随机森林的级联结构学习。

  • Multi-Grained Scanning:多粒度扫描
    对原始特征进行转换:放大筛选拼凑,转化为类别概率向量作为输入特征
  • Cascade Forest:级联森林
    将输入特征经过级联森林,输出新的类别概率向量,将新的类别概率向量链接输入特征作为下一层输入,经过多个级联森林(k-fold交叉验证是否添加级联层),输出最终类别概率向量
    文章下载地址:Deep Forest: Towards An Alternative to Deep Neural Networks

级联结构森林图示:

GCForest Study1:GCForest理解_第1张图片

gcForest采用Cascade结构,每一级接收前一级处理的特征信息并将所得结果传输给下一级。论文中每一级由两种类型的森林组成,其中蓝色表示random forests,黑色表示complete-random tree forests。
每个complete-random tree forests中包含1000(超参数可调)个complete-random trees,每个树随机选取数据特征作为划分节点的父节点,当每个叶节点中类型相同或者不超过10个样例时,停止划分,即不再生长。而random forest也包含1000个树,与完全随机树森林不同的是树划分父节点的选取是通过随机选取的 d d 数量(输入特征数量开方)的特征,选最佳的gini指数特征作为父节点划分节点。
注意:其实有些时候可以不需要下边的多粒度扫描而直接对原始数据进行森林的级联,不过这样的结构性能会稍微降低,可以参考下篇博客举个栗子

单个森林输出结果图示:

GCForest Study1:GCForest理解_第2张图片
图2说明每个Forest对输入到输出的操作过程:
论文中是3分类,则Forest中的每个tree对x分类都会得到一个三维的类别概率向量,将所有结果取平均就得到最终的class vector。将同一级Forest产生的class vector连接就得到新的x(增强特征augmented feature),连接输入特征作为下一级的输入向量。对于最后的一层则是根据最终类别向量概率的大小判定所属类别。

多粒度扫描图示:

GCForest Study1:GCForest理解_第3张图片
其实就是将最原始的数据转化为输入向量格式。两种类型:序列数据和图片数据,作用跟DNN的卷积有些类似。
假设序列数据特征是400,特征窗口大小选择为100,滑动步长为1,则通过滑动特征窗口得到301个100维的向量。通过两个随机森林训练得到301个3维的向量,并且将得到的概率向量连接为转换后的输入向量。即:维度变化:1个实例400维->301个实例100维->2棵森林301个实例3维->1806维(2x301x3)
假设图片特征是20*20,特征窗口大小选择为10*10,滑动步长为1,则通过滑动特征窗口得到121个10*10的矩阵,通过两个随机森林训练得到121个3维的向量,并且将得到的概率向量连接为转换后的输入向量。即:维度变化:1个实例20*20->121个实例10*10->2棵森林121个3维->726维(2x121x3)

整体结构图

GCForest Study1:GCForest理解_第4张图片
GCForest Study1:GCForest理解_第5张图片
上述的两张图的结构其实是一样的,下图只不过将多粒度扫描的图绘制到一个向量列,上图更好更容易直观的理解,而下图是计算时候的最直观的体现。上边两个图是整个gcForest的过程,将两个阶段连接到了一起。图4是整个gcForest的全部过程,也就是将图3和图1进行了合并,组成了全部的过程。
假设输入的是一个400-dim的向量,可以经过多种不同尺寸的滑动得到新的向量,图中使用了三种,分别是100-dim、200-dim、300-dim产生的结果经过多重Forest的处理分别产生一个1806-dim、1206-dim、606-dim的向量,最后将所有的向量全部链接到一个向量中,形成了一个3618-dim的向量作为Cascade的输入。经过1个level的处理变成了3630-dim的向量(将四个Forest产生的4*3个类别概率向量与之前的3618-dim向量进行连接得到)。
如果输入的是m个400-dim的向量,则经过sliding后会产生301*m个100-dim的向量(假设sliding的size为100),同样的,后面产生的结果也都会变成*m个,有m个3618-dim的向量经过Cascade Forest最终产生m个分类结果。

总结

论文中最后给出在不同测试集下Forest的性能表格,这里就不一一张贴了。
gcForest:
1. 与DNN相比有很大的竞争潜力,作为一个研究方向还有很长的路要走
2. 相对于DNN,即使数据量较小,也有优异的性能
3. 调参数量少
4. 可以实现并行训练,效率较高
5. 相比DNN,训练更容易
6. end-to-end learning存在争议

参考
知乎评价
gcForest算法理解
Deep Forest: gcForest论文知识梳理

你可能感兴趣的:(Forest)