小菜鸟对周志华大神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 条评论
登录 后参与评论

相关文章

来自专栏mwangblog

遗传算法解决旅行商问题(TSP)二:选择、交叉和变异

随机选择两个个体,再随机选择一段基因进行交换,以完成交叉操作。交叉后可能会产生冲突(访问同一个城市两次),保持交换的基因段(之后简称为交换段)不变,取得冲突基因...

932
来自专栏大数据挖掘DT机器学习

一元线性回归的细节

文/程sir(简书作者) 原文:http://www.jianshu.com/p/fcd220697182 一元线性回归可以说是数据分析中非常简单的一个知识点,...

2944
来自专栏CDA数据分析师

机器学习算法一览(附python和R代码)

“谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能够使电脑变得更聪明,更人性化的技术,机器学习。 ” —— 埃里克 施密特(谷歌首席执行官) 当计算...

2937
来自专栏fangyangcoder

GAN笔记——理论与实现

GAN这一概念是由Ian Goodfellow于2014年提出,并迅速成为了非常火热的研究话题,GAN的变种更是有上千种,深度学习先驱之一的Yann LeCun...

1302
来自专栏小樱的经验随笔

【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测

本文结构: 时间序列分析? 什么是ARIMA? ARIMA数学模型? input,output 是什么? 怎么用?-代码实例 常见问题? ---- 时间序列分析...

3775
来自专栏CreateAMind

通俗|令人拍案叫绝的Wasserstein GAN 及代码(WGAN两篇论文的中文详细介绍)

在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文Wassertein GAN 却在 Reddit 的 Machine Learni...

1184
来自专栏CDA数据分析师

基于 R 语言和 SPSS 的决策树算法介绍及应用

文 | 刘昭东, 软件工程师, IBM 机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响。决策树是机器学习中最基础且应用最广泛的算法模型。本文...

1955
来自专栏杨熹的专栏

用ARIMA模型做需求预测

---- 本文结构: 时间序列分析? 什么是ARIMA? ARIMA数学模型? input,output 是什么? 怎么用?-代码实例 常见问题? ---- 时...

66611
来自专栏杨熹的专栏

GAN 的 keras 实现

本文结构: 什么是 GAN? 优点? keras 例子? ---- 什么是 GAN? GAN,全称为 Generative Adversarial Nets,直...

3686
来自专栏CreateAMind

Deep Learning Book 中文第七章 深度学习的正则化

深入分析各种正则化方法:L2、L1;数据集增强;噪音;半监督;多任务;提前终止(过犹不及^_^);参数共享;稀疏;Bagging;DropOut(进化生物基因)...

711

扫码关注云+社区