基于决策树集成的auto-encoder —— EncoderForest (eForest)

原创 2018年04月15日 23:26:28

本人的第一篇博客,仅仅只是个人随笔性质,不喜勿喷

0. 论文原文

J. Feng and Z.-H. Zhou. AutoEncoder by forest. In: Proceedings of the 32nd AAAI Conference on Artificial Intelligence (AAAI'18), New Orleans, LA, 2018. (CORR abs/1709.09018)

1. 摘要

这里直接复制原文的摘要,以免个人翻译有出入:

Auto-encoding is an important task which is typically realized by deep neural networks (DNNs) such as convolutional neural networks (CNN). In this paper, we propose EncoderForest(abbrv. eForest), the first tree ensemble based auto-encoder. We present a procedure for enabling forests to do backward reconstruction by utilizing the Maximal CompatibleRule (MCR) defined by the decision paths of the trees, and demonstrate its usage in both supervised and unsupervised setting. Experiments show that, compared with DNN based auto-encoders, eForest is able to obtain lower reconstruction error with fast training speed, while the model itself is reusable and damage-tolerable.

2. 方法

目前业界主流的自编码器都是基于神经网络,例如全连接神经网络(MLP),卷积神经网络(CNN),其目的是将原始输入映射至一个隐空间(latent space),从而获取其低维或者稀疏表示。为了获得原输入的良好表示,自编码器需要以最小化重构误差为目标。因此自编码器基本结构由一个编码器(encoder)和一个解码器(decoder)组成,其中encoder负责将输入映射至隐空间,而decoder负责将隐空间的表示重构为原表示。基于神经网络的自编码器通常以均方误差为损失函数,通过梯度下降等方法进行学习。

而周志华教授与其学生另辟蹊径,在随机森林的基础上构建出编码器与解码器。其想法很简单,在一个有N个决策树的森林中,对于每棵树Ti将输入映射至其的一个叶子节点,将该叶子节点的索引记为ni。利用森林中的每棵树做相同的操作就可以得到输入的N维表示(n1,n2,n3...nN)。

在设计解码器的时候稍微有点技巧。利用决策树进行决策时需要将决策的路径记录下来,而每个决策路径对应了一个规则(rule)。在进行解码重构的过程中,利用森林中N个规则,运用Maximum Compatible Rule(MCR),获取N维编码所对应的更精确的规则,以此规则进行重构。对于枚举型属性,该规则中的值可直接作为属性值,对于连续变量,通常规则得到的是属性的一个范围,可以取其最大值,最小值,或者中值作为其最终属性。

3. 个人思考

其实EncoderForest 的本质是规则编码,利用决策树得到N个规则的数值编码,重构时再利用相同的森林还原即可,可以看到,基于树的编码和基于神经网络这样的计算型框架还是有一些差别的。其中一个最大的区别就是,神经网络自编码器得到的是数值连续的隐空间,而树自编码器是离散表示的规则空间。由于基于随机森林,eForest可得益于其训练速度,实际上也确实如此。在mnist 和 cifar10 上的训练速度比基于神经网络的框架快10倍以上。而且,由于其编码解码都依赖于相同的森林,是基于规则的,而不是像神经网络编码器那样编码和解码器是“分别”通过计算学出来的,其重构误差一般很低。另外,虽然决策树的学习具有随机性,但是决策树的编码的规则往往具有很强的相关性,因此对于编码的缺失,甚至是损坏,有很强的容忍能力。

当然eForest作为一个新提出的概念,本身也有很多缺陷。首先由于其编码需要进行路径选择,解码的时候需要利用MCR计算,而不像神经网络那样进行简单的矩阵运算,其解码和编码速度比神经网络慢不少。而且,其编码的隐空间是离散空间,表达能力十分有限,再加上规则之间的相关性,其有效编码数量往往十分少。

关于后者举个例子,原输入有M个属性,通过N个树的森林进行编码。现在考虑满二叉树的情况,每层的划分属性都为同一个,则产生的叶子节点有2^M个,因此理论上可产生N^(2^M)个编码,而实际上合法编码远没有这么多。假设所有属性为连续值,每个规则对该属性都进行了一次划分,理想情况下所有规则的划分都不相同,因此划分了N+1个区间,某个值只可能落在某个区间里,因此M个属性只能产生M^(N+1)个区间组合,因此只可能有M^(N+1)个合法编码,很显然在M和N都很大时,前者是要远远大于后者的。

最后,树自编码器的实际编解码效率很高,但这是以牺牲编码的表达能力为代价的,这种代价带来的后果是,它不能胜任很多任务,例如神经网络自编码器都可胜任的生成任务(generative task),虽然其可以利用规则编码进行解码生成,但其编码是有限的因此生成的结果也是有限的,更不用说结果的多样性了。

机器学习-决策树

机器学习算法系列课程,简单通俗的介绍常见的机器学习算法,并且用python验证
  • 2017年09月04日 15:53

机器学习-->集成学习-->决策树详解

本篇博文将详细总结决策树原理,从最基本的数学公式一步步的推导。将沿着以下几个主题来总结讨论 信息熵 熵,联合熵,条件熵,互信息 决策树学习算法 信息增益 ID3,C4.5,CART 防止过拟合 ...
  • Mr_tyting
  • Mr_tyting
  • 2017-07-28 17:01:38
  • 538

基于决策树的模型

参考:xccd ,肖凯大牛的博客 本文为学习贴 # 几种决策树 效果比较 # 问题描述 数据集是C50包中自带的churn数据,它是用来预测顾客流失的数据集,其中样本量为3333个,变...
  • wolfbloodbj
  • wolfbloodbj
  • 2013-04-21 20:14:30
  • 1516

基于单层决策树(二值分类法)的adaboost算法实现

  • 2015年05月14日 09:56
  • 475KB
  • 下载

AdaBoost算法1(基于单层决策树)

今天我们来讨论一个不一样的分类算法,这种算法叫做元算法,元算法是一种与其他算法组合在一起来使用的算法。今天我们来讨论自适应boosting:在训练数据中的每一个样本赋予一个权重,这些权重构成向量D,开...
  • zhangpengfei104
  • zhangpengfei104
  • 2016-03-12 21:45:38
  • 1330

Adaboost算法(单层决策树)

本算法是根据《机器学习实战》改编而来,原书是用Phthon写的,后觉得phthon用着不习惯,所以改写matlab,具体含义,参见该书即可,很详细。 下面是主程序adaBoost.m: clear...
  • lengo
  • lengo
  • 2016-08-22 16:59:06
  • 1813

基于单层决策树的 AdaBoost的训练及测试过程

1、整个实现的伪代码python: 对每次迭代: 利用buildstump()函数(上一篇提到过)找到最佳的单层决策树; 计算alpha(利用该决策树的错误率进行计算); 计算新的每个样本...
  • u011551096
  • u011551096
  • 2016-04-11 09:13:44
  • 1372

基于决策树的分类

基于决策树的分类系列内容为自己学习数据挖掘的一个笔记 本部分内容来源《数据挖掘导论》4.3节一、决策树生成算法所谓决策树,就是一个类似于流程图的树形结构,树内部的每一个节点代表的是对一个属性的测试,...
  • qingqing7
  • qingqing7
  • 2017-11-01 17:50:39
  • 1015

【机器学习】决策树及Bagging, Random Forest和Boosting模型融合

前言一晃一个月没写博客了。懒癌又犯了TT。 之前提到过,写博客是为了记录实习中学到的点滴。博主在某家做travelling IT solution的公司实习。公司核心业务还是做Global Dist...
  • AmourDeMai
  • AmourDeMai
  • 2016-05-19 21:49:45
  • 4785

泰坦尼克号乘客生存分析--使用决策树

sklearn中决策树的API使用kaggle上数据数据源下面是使用sklearn生成决策树的pythonimport pandas as pd from sklearn.feature_extrac...
  • qq_37000327
  • qq_37000327
  • 2018-02-13 18:12:45
  • 80
收藏助手
不良信息举报
您举报文章:基于决策树集成的auto-encoder —— EncoderForest (eForest)
举报原因:
原因补充:

(最多只允许输入30个字)