机器学习之随机森林(Random forest)

这篇具有很好参考价值的文章主要介绍了机器学习之随机森林(Random forest)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 什么是随机森林

随机森林是一种监督式算法,使用由众多决策树组成的一种集成学习方法,输出是对问题最佳答案的共识。随机森林可用于分类或回归,是一种主流的集成学习算法。

机器学习之随机森林(Random forest),经典机器学习算法,机器学习,随机森林,人工智能

1.1 随机森林算法原理

随机森林中有许多的分类树。我们要将一个输入样本进行分类,我们需要将输入样本输入到每棵树中进行分类。打个形象的比喻:森林中召开会议,讨论某个动物到底是老鼠还是松鼠,每棵树都要独立地发表自己对这个问题的看法,也就是每棵树都要投票。该动物到底是老鼠还是松鼠,要依据投票情况来确定,获得票数最多的类别就是森林的分类结果。

1.1.1 核心思想

将若干个弱分类器的分类结果进行投票选择,从而组成一个强分类器,这就是随机森林bagging的思想(关于bagging的一个有必要提及的问题:bagging的代价是不用单棵决策树来做预测,具体哪个变量起到重要作用变得未知,所以bagging改进了预测准确率但损失了解释性)。

1.1.2 森林中的每棵树怎么生成

每棵树的按照如下规则生成:

(1)如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;

从这里我们可以知道:每棵树的训练集都是不同的,而且里面包含重复的训练样本。

  • 为什么要随机抽样训练集?

如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的,这样的话完全没有bagging的必要;

  • 为什么要有放回地抽样?

如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是"盲人摸象"。

(2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;

(3)每棵树都尽最大程度的生长,并且没有剪枝过程。

一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。

1.1.3 随机森林分类影响因素

随机森林分类效果(错误率)与两个因素有关:

  • 森林中任意两棵树的相关性:相关性越大,错误率越大;
  • 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。

减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。

1.1.4 误分率(oob error)

构建随机森林的关键问题就是如何选择最优的m,要解决这个问题主要依据计算误分率oob error。随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。在构建每棵树时,我们对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本。而这样的采样特点就允许我们进行oob估计,它的计算方式如下:(以样本为单位)

  • 对每个样本,计算它作为oob样本的树对它的分类情况(约1/3的树);
  • 然后以简单多数投票作为该样本的分类结果;
  • 最后用误分个数占样本总数的比率作为随机森林的oob误分率。

1.2 集成学习

集成学习算法是一种通过结合多个基本模型来构建一个更强大的模型的机器学习方法。它通过将多个基本模型的预测结果进行综合,从而提高整体预测的准确性和鲁棒性。此类学习方法基于这样一种概念:一群对问题领域知之有限的人集思广益,可以获得比一个知识丰富的人更好的解决方案。

在集成学习中,基本模型也被称为弱学习器或基分类器。这些基本模型可以是不同的算法(如决策树、支持向量机、神经网络等)的组合,也可以是同一算法在不同子样本上训练得到的模型。

Bagging(装袋法)、Boosting(提升法)和Stacking(堆叠法)是三种常见的集成学习方法,它们都通过结合多个基本模型来提高整体模型的性能。

1.2.1 Bagging(装袋法)

Bagging是一种基于自助采样的集成学习方法。它通过有放回地随机抽样生成多个独立的子训练集,然后在每个子训练集上训练一个基本模型。最终的预测结果通过对各个基本模型的预测结果进行投票或平均得到。Bagging的一个典型应用是随机森林(Random Forest)算法,其中每棵决策树都是基于不同的随机样本和随机特征子集构建的。

1.2.2 Boosting(提升法)

Boosting是一种迭代的集成学习方法,它通过顺序训练多个基本模型来逐步提升整体模型的性能。在每次迭代中,Boosting会调整样本的权重,使得之前模型预测错误的样本在后续迭代中得到更多的关注。常见的Boosting算法包括AdaBoost和梯度提升树(Gradient Boosting Tree)。最终的预测结果是通过对所有基本模型的加权组合得到,权重通常与基本模型的性能相关。

1.2.3 Stacking(堆叠法)

Stacking是一种基于模型集成的元学习方法。它通过在训练数据上训练多个不同的基本模型,然后将这些基本模型的预测结果作为输入,再通过另一个模型(称为元模型或组合模型)进行集成学习。元模型可以是简单的线性模型,也可以是更复杂的机器学习算法。Stacking的关键是使用基本模型的预测结果作为新的特征,以提供更多的信息给元模型,从而提高整体模型的性能。

这三种集成学习方法各自具有特点。Bagging通过并行训练独立的基本模型来减少方差,提高模型的稳定性。Boosting通过迭代训练调整样本权重,聚焦于难以分类的样本,提高模型的准确性。Stacking通过组合多个基本模型和一个元模型来利用它们的优势,提供更强的预测能力。

这些方法在实际应用中并不是互斥的,可以结合使用或根据具体问题选择最适合的方法。它们都是为了通过整合多个模型的预测结果来提高整体模型的性能。

2 随机森林算法优缺点

2.1 算法优点

(1)高准确性:随机森林通过组合多个决策树的预测结果,可以得到较高的准确性。由于每个决策树都是基于不同的随机样本和随机特征子集构建的,随机森林可以减少过拟合的风险,提高模型的泛化能力。

(2)可处理大规模数据集:随机森林能够有效处理包含大量样本和特征的数据集,而且在处理高维数据时也具有较好的表现。

(3)无需特征归一化和处理缺失值:随机森林算法对原始数据的处理要求相对较低,可以直接处理不需要进行特征归一化和处理缺失值。

(4)能够评估特征的重要性:随机森林可以通过测量特征在决策树中的贡献度来评估特征的重要性,这有助于特征选择和数据理解。

2.2 算法缺点

(1)训练时间较长:相比于单个决策树,随机森林的训练时间通常较长,特别是当包含大量决策树和复杂特征时。因为每棵树都是独立构建的,需要进行并行计算。

(2)占用更多内存:随机森林由多个决策树组成,需要存储每棵树的信息,因此相对于单个决策树,它需要更多的内存空间。

(3)预测过程较慢:当需要对新样本进行预测时,随机森林需要将样本在每棵树上进行遍历,并将各个决策树的结果进行综合,因此相对于单个决策树,预测过程稍慢。

随机森林是一种强大的机器学习算法,适用于各种预测和分类任务。它的准确性高,能够处理大规模数据集,不需要对数据进行过多的预处理,同时能够评估特征的重要性。然而,由于其训练时间较长,占用较多内存,并且在预测过程中稍慢,因此在某些场景下可能需要权衡其优缺点来选择合适的算法。

3 随机森林应用场景

随机森林算法由于其良好的性能和可解释性,适用于许多不同的应用场景。以下是一些常见的随机森林算法应用场景:

(1)分类问题:随机森林可用于二分类和多分类问题。它可以应用于各种领域,如医疗诊断、金融欺诈检测、文本分类等。

(2)回归问题:随机森林也可以用于解决回归问题。例如,预测房价、销售量、股票价格等连续型变量的问题。

(3)特征选择:由于随机森林可以评估特征的重要性,它可以用于特征选择。通过排名特征的重要性,可以筛选出对目标变量有较大影响的特征,以提高模型的效果和解释能力。

(4)异常检测:随机森林在检测异常和离群点方面也具有一定的应用潜力。通过将异常样本与正常样本进行区分,可以帮助发现异常情况,如网络入侵、信用卡欺诈等。

(5)缺失值处理:随机森林能够处理包含缺失值的数据集。它可以利用其他特征的信息来填补缺失值,并进行准确的预测。

(6)推荐系统:随机森林可以应用于推荐系统中,通过分析用户行为和特征,预测用户对商品或服务的喜好,为用户提供个性化的推荐。

随机森林并非适用于所有问题,对于某些特定的领域和任务,可能存在其他更合适的机器学习算法。因此,在选择算法时,需要综合考虑问题的特点、数据规模、计算资源等因素。

4 基于随机森林算法实现双月数据集的分类

机器学习之随机森林(Random forest),经典机器学习算法,机器学习,随机森林,人工智能

 实现代码如下:

import matplotlib.pyplot as plt
import mglearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split


# 在two_moon数据集上构造5棵树组成的随机森林
X, y = make_moons(n_samples=100, noise=0.25, random_state=3)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)
RFC = RandomForestClassifier(n_estimators=100, random_state=2).fit(X_train, y_train)

# 将每棵树及总预测可视化
fig, axes = plt.subplots(2, 3, figsize=(20, 10))

for i, (ax, tree) in enumerate(zip(axes.ravel(), RFC.estimators_)):
    ax.set_title('Tree{}'.format(i))
    mglearn.plots.plot_tree_partition(X_train, y_train, tree, ax=ax)

mglearn.plots.plot_2d_separator(RFC, X_train, fill=True, ax=axes[-1, -1], alpha=.4)
axes[-1, -1].set_title('Random Forest')
mglearn.discrete_scatter(X_train[:, 0], X_train[:, 1], y_train)
plt.show()

运行效果如下:

机器学习之随机森林(Random forest),经典机器学习算法,机器学习,随机森林,人工智能文章来源地址https://www.toymoban.com/news/detail-551161.html

到了这里,关于机器学习之随机森林(Random forest)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (全英语版)处理恶意软件的随机森林分类器算法(Random Forest Classifier On Malware)

    Random Forest Classifier On Malware (copyright 2020 by YI SHA, if you want to re-post this,please send me an email:shayi1983end@gmail.com) (全英语版)处理恶意软件的随机森林分类器算法(Random Forest Classifier On Malware) Overview 随机森林分类器是最近很流行的一种识别恶意软件的机器学习算法,由

    2024年02月12日
    浏览(44)
  • 随机森林(Random Forest)简单介绍

    随机森林是一种监督式学习算法,适用于分类和回归问题。它可以用于数据挖掘,计算机视觉,自然语言处理等领域。随机森林是在决策树的基础上构建的。随机森林的一个重要特点是它可以减少决策树由于过度拟合数据而导致的过拟合,从而提高模型的性能。 随机森林是一

    2024年02月07日
    浏览(43)
  • 【机器学习 | 异常检测】孤立森林(isolation Forest)iForest 算法理论讲解及 Python 实战

    孤立森林(Isolation Forest,简称 iForest)是一种无监督学习算法,用于识别异常值。 其基本原理可以概括为一句话:异常数据由于数量较少且与正常数据差异较大,因此在被隔离时需要较少的步骤。 有两个假设: 异常的值是非常少的(如果异常值很多,可能被识别为正常的)

    2024年04月23日
    浏览(39)
  • 6、机器学习之随机森林

    使用更复杂的机器学习算法。 本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP 决策树给你留下了一个困难的选择。一个深度很大、有很多叶子的树会因为每个预测都来自其叶子上仅有的几个房屋的历史数据而过拟合。但是一个浅树,叶子较少,

    2024年01月19日
    浏览(43)
  • 机器学习十大算法之七——随机森林

    集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个横型,集成所有模型的建模结果,基本上所有的机器学习领域都可以看到集成学习的身影,在现实中集成学习也有相当大的作用,它可以用来做市场

    2024年02月11日
    浏览(39)
  • 机器学习之MATLAB代码--随机森林(一)

    代码: 数据部分截图 结果: 如有需要数据和代码压缩包请在评论区发邮箱留言,一般一天之内会发送,记得关注和点赞哦!!

    2024年02月11日
    浏览(42)
  • 传统机器学习(六)集成算法(1)—随机森林算法及案例详解

    集成学习(Ensemble Learning) 就是通过某种策略将多个模型集成起来,通过群体决策来提高决策准确率。 集成学习首要的问题是选择什么样的学习器以及如何集成多个基学习器,即集成策略。 一个有效的集成除了要让各个基学习器的学习效果好之外,还需要各个基学习器的差

    2024年02月01日
    浏览(55)
  • 机器学习算法:线性回归、逻辑回归、决策树和随机森林解析

    引言 机器学习算法是人工智能领域的核心,它们用于解决各种问题,从预测房价到图像分类。本博客将深入探讨四种常见的机器学习算法:线性回归、逻辑回归、决策树和随机森林。 线性回归 什么是线性回归? 线性回归是一种用于建立连续数值输出的机器学习模型的算法。

    2024年02月10日
    浏览(53)
  • 【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

    随机森林(Random Forest)算法 是一种 集成学习(Ensemble Learning)方法,它由多个决策树组成,是一种分类、回归和特征选择的机器学习算法。 在随机森林中,每个决策树都是独立地训练的,每棵树的建立都是基于随机选取的 特征子集 和随机选取的 训练样本集 。 在分类问题

    2024年02月01日
    浏览(54)
  • 机器学习实战6-糖尿病疾病的预测与分析(随机森林算法)

    大家好,我是微学AI,今天给大家介绍一下机器学习实战6-糖尿病疾病的预测与分析(随机森林算法),糖尿病是一种常见的慢性代谢性疾病,由于生活方式及基因等因素的影响,全球范围内糖尿病患者人数不断增加。预测糖尿病的发生有助于早期筛查和干预治疗,以降低糖尿

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包