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

article/2025/9/25 15:38:23

aba5c205fadff09c6e0167a52f51f945.gif

作者 |泳鱼

来源 |算法进阶

一、深度森林的介绍

目前深度神经网络(DNN)做得好的几乎都是涉及图像视频(CV)、自然语言处理(NLP)等的任务,都是典型的数值建模任务(在表格数据tabular data的表现也是稍弱的),而在其他涉及符号建模、离散建 模、混合建模的任务上,深度神经网络的性能并没有那么好。

深度森林(gcForest)是深度神经网络(DNN)之外的探索的一种深度模型,原文:it may open a door towards alternative to deep neural networks for many tasks。不同于深度神经网络由可微的神经元组成,深度森林的基础构件是不可微的决策树,其训练过程不基于 BP 算 法,甚至不依赖于梯度计算。它初步验证了关于深度学习奏效原因的猜想--即只要能做到逐层加工处理、内置特征变换、模型复杂度够,就能构建出有效的深度学习模型,并非必须使用神经网络。

深度森林主要的特点是:

  • 拥有比其他基于决策树的集成学习方法更好的性能

  • 拥有更少的超参数,并且无需大量的调参

  • 训练效率高,并且能够处理大规模的数据集

深度森林目前还处于探索阶段,评估模型(gcForest)的表现,在MNIST数据集准确率不错:

e3a6b6bb3442df2a4b8dc3c67125d917.png

在CIFAR-10数据集上准确率欠佳(高维图像还是DNN的天下):

3679c0818b19d26ba7816283e45e86db.png

二、深度森林原理

深度森林其实也就是ensemble of ensemble的模型,可以看作是在集成树(森林)模型的基础上,进一步stacking集成学习及优化(Complete Random Forest、shortcut-connection、Multi-Grained Scanning等),以解决深层容易过拟合的问题。

2.1 特征的处理

深度森林借鉴了CNN滑动卷积核的特征提取,通过多粒度扫描(Multi-Grained Scanning)方法,滑动窗口扫描原始特征,生成输入特征。

a6bb8df032bbe7e97a63929b99425738.png

如上图,假设我们现在有一个400维(序列数据)的样本输入,现在设定采样窗口是100维的,那我们可以通过逐步的采样,最终获得301个子样本(默认采样步长是1,得到的子样本个数 = (400-100)/1 + 1)。

9acf362a4e8da96de1a2c5ab271bb7b3.png

整个特征处理的过程就是:先输入一个完整的P维样本,然后通过一个长度为k的采样窗口进行滑动采样,得到S = (P - K)/1+1 个k维特征子样本向量,接着每个子样本都用于完全随机森林和普通随机森林的训练并在每个森林都获得一个长度为C(类别数)的概率向量,这样每个森林会产生长度为S*C的表征向量(即经过随机森林转换并拼接的概率向量),最后把每层的F个森林的结果拼接在一起得到本层输出。

2.2 深度森林的架构

585777c126321870e3779b7d62f6db97.png

整个模型的架构采用一个级联结构(如上图), 每一级都采用两种森林构建:random forests (black) and  completely-random tree forests(blue),使用completely-random可以增加基模型的多样性,以减少过拟合风险,提高集成学习的效果。

完全随机森林(completely-random tree forests):由多棵树组成,每棵树包含所有的特征,并且随机选择一个特征作为分裂树的分裂节点。一直分裂到每个叶子节点只包含一个类别或者不多于是个样本结束。

随机森林(random forests):同样由多棵树构成,每棵树通过随机选取Sqrt(特征总数)个特征 ,然后通过GINI分数来筛选分裂节点。

237fc324d91a67d916afc920ed1c7d68.png

每一层的级联接收前一层处理的特征信息,并将处理结果(类向量)输出到下一层(如上图)。以三分类为例,输入特征为向量x,经过每个森林学习后(注:每个森林的学习的数据利用k折交叉验证得到,以减少过拟合风险),得到预测类分布,然后求平均,再与之前原始特征拼接(类似shortcut-connection),作为下一层的输入。

扩展完一层后,整个级联结构可在验证集上面测试性能,若没有显著提高,训练过程会终止,故而层数可以自动确定。这也是gcForest能够自动决定模型复杂度的原因。

三、深度森林预测

本节简单使用深度森林模型用于波士顿房价回归预测及癌细胞分类任务。 

安装:pip install deep-forest

  • 波士顿房价回归预测,使用默认参数效果还不错:Testing MSE: 8.068

# 回归预测--波士顿房价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))
  • 癌细胞分类任务,准确率不错,Testing Accuracy: 95.105 %

# 分类预测--癌细胞分类数据集from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_scorefrom deepforest import CascadeForestClassifierX, y = load_breast_cancer(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))

d25a6680a19e5e311dd0058df0aeaf94.gif

8799a065e800f51cec908e510581f154.png

资讯

OpenAI开放GPT-3微调功能

技术

LTSM实现多元素时序数据预测

技术

9个好用的python操作文件方法

资讯

云游戏、AR等给元宇宙提供了哪些?

70e5fbeea64a1acda08b45cf9b90477a.png

分享

5682733e7a45292d7b3f874efb962377.png

点收藏

f360aad165c54799e6785abdcabc409c.png

点点赞

50d9e8ad207eebff93cc35179fa6d738.png

点在看


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

相关文章

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

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

有关 -fPIC 选项的编译问题

嵌入式 Linux 上基于 makefile 的编译,执行编译出现如下错误: error: test/fake_blemgr_test.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC 这个问题涉及到生成位置无关代码的机制,在我这里的情况是&#xff0…

-fpic 与-fPIC的区别

-fpic 与-fPIC的区别 前言 在编译动态库的时候,我们应该需要使用-fpic 或-fPIC参数。如下所示: 然后,使用gcc或g 命令生成动态库 pic 与PIC的异同 相同点:都是为了在动态库中生成位置无关的代码。通过全局偏移表(GOT&…

在字符串中删除指定的特定字符

使用C语言,编写一个尽可能高效的函数,删除字符串中特定字符。 思路:要求尽可能高效,定义一个256的int数组,将需要删除的字符ASCII作为数组下标,要删除的置1,注意点:处理后的字符串要…

实现一个删除字符串中的指定字符的简单函数

做出此函数只需将函数分步运行 第一步&#xff1a;确定函数接口和定义变量 因为是要删除字符串中的指定函数&#xff0c;所以要定义出字符串以及字符&#xff0c;即str[]和c。函数接口为void delchar&#xff08;char*str&#xff0c;char c); #include<stdio.h> int …

删除字符串某一指定子字符串

文章目录 功能&#xff1a;删除字符串某一指定子字符串业务场景实现方法1、Java实现 功能&#xff1a;删除字符串某一指定子字符串 业务场景 在数据库中有一个String类型的字符串&#xff0c;该字符串通过逗号进行分割&#xff0c;现在前端传过来字符串中的一个子字符串&…

删除字符串中指定的字符C语言详解

问题描述&#xff1a; 从键盘输入一个字符串和一个字符&#xff0c;删除字符串中所指定的字符&#xff0c;将结果保存到一个新的字符串中并输出 编译环境&#xff1a;vc 6.0; 代码 #include <stdio.h>int main() {char str1[80], str2[80], ch;int i,j0;printf("…

C语言删除字符串中的指定字符

一、函数方法&#xff08;推荐使用这个方法&#xff09; 只需要进行一次对目标字符串的遍历即可完成删除目标字符的功能&#xff0c;具体的代码如下所示&#xff1a; void delchar( char *str, char c ) {int i,j;for(ij0;str[i]!\0;i){if(str[i]!c)//判断是否有和待删除字符一…

C++ 删除指定字符串中的某些字符

C 删除指定字符串中的某些字符 题目 输入URL前缀和后缀&#xff0c;删除字符串中的“,/”&#xff0c;把URL拼接在一起且后边有“/”。 用例&#xff1a; 输入&#xff1a;/abhdsjvf/,/afsggfd 输出&#xff1a;/abhdsjvf/afsggfd/ 程序实现&#xff1a; #include<iostrea…

Windows server 2012 R2安装教程

镜像下载地址&#xff1a; ed2k://|file|cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso|5545527296|BD499EBCABF406AB82293DD8A5803493|/ 1&#xff0c;语言&#xff0c;键盘输入法&#xff0c;默认&#xff0c;点击下一步 2&#xff0c;点击 现在安装 3&…

SQL Serevr 2012 安装教程

需要的工具 SQL Server 2012R2 镜像 ISO WINDOWS SERVER 2012R2 操作系统 安装过程 1、打开安装文件&#xff0c;打开 setup 应用程序图标 2、在 SQL server 安装中心窗口中&#xff0c;点击安装– 点击全新 SQL Server 独立安装或向现有安装添加功能 3、点击确定 4、输入产…

Microsoft SQL Server 2008 R2 官方简体中文正式版下载(附激活序列号密钥)

微软官方发布的Microsoft SQL Server 2008 R2 简体中文完整版。基于SQL Server 2008提供可靠高效的智能数据平台构建而成&#xff0c;SQL Server 2008 R2 提供了大量新改进&#xff0c;可帮助您的组织满怀信心地调整规模、提高 IT 效率并实现管理完善的自助 BI。此版本中包含应…

SqlServer2012下载+安装+启动(资源+密钥)

一、下载 此处提供一个下载链接。具体地址如下&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1zaMOa-nA19mZxStrBK9jjg 提取码&#xff1a;k03s 下载压缩包是SqlServer2012版镜像&#xff0c; 二、安装 直接双击下载得到的镜像文件&#xff0c;后双击文件夹的如下set…

超详细windows server2012 r2 虚拟机安装步骤

1、Windows Server 2012 R2简介 Windows Server 2012 R2 是基于Windows8.1 以及Windows RT 8.1 界面的新一代 Windows Server 操作系统&#xff0c;提供企业级数据中心和混合云解决方案&#xff0c;易于部署、具有成本效益、以应用程序为重点、以用户为中心。 在 Microsoft 云…

server 2012 各个版本的安装及激活教程

服务器引导盘的部分我就不多解释了&#xff0c;直接讲重点&#xff0c;需要注意的地方 Windows Server 2012 R2 安装密钥&#xff08;只适用安装&#xff0c;不支持激活&#xff09; 标准版 NB4WH-BBBYV-3MPPC-9RCMV-46XCB 数据中心版 BH9T4-4N7CW-67J3M-64J36-WW98Y 安装的…

VMware虚拟机安装Windows Server 2012 R2

想必同学们已经开学了&#xff0c;也都进入了军训阶段吧&#xff0c;而很多计算机网络专业的同学们要开始接触到Windows Server了&#xff0c;这也是计算机网络技术专业的专业基础课程&#xff0c;想当年我们实训课学习使用的好像是2008版的&#xff0c;也不晓得现在各个学校会…

win2012 R2安装与配置

安装win2012 R2的时候&#xff0c;我们最好使用update的iso镜像&#xff0c;不然安装完后会出很多问题&#xff0c;比如vmtools安装不了。 iso镜像迅雷下载&#xff1a; ed2k://|file|cn_windows_server_2012_r2_with_update_x64_dvd_6052725.iso|5545705472|121EC13B53882E50…

windows server 2008R2/2012R2安装

Windows安装 1.镜像下载 镜像网站&#xff1a;https://msdn.itellyou.cn/ Windows Server 2012R2&#xff1a;cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso 迅雷下载地址&#xff1a;ed2k://|file|cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso|4453249024|1F71…

windowsserver2012R2安装教程

下载windowsserver2012R2系统镜像。 刻录光盘或是写入到U盘做成启动u盘&#xff0c;操作文档可搜索iso写入U盘。 服务器或是电脑开机从U盘启动安装。 现在安装。 输入激活码 NH3KG-P864D-XYCJH-82DMH-4CX8M -- Standard 7H6M3-4N78W-RFFKJ-H9KPW-K2C2M -- Datacenter 安装什…

服务器2012r2系统安装设置,正确安装windows server 2012 r2的方法

Windows Server 2012 R2 是基于Windows8.1 以及Windows RT 8.1 界面的新一代 Windows Server 操作系统&#xff0c;提供企业级数据中心和混合云解决方案&#xff0c;易于部署、具有成本效益、以应用程序为重点、以用户为中心。windows server 2012 R2 具备的众多新特点大大的增…