【深度森林算法实践】分类与回归

article/2025/9/25 18:33:03

1 Review💖

  • 不可否认,深度森林的提出很大程度是受深度学习算法启发。现如今,深度学习算法在诸多领域都展示出了傲人的实力,周志华教授作为国内集成学习领域的先驱,则在借鉴了深度学习算法结构的基础上,提出了深度森林算法。我们可以说深度森林是深度学习算法的一种变种,但按照周教授的说法,更准确的来说,深度森林应该是集成学习的一个重大突破。
  • 根据周志华教授的观点,深度神经网络的成功主要归结为三点,分别是逐层处理(layer-by-layer processing)、模型内特征变化(in-model feature transformation)以及模型复杂度(sufficient model complexity)。而在此基础之上,如果将神经网络中可微模块替换成不可微模块,例如随机森林,则能够在确保模型有效性和稳定性的基础上,减少模型对于反向传播的依赖。并且经过实验证明,采用类似神经网络的结果进行随机森林的集成,能够获得一个超参数效果稳定、算法复杂性可控的全新的模型——这个模型就是深度森林。
  • 深度森林又名多粒度扫描的级联森林,这也是深度森林中最核心的两个概念,其一是级联森林,其二则是多粒度扫描。
  • 深度森林算法原理详情请见:http://t.csdn.cn/0grSA

 上图是深度森林模型的主要结构,其中Binner是用来减少构建决策树的分裂候选特征数量的类。

2 Installation and Use⭐️

快速安装pip install deep-forest -i https://pypi.tuna.tsinghua.edu.cn/simple

from deepforest import CascadeForestClassifier

  • 参数详情可见官方文档:API Reference — Deep Forest (DF21) documentation (deep-forest.readthedocs.io) 
  • 深度森林整体风格和sklearn非常一致

2.1 Classfication🔥

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_scorefrom deepforest import CascadeForestClassifierX, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
model = CascadeForestClassifier(random_state=1)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
acc = accuracy_score(y_test, y_pred) * 100
print("\nTesting Accuracy: {:.3f} %".format(acc))

  • 代码的运行过程中会输出一些中间信息。
  • 尽管深度森林原理复杂,但实际的使用过程秉承了sklearn的一贯风格——代码简单,并且拥有一整套效果较好的初始化参数。
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.svm import SVCX, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
model = SVC(random_state=1)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
acc = accuracy_score(y_test, y_pred) * 100
print("\nTesting Accuracy: {:.3f} %".format(acc))

使用支持向量机SVC进行简单对比,效果相差不大,深度森林稍稍逊色。

2.2 Regression💘

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_errorfrom deepforest import CascadeForestRegressorX, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
model = CascadeForestRegressor(random_state=1)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("\nTesting MSE: {:.3f}".format(mse))

回归问题使用的类是CascadeForestRegressor

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.svm import SVRX, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
model = SVR()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("\nTesting MSE: {:.3f}".format(mse))

  • 使用支持向量机SVR进行简单对比,深度森林效果明显优于SVR。
  • 此外,深度森林其实拥有天然的抗过拟合特性(自带交叉验证过程)。可以在不进行任何参数调整情况下,也能得到一个较好的结果。


http://chatgpt.dhexx.cn/article/Vrjsv5on.shtml

相关文章

深度——强化学习、深度森林

Sutton’sTD(0)算法:考虑当前回报和下一状态的估计值,它的更新公式 : • Q-learing算法:它和Sutton’sTD(0)算法类似,只是将动作集A也考虑进来。 定义动作价值函数Q(s,a)…

周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈

翻译 | 林椿眄 出品 | AI科技大本营(公众号ID:rgznai100) 【AI科技大本营导读】 互联网公司每天都面临着处理大规模机器学习应用程序的问题,因此我们需要一个可以处理这种超大规模的日常任务的分布式系统。最近,以…

在Python 3中使用深度森林(Deep Forest)进行分类

深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文《Deep Forest: Towards An Alternative to Deep Neural Networks》中提出来的一种新的可以与深度神经网络相媲美的基于树的模型,其结构如图所示。 gcForest.png 文中提出的多粒度级联森林(Mu…

9大数据集6大度量指标完胜,周志华等提出深度森林处理多标签学习

2019-11-25 11:01:57 选自arXiv 机器之心编译参与:路雪、一鸣 近日,南大周志华等人首次提出使用深度森林方法解决多标签学习任务。该方法在 9 个基准数据集、6 个多标签度量指标上实现了最优性能。 在多标签学习中,每个实例都有多个标签&am…

深度森林DF21、deep forest、gcForest

文章目录 DF21的优势DF21的可以用来干什么对标算法[^1] DF21的优势 DF21是周志华团队于2021年2月1日推出的深度森林开源库,其优势在于超参少、训练效率高1。 DF21的可以用来干什么 DF21可以用来进行分类和回归2。 对标算法2 搜狐自媒体网文:周志华团…

如何评价周志华深度森林模型

这篇文章背后的思路实际上是这样的: DNN(或者说 MLP)其实就是堆起来的广义线性模型(比如 logistic,但也有其他激活函数)。它能够自动发现特征与标签之间的非线性关系,当决策边界非线性&#xf…

gcForest分布式深度森林及其在套现欺诈自动检测中的应用

分布式深度森林及其在套现欺诈自动检测中的应用 摘要 互联网企业每天面对处理大规模机器学习应用的请求,需要一个能够处理超大数据任务的分布式系统.深度森林是最近提出的一个利用树作为组件深度学习框架,在各种领域取得不错的结果.然而并没有在超大规模数据任务上测试.在这项…

【论文解读】关于深度森林的一点理解

2017年年初,南京大学周志华老师上传了一篇名为:Deep Forest:Towards An Alternative to Deep Neural Networks的论文,一石激起千层浪,各大媒体纷纷讨论着,这似乎意味着机器学习的天色要变,实则不…

随机森林算法的扩展-深度森林(deep forest)

深度学习最大的贡献,个人认为就是表征学习(representation learning),通过端到端的训练,发现更好的features,而后面用于分类(或其他任务)的输出function,往往也只是普通的…

多标签学习与深度森林学习笔记

周志华老师团队Multi-Label Learning with Deep Forest (MLDF)报道很多,各大机器学习平台也都就这篇文章的亮点给出了分析。近日在准备组会报告时较为详细地拜读了一下,也由此简单了解了一下多标签学习的相关内容。 正如论文作者所述,MLDF的…

论文阅读:Deep forest/深度森林/gcForest

最近组会汇报了这篇文章,简单把思想梳理下来了,对了搜索深度森林的时候可能会看到Deep Forest: Towards an Alternative to Deep Neural Networks,这两篇文章的内容基本上是一致的,只在叙述方面有一些很小的不同。 下面是我做的p…

【冰糖Python】深度森林 DeepForest

此文为记录DeepForest的简单使用 原文《Deep Forest: Towards an Alternative to Deep Neural Networks》 “A key advantage of deep forest is its adaptive model complexity depending on the dataset. The default setting on hyper-parameters enables it to perform r…

使用深度森林(Deep Forest)进行分类-Python

一、什么是深度森林? 传统DNN的不足: 1、需要大量的数据集来训练; 2、DNN的模型太复杂; 3、DNN有着太多的超参数 gcForest的优势: 1、更容易训练; 2、性能更佳; 3、效率高且可扩展、支持…

深度森林浅析

深度森林 深度学习最大的贡献是表征学习(representation learning),通过端到端的训练,发现更好的features,而后面用于分类(或其他任务)的输出function,往往也只是普通的softmax&…

深度森林原理及实现

目录 背景 级联森林 多粒度扫描 代码 总结 背景 深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文《Deep Forest: Towards An Alternative to Deep Neural Networks》中提出来的一种新的可以与深度神经网络相媲美的基于树的模型,其结构…

论文阅读:深度森林

论文地址:https://arxiv.org/pdf/1702.08835.pdf 相关代码:https://github.com/kingfengji/gcForest 深度森林是南大周志华老师前两年提出的一种基于随机森林的深度学习模型。 当前的深度学习模型大多基于深度学习神经网络(DNN)…

Deep Forest(gcforest)通俗易懂理解

DeepForest(gcforest)深度森林介绍 1.背景介绍 当前的深度学习模型主要建立在神经网络上,即可以通过反向传播训练的多层参数化可微分非线性模块,周志华老师希望探索深度学习模型的新模式,探索不可微模块构建深度模型的可能性。从而提出了一…

【深度学习】Deep Forest:gcForest算法理解

一、相关理论 本篇博文主要介绍南京大学周志华教授在2017年提出的一种深度森林结构——gcForest(多粒度级联森林)。近年来,深度神经网络在图像和声音处理领域取得了很大的进展。关于深度神经网络,我们可以把它简单的理解为多层非…

从深度学习到深度森林方法(Python)

作者 |泳鱼 来源 |算法进阶 一、深度森林的介绍 目前深度神经网络(DNN)做得好的几乎都是涉及图像视频(CV)、自然语言处理(NLP)等的任务,都是典型的数值建模任务(在表格数据tabular …

深度森林(gcforest)原理讲解以及代码实现

GcForest原理 gcforest采用Cascade结构,也就是多层级结构,每层由四个随机森林组成,两个随机森林和两个极端森林,每个极端森林包含1000(超参数)个完全随机树,每个森林都会对的数据进行训练,每个森林都输出结…