前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小菜鸟对周志华大神gcForest的理解

小菜鸟对周志华大神gcForest的理解

原创
作者头像
王相军
修改2017-06-19 19:10:33
7.4K0
修改2017-06-19 19:10:33
举报
文章被收录于专栏:王相军的专栏王相军的专栏

作者:王相军,腾讯助理工程师,毕业于哈尔滨工业大学,腾讯CDG征信中心员工,乐于分享,希望大家一起学习,共同进步!

导语

花了一下午时间学习了周志华教授的新paper——《Deep Forest: Towards An Alternative to Deep Neural Networks》,论文主要介绍了一种新的集成机器学习方法——gcForest,其核心思想是:利用级联森林(决策树集成)方法去学习生成模型,一定程度上可以弥补DNN的部分劣势!(强烈说明:作为一个小菜鸟,里面有很多都是自己的个人理解,不对的地方希望看到的大神多多指教,感激不尽!!! )

一、DNN和gcForest的优缺点

DNN

1)DNN需要大的样本集,在小样本数据集上表现不可观;

2)DNN本身就是复杂的模型,所以训练过程很复杂,需要大量的复杂计算;

3)参数太多,需要花费大量的调参时间。(坊间流行一句话:DNN的训练更像是艺术,而不是科学或者工程);

4)DNN在大数据集上的效果确实很好。

gcForest

1)gcForest在大数据集上的表现和DNN分庭抗礼,在小数据集上也表现很好;

2)参数少,调参简单,在很多领域的不同数据集上,使用默认设置,结果都很好;

3)训练过程简单、理论体系更易懂;

4)执行效率高,gcForest在一台PC上的效率相当于DNN在GPU机器上的效率;

5)并行度高,作为Forest,有着天然的高并行性。

二、gcForest的方法论

gcForest的核心主要包括两大块:级联森林(Cascade Forest)和多粒度扫描(Multi-Grained Scanning)。

1、级联森林(Cascade Forest)

级联森林的构成:级联森林的每一层都是由好多个森林(既有随机森林,又有完全随机森林)组成,而每一个森林又是由好多个决策树(Decision Tree)组成,所以这种组合是集成的集成!其中每一层的随机森林和完全随机森林保证了模型的多样性!具体的级联森林结构如下图1所示。

图1 级联森林结构图

图1中的级联森林每一层包括两个完全随机森林(黑色)和两个随机森林(蓝色)。每个完全随机森林包含1000个完全随机的决策树,每个决策树的每个节点都是随机选择一个特征做分裂,直至每一个叶节点包含的实例属于同一个类,或者实例数目不多于10个;每个随机森林也是1000个决策树,每个决策树的生成是随机选择sqrt(d)个特征(d输入的总特征),每次选择gini值最高的做分裂。

级联森林的迭代终止条件:迭代到效果不能提升就停止!!!

级联森林中每个森林是如何决策的呢?

每个森林中都包括好多棵决策树,每个决策树都会决策出一个类向量结果(以3类为例,下面也是),然后综合所有的决策树结果,再取均值,生成每个森林的最终决策结果——一个3维类向量!每个森林的决策过程如下图2所示。

图2 每个森林的决策过程(决策树中的叶子颜色代表不同的类)

这样,每个森林都会决策出一个3维类向量,回到图1中,级联森林中的4个森林就都可以决策出一个3维类向量,然后对4个*3维类向量取均值,最后取最大值对应的类别,作为最后的预测结果!

2、多粒度扫描(Multi-Grained Scanning)

多粒度扫描是为了增强级联森林,为了对特征做更多的处理的一种技术手段。具体扫描过程如下图3所示。

图3 多粒度扫描过程

图3是分别对序列数据和图像数据的原始输入特征做Multi-Grained Scanning处理的过程。

对于序列数据,假设我们的输入特征是400维,扫描窗口大小是100维,这样就得到301个100维的特征向量,每个100维的特征向量对应一个3分类的类向量,即得到:301个*3维类向量!最终每棵森林会得到903维的衍生特征变量!

于图像数据的处理和序列数据一样,图像数据的扫描方式当然是从左到右、从上到下,而序列数据只是从上到下。

当然,可以用各种尺寸不等的扫描窗口去扫描,这样就会得到更多的、更丰富的特征关系!

三、整体实现

整个实现过程附上一张大图4。

图4 gcForest算法的实现流程图

四、结果分析

1、在大数据集上,分别和DNN类、LR、RF、SVM等算法做了对比。

1)图像分类(数据集:MNIST):略低于DNN,基本持平(99.05%与98.96%);

2)人脸识别(数据集:ORL):人脸图像数量不同时,gcForest都最好;

3)音乐分类(数据集:GTZAN):gcForest最好(65.67%);

4)手部运动识别(数据集:sEMG):gcForest最好(55.93%);

5)情感分类(数据集:IMDB):gcForest最好(89.32%)。

2、在几个小数据集上表现和很好。

五、总结

作为小菜鸟新人,自己写这篇文章的初衷只是简单的学习分享,把自己看到的觉得还不错的东西记录下来,以供交流学习;自己对DNN的了解也有限,所以,这篇文章也没有任何要抨击DNN的意思,自己也没有这个实力(这是重点,哈哈哈)!

最后,如果本文有写的不对的地方,请看到的大神不吝赐教!谢谢。。

相关推荐

DI-X深度学习平台

人人都可以做深度学习应用:入门篇(上)

人人都可以做深度学习应用:入门篇(下)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导语
  • 一、DNN和gcForest的优缺点
    • DNN
      • gcForest
      • 二、gcForest的方法论
        • 1、级联森林(Cascade Forest)
          • 2、多粒度扫描(Multi-Grained Scanning)
          • 三、整体实现
          • 四、结果分析
          • 五、总结
          相关产品与服务
          大数据
          全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档