随机森林 (Random Forests) 简单介绍与应用

1 集成方法(Ensemble methods)

1.1 什么是集成方法

简单来说,集成方法 就是组合多个模型,以获得更好效果。

1.2 两种集成方法

  • 平均法(averaging methods):也有人直接称之为“袋装法”,所有算法进行 相互独立 训练得到各自的模型,然后再进行投票选择最好的模型。如 随机森林(Forests of randomized trees)袋装法(Bagging methods)
  • 提升法(boosting methods): 训练开始后,从第二个模型开始,每个模型是针对前一个模型进行加权叠加。如 自适应提升(Adaboost)梯度树提升(Gradient Tree Boosting)

2 随机森林(Random Forests)

2.1 “森林”

在随机森林中,集合中的每棵树都是 从训练集中抽取的替换样本中构建的。大量的这样的树,即构成了所说的“森林”。

2.2 “随机”

在树的构造过程中分割每个节点时,可以从所有输入特征中找到最佳分割,也可以在1~max_features 范围中随机选取若干个特征进行分割节点操作。

2.3 作用

这两种随机性来源的目的是降低森林估计器的方差。事实上,单个决策树通常表现出高方差,并且倾向于过度拟合。森林中的注入随机性使得决策树具有一定程度的解耦预测误差。
通过取这些预测的平均值,一些错误可以抵消。随机森林通过组合不同的树来减少方差,有时以稍微增加偏差为代价。在实践中,方差的减少通常是显著的,因此产生了一个整体上更好的模型。

2.4 优点

  1. 对于很多种数据,它可以产生高准确度的分类器;
  2. 它可以处理大量的输入变数;
  3. 它可以在决定类别时,评估变数的重要性;
  4. 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计;
  5. 它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;
  6. 它提供一个实验方法,可以去侦测variable interactions;
  7. 对于不平衡的分类资料集来说,它可以平衡误差;
  8. 它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将资料视觉化非常有用;
  9. 使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料;
  10. 学习速度快。

简单应用

简单分享一下sklearn官网的例子。
重要说明 sklearn的版本为0.22.1,之前的版本不一定能运行一下代码。

酒的类别预测(SVM vs Random Forests)

数据集来自于sklearn官网例子,已经内置于sklearn中,具体信息可以参考 https://scikit-learn.org/stable/datasets/index.html#wine-recognition-dataset
如果对ROC曲线不甚了解的话,不妨参考这篇大佬的文章.
这里只强调其中一点:AUC值越大,模型的分类效果越好

代码1

import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import plot_roc_curve
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
# 使用官网自带的函数,y是类别,y 取值范围为 {1,2,3}
X, y = load_wine(return_X_y=True)
# 将多分类问题转换为二分类问题
y = y == 2
# 分割为训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
# 训练svc模型
svc = SVC(random_state=42)
svc.fit(X_train, y_train)

可以看到输出内容为:

SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',max_iter=-1, probability=False, random_state=42, shrinking=True, tol=0.001,verbose=False)

接着查看svc模型的ROC曲线图,代码如下:
代码2

# 效果展示
svc_disp = plot_roc_curve(svc, X_test, y_test)
plt.show()

可以看到如图所示的ROC曲线图:
svc的ROC曲线图
代码3

# 随机森林分类器
rfc = RandomForestClassifier(n_estimators=10, random_state=42)
# 拟合
rfc.fit(X_train, y_train)
ax = plt.gca()
rfc_disp = plot_roc_curve(rfc, X_test, y_test, ax=ax, alpha=0.8)
svc_disp.plot(ax=ax, alpha=0.8)
plt.show()

可以看到RandomForests与SVC的ROC曲线图如下:
在这里插入图片描述
调参工作
svc模型参数中c默认为1实在太小,而随机森林却把参数n_estimators=10,看起来的确有些不公平,不妨调整一下。可以发现n_estimators=3时效果最佳,AUC=0.99,而SVC中的C=300时才能达到0.96的AUC。

更多例子

更多例子参考sklearn官网例子,https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#examples-using-sklearn-ensemble-randomforestclassifier

Smileyan
2020年3月1日 0:06

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随机森林--

----------------------集成学习---------------------- 集成学习可以被分为三个主要研究领域: -----------------------------------------------------模型融合----------------------------------------------------- 模型融合在最初的时候被称为“分类器结合…

R随机森林实现

原文链接:来自公众号生信数据挖掘 目录 R实现随机森林随机森林R包估值过程袋外错误率(oob error)R randomForest函数实现安装程序包,查看样本数据结构建模与观察 R实现随机森林 该文只简单的讲解关于的R的随机森林具体实现步骤&a…

随机森林 – Random forest

随机森林 – Random forest 随机森林是一种由决策树构成的集成算法,他在很多情况下都能有不错的表现。 本文将介绍随机森林的基本概念、4 个构造步骤、4 种方式的对比评测、10 个优缺点和 4 个应用方向。 什么是随机森林? 随机森林属于 集成学习 中的 …

随机森林原理详解 random forest 代码+参数讲解

事实上随机森林的基本单元决策树很早就被提出来了,只不过单个决策树效果不好。这个情况和神经网络差不多。 到了2001年Breiman把分类树组合成随机森林(Breiman 2001a),即在变量(列)的使用和数据&#xff0…

随机森林及应用

学习了B站视频《随机森林及应用》,记录一下学习笔记啦,原视频链接:Python机器学习算法实践Ⅲ-随机森林及应用。 一、随机森林属于集成学习,所以首先了解集成学习。在集成学习中,主要分为Bagging算法和Boosting算法。 B…

随机森林(Random Forests)介绍

1.决策树(Decision Tree) 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。常见的决策树算法有C4.5、ID3和CART。ID3算法用的是信息增益,C…

使用随机森林进行特征选择

绘制随机森林每棵树的决策边界 首先导入必要的库函数: from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_moons from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import numpy as…

python实现随机森林

定义: 随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。可回归可分类。 所以随机森林是基于多颗决策树的一种集成学习算法,常见的决策树算法主要有以下几种: 1. ID3:使用信息增益g(D,A)进行特征选择 2. C4.5&…

教你体验目前最火AI - 在craft AI assistant 使用chatGPT

atGPT大火之后,很多人都想体验一把,今天为大家推荐一种免费方式,体验chatGPT同款内核的AI助手。 craft AI assistant Craft 推出的 AI 助手产品 Craft AI Assistant,并且现在就可以使用。根据 Craft 官方介绍,Craft …

【ChatGPT+AI】持续更新

ChatGPT的缘分 ChatGPT的缘分 一、小白必知1.1ChatGPT是什么?1.2ChatGPT怎么用?1.3ChatGPT登录注意事项 二、ChatGPT实战2.1什么Prompt?2.2ChatGPT怎么发图片2.3ChatGPT快速制作PPT 三、其他AI与免费镜像网站四、星球介绍 ChatGPT的缘分 大家…

DetectGPT VS ChatGPT:AI反击战?

1.背景 随着 ChatGPT 的持续火爆,现在无论哪个行业,几乎是人尽皆知。同时,利用 ChatGPT 进行造假作弊的情况也是层出不穷,尤其是在教育和传媒行业。在美国的一项千人调查中,有89%的学生表示在家庭作业中使用了 ChatGP…

多国拟发ChatGPT禁令 关“野兽”的笼子要来了?

“人工智能想越狱“、”AI产生自我意识”、“AI终将杀死人类”、“硅基生命的进化”.......曾经只在在赛博朋克等科技幻想中出现的剧情,在今年走向现实,生成式自然语言模型正在遭受前所未有的质疑。 聚光灯下最瞩目的那个是ChatGPT,3月底到4…

ChatGPT从入门到精通,深入认识Prompt

ChatGPT从入门到精通,一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定 让ChatGPT帮你高效实现职场办公!行动起来吧。欢迎关注专栏 。。。。。 还有更多。。。。&…

【Prompting】ChatGPT Prompt Engineering开发指南(1)

ChatGPT Prompt Engineering开发指南1 Prompting指南设置 提示原则策略1:使用分隔符清楚地指示输入的不同部分策略2:要求结构化输出策略3:让模型检查条件是否满足策略4: “Few-shot”提示 原则2:给模型时间“思考”策略1&#xff…

【ChatGPT】Prompt Engineering入门

Prompt Engineering入门 一、什么是 Prompt Engineering?二、我们还需要学习 PE 吗?三、Prompt基础原则 一、什么是 Prompt Engineering? 简单的理解它是给 AI 模型的指令。它可以是一个问题、一段文字描述,甚至可以是带有一堆参数…

大型语言模型LLM的基础应用

ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚…

【ChatGPT】怎样计算文本token数量?

ChatGPT 按 token 计费,当你把一段长文本发送给它时,你如何计算该文本消耗了多少 token? 在非流式访问的情况下,ChatGPT 的回复信息中包含有 token 消耗数量。但是在流式访问的情况下,回复信息里没有 token 数量&…

微软用 ChatGPT 改写 Bing、Edge,市值一夜飙涨 5450 亿元!

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 已经没有什么能够阻挡科技巨头追逐 ChatGPT 的步伐,前有 Google CEO 桑达尔皮查伊亲自下场官宣 Bard AI 对话式系统的到来,后有微软更快一步地推出了应用 ChatGPT 的 Bing 搜索引…

ChatGPT和DALLE-2级联后,输出效果震撼了…

源|机器之心 文|张倩、袁铭怿 生成式 AI 正在变革内容的生产方式。 在过去的一周,相信大家都被 ChatGPT 刷了屏。这个强大的对话 AI 仅用 5 天时间用户量就突破了 100 万。大家用各种方式测试着它的能力上限,其中一种测试方式就是…

ChatGPT 的能力上限将被突破

最近,一篇名为《Scaling Transformr to 1M tokens and beyond with RMT》的论文在 AI 界引起了广泛热议。 该论文提出一种名为 RMT 的新技术,如果能够成功应用,那将把 Transformer 的 Token 上限扩展至 100 万,甚至更多。 GitHub…