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

作者:王相军,腾讯助理工程师,毕业于哈尔滨工业大学,腾讯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深度学习平台

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

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

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术碎碎念

动态规划之硬币组合问题

问题:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? 动态规划的本质是将原问题分解为同性质的若干相同子结构,在求解最优值的过程中将子...

3118
来自专栏HansBug's Lab

2005: [Noi2010]能量采集

2005: [Noi2010]能量采集 Time Limit: 10 Sec  Memory Limit: 552 MB Submit: 1831  Solve...

2726
来自专栏机器学习养成记

WOE与IV值

计算WOE和IV是评分卡模型的一个重要环节,之前没有仔细研究过,但总觉得他们既然可以放在评分卡模型中去解决相应的问题,那应该也可以放在其他模型中解决相似的问题,...

543
来自专栏Hadoop数据仓库

HAWQ + MADlib 玩转数据挖掘之(十一)——分类方法之决策树

一、分类方法简介 1. 分类的概念         数据挖掘中分类的目的是学会一个分类函数或分类模型(也常常被称作分类器),该模型能把数据库中的数据项映射到给定...

26810
来自专栏数据结构与算法

P3275 [SCOI2011]糖果

题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明...

2767
来自专栏雪胖纸的玩蛇日常

9.高等数学-导数

691
来自专栏深度学习与计算机视觉

OpenCV 实现SSIM结构相似性算法

SSIM算法的介绍: http://blog.csdn.net/chaipp0607/article/details/70158835 代码做了一下处理: ...

2087

扫码关注云+社区