深度森林
DNN和深度森林
DNN的缺点:
DNN需要大量的训练数据,尤其是带标签的数据.
算力要求高,对个人及小型使用者不友好
调参对结果影响大
模型多样技巧多样,使得经验极为重要
理论分析困难
gcForest的提出:
gcForest/深度森林/多粒度级联森林,一种基于决策树的集成学习模型,以级联结构进行表示学习.表示学习的结果可以由多粒度扫描进行大幅增加.使其拥有数据上下文知晓以及数据整体结构的感知能力.
深度森林的层数自动决定,所以在小数据集上也有不错的表现.
深度森林的超参数少,且结果对超参数调节不敏感
整体结构
深度森林分为两层,一层是多粒度扫描器(左边的方框),一层是级联森林(右边的方框).
多粒度扫描的结果将作为输入进入级联森林.
多粒度扫描
多粒度扫描采用滑动窗口,按照不同的窗口尺寸对数据进行扫描.
如上图,数据有400个特征,窗口为100,每次选取100个,窗口向下滑动1.这样共可扫描301次,然后我们就可以获得一个100* 301的矩阵,将其分别放入两种不同的森林里,得到两个3* 301的矩阵,将其压缩得到一个2* 903=1806的一维向量.(3是分类任务中分类的数量)
对于图像类的特征输入,滑动窗口也是2维的,从上到下,从左至右的滑动窗口,获得输出.
按照不同的窗口大小对数据进行扫描,可以获得更多样化的特征关系的信息.(最上方的图采用了三个窗口大小)
级联森林
级联森林的每一层都是由不同的集成分类器构成的,上图采用的就是完全随机森林+随机森林的组合(蓝色和黑色),完全随机森林是在完整的特征空间中随机选取特征来分裂子树,而普通随机森林是在一个随机特征子空间内通过基尼系数来分化子树.
我们可以看见,在级联森林的每一层输入一个特征向量,每一个森林分别生成一个长度为3的向量(长度是预测的分类数,本例中为3)
前一层的输出做concat之后会再次连接相应的初始输入,直到最后一层进行投票分类预测.
为了减少过拟合,每个森林生成的输出分类是通过 k 折交叉验证产生的.即将输入取k次k-1和1的分组,分别作为训练和测试.最后取平均.
层数递增将在某一层训练后分类结果没有显著的提升时自动结束.(每一层结束后会验证集评估结果)