当前位置: 首页 > 编程日记 > 正文

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

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

点在看

相关文章:

LHC大神问的矩阵转置问题

数学中线性代数中提到的矩阵转置&#xff0c;其实在我们的业务场景中也有需要的地方&#xff0c;比如LHC大神问到的这个问题 那么如何进行行列转换呢&#xff1f; 代码如下&#xff1a; <?php$arrayarray(部门1>array(费用1>100,费用2>200,费用3>300),部门2>…

不同机器互相调用WebService或者HTTP一定要telnet 测试

ping的通不一定就telnet的通 一定要#telnet 目标机器IP 目标机器端口如果一直是 Trying 目标IP那么不通如果是 Trying 目标IP Connection to 目标IP 说明通的

亮相百度WAVE SUMMIT+2021,Intel OpenVINO带来新气象

北京时间12月12日&#xff0c;百度WAVE SUMMIT2021深度学习开发者峰会在上海举办。这场属于AI的科技盛会之上&#xff0c;英特尔OpenVINO联手百度PaddlePaddle为开发者带来了一系列的技术内容&#xff0c;为开源生态构建持续合作&#xff0c;为产业进步提供新的动力。 OpenVIN…

精品德国软件 UltraShredder 文件粉碎机

出自德国的文件粉碎机&#xff0c;整合了回收站的相关操作&#xff0c;特点是兼容性好&#xff0c;支持9X以上的Win全系列&#xff08;不包括64位系统哦&#xff09;。该软件绿色免费&#xff0c;建议收藏于U盘^_^ 它和偶之前汉化的加密软件Omziff一样&#xff0c;来自XTort&am…

JavaEE 银联支付之手机控件支付-消费类交易

0. workflow app端request->后台封装参数->后台进行签名->请求银联平台->解析响应->响应需求信息 复制代码1. acp_sdk.properties ##############SDK配置文件&#xff08;证书方式签名&#xff09;################ # 说明&#xff1a; # 1. 使用时请删除后缀的…

php singleton()

common.php <?phpclass CC{private static $ins;public static function singleton(){if (!isset(self::$ins)){$c __CLASS__;self::$ins new $c;}return self::$ins;}public function EventResult($Id){return $Id;}}?>index.php <html><head><title…

2015 Multi-University Training Contest 2 1002 Buildings

Buildings Problems Link: http://acm.hdu.edu.cn/showproblem.php?pid5301 Mean: n*m列的网格&#xff0c;删除一个格子x,y&#xff0c;用矩形来填充矩阵。且矩形至少有一边是在矩阵的边缘上。 要使最大矩形的面积最小&#xff0c;求满足条件的矩形填充方式中面积最大的…

Meta 发布 Bean Machine 帮助衡量 AI 模型的不确定性

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; Meta 近日宣布发布 Bean Machine&#xff0c;这是一种概率编程系统&#xff0c;表面上可以更轻松地表示和了解 AI 模型中的不确定性。 在早期测试版中&#xff0c;Bean Machine 可用于通过自动的“不确…

【跃迁之路】【425天】刻意练习系列184—SQL(2018.04.06)

(跃迁之路)专栏 叨叨两句 技术的精进不能只是简单的刷题&#xff0c;而应该是不断的“刻意”练习该系列改版后正式纳入【跃迁之路】专栏&#xff0c;持续更新刻意练习——MySQL 2018.04.02 题目描述 DROP TABLE IF EXISTS test1;CREATE TABLE test1 (id int(11) NOT NULL AUTO_…

安利一个超好用的 Pandas 数据挖掘分析神器

作者 |欣一来源 |Python爱好者集中营今天小编继续来给大家介绍一款用于做EDA(探索性数据分析)的利器&#xff0c;并且可以自动生成代码&#xff0c;帮助大家极大节省工作时间与提升工作效率的利器&#xff0c;叫做Bamboolib。大家可以将其理解为是Pandas的GUI扩展工具&#xff…

PHP魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的&#xff0c;只有在加载了这些扩展库时才会出现&#xff0c;或者动态加载后&#xff0c;或者在编译时已经包括进去了。 有七个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 _…

vim 打开Linux下文件每一行后面都有^M的样式

由于服务器不是我一个人在操作&#xff0c;在修改apache配置文件时发现了一个很奇怪的问题&#xff0c;vim编辑打开配置文件发现后面都有一个^M的标记 虽然不会影响服务的运行&#xff0c;但总感觉不对劲&#xff0c;所以在此我尝试用替换的方式来设置它 :%s/\^M//g 虽然也成功…

所有类是object的子类,但是又可以继承一个其他类解析

所有类的祖宗是object&#xff0c;所有类只能有一个父亲。Java的单继承指的是一个类不能有多个父亲&#xff0c;而C就能有好多父亲。举个例子&#xff1a;如果A 没有继承任何类&#xff0c;那他的类层次关系默认是 A -- Object如果A 继承了类B&#xff0c;那他的类层次关系变为…

Smarty中文手册,Smarty教程,Smarty模板的入门教材

Smarty中文手册,Smarty教程,Smarty模板的入门教材首先&#xff0c;这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的&#xff0c;不代表任何人的意见和观点。对他们的无私奉献精神&#xff0c;我们表示感谢&#xff0c;他们为Smarty模板的普及作出了重大的贡献&#…

380万播放量,也许是全网最火的机器学习视频

“秋名山上行人稀&#xff0c;常有车手较高低。如今无人车当道&#xff0c;全是 AI 老司机。”且问 AI 老司机表现如何&#xff1f;可灵活转弯&#xff0c;控速自如&#xff1a;可行云流水&#xff0c;沿最优路线过弯&#xff1a;更可多次打圈&#xff0c;绕多少下也不在话下&a…

《SQL Server 管理与维护指南》章节目录

http://www.mssqlmct.cn/?post2转载于:https://blog.51cto.com/mssqlmct/1677763

Java并发之synchronized

synchronized关键字最主要有以下3种应用方式 修饰实例方法&#xff0c;作用于当前实例加锁&#xff0c;进入同步代码前要获得当前实例的锁&#xff1b;实例锁&#xff0c;一个实例一把锁 修饰静态方法&#xff0c;作用于当前类对象加锁&#xff0c;进入同步代码前要获得当前类对…

java 产生的固体物的基础上 增删改的SQL声明

经过多次修改。最后版本。package com.power.sql;import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; import java.util.Vector;import org.apache.commons.lang3.reflect.FieldUtils; /*** author Gary Huang* 博客地址&#xff1a;…

顺络新能源汽车技术研讨会圆满落幕

2021年12月11日&#xff0c;由深圳顺络电子股份有限公司主办、中国传感器与物联网产业联盟和大湾区新能源汽车产业技术创新联盟协办的新能源汽车技术研讨会在深圳汉普斯酒店隆重召开&#xff0c;广汽研究院智能网联中心总师廖磊先生、比亚迪汽车工程研究院副总工程师顾建军先生…

电信的 DNS 服务器地址

上海电信 202.96.209.5202.96.209.6202.96.209.133202.96.209.134

系统利益相关者描述案例

利益相关者 主要目标 态度 主要关注点 约束条件 厅长 监督河北省创新事业的发展 强烈支持积极推动河北省科技创新平台的建立&#xff0c;促进河北省科技创新事业的发展 如何优化管理&#xff0c;如何保证推动创新发展事业工作的高效性 无 平台主任&#xff08;院长…

CentOS6怎么样设置ADSL上网

首先安装好CentOS6以后要安装rp-pppoe这个软件&#xff0c;centos之前的版本所adsl-setup这个命令安装&#xff0c;到centos6改了。 需要光驱内放好CentOS安装盘 挂载光盘 #mount /dev/cdrom /media 找出文件路径 # find /media -name rp-pppoe* 这个文件没有依赖项&#xff0c…

小冰数字孪生主播正式上线 全球首创全流程无人化AI直播

12月20日&#xff0c;小冰公司公布全新的数字孪生虚拟人技术&#xff0c;并联合每日经济新闻&#xff0c;将首批应用该技术的虚拟主持人&#xff0c;与“每经AI电视”一同正式上线。与其他技术相比&#xff0c;小冰框架不仅将虚拟人的整体自然度提升至与真人难以分辨的程度&…

二分搜索 POJ 2456 Aggressive cows

题目传送门 1 /*2 二分搜索&#xff1a;搜索安排最近牛的距离不小于d 3 */4 #include <cstdio>5 #include <algorithm>6 #include <cmath>7 using namespace std;8 9 const int MAXN 1e5 10; 10 const int INF 0x3f3f3f3f; 11 int x[MAXN]; 12 int n,…

路由策略与策略路由的区别。

这两中方案都是为了控制网络流量的可达性或调整网络流量的路径&#xff1a; 一、路由策略。&#xff08;Route-Policy&#xff09;路由策略是通过修改路由表的路由条目来控制数据流量的可达性。即对接受和发布的路由进过滤。这种方式称为路由策略。 二、策略路由。&#xff08;…

Python 刷英语六级段落匹配仅需 3 秒?

作者 | 叶庭云来源 | AI庭云君一、前言 一年二度的四六级考试就此落下帷幕&#xff0c;本次考试体验感极强&#xff0c;反手就是一个 "五星好评"本文利用 Python 的模糊匹配方法来刷英语六级段落匹配&#xff0c;仅需要3秒&#xff01;Python的 FuzzyWuzzy 库&#x…

在自己的网站添加关注新浪关注按钮

有2种方法 第一种是参照新浪开发平台的API 地址如下&#xff1a; http://open.weibo.com/widget/followbutton.php 第二种是在html页面引入一段js <iframe allowtransparency"" border"0" frameborder"0" height"22" marginheight…

pandas中DataFrame的ix,loc,iloc索引方式的异同

pandas中DataFrame的ix&#xff0c;loc&#xff0c;iloc索引方式的异同 1、loc: 按照标签索引&#xff0c;范围包括start和end 2、iloc&#xff1a; 在位置上进行索引&#xff0c;不包括end 3、ix: 先在index上索引&#xff0c;索引不到就在index的位置上进行索引(如果index非全…

Linux crontab 命令格式

基本格式 :*  *  *  *  *  command分 时 日 月 周 命令 第1列表示分钟1&#xff5e;59 每分钟用*或者 */1表示第2列表示小时1&#xff5e;23&#xff08;0表示0点&#xff09;第3列表示日期1&#xff5e;31第4列表示月份1&#xff5e;12第5列标识号星期0&#x…

5分钟学会打游戏的活体人脑细胞,比 AI 学习速度更快

整理 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在人工智能研究领域&#xff0c;最有前景的途径之一是尝试让软件模拟人脑的工作方式。 在两年前就有媒体报道称&#xff0c;澳大利亚生物科技初创公司 Cortical Labs 正致力于把真正的生物神经元嵌入到…