乐趣区

关于人工智能:图解随机森林算法

作者 |PythosLabs
编译 |VK
起源 |Towards Data Science

这篇文章是对于什么的

在本文中,咱们将理解随机森林算法是如何在外部工作的。为了真正了解它,理解一下决策树分类器可能会有帮忙。但这并不齐全是必须的。

留神 :咱们不波及建模中波及的预处理或特色工程步骤,只查看当咱们应用 sklearn 的 RandomForestClassifier 包调用.fit() 和.transform()办法时,算法中会产生什么。

随机森林

随机森林是一种基于树的算法。它是多种不同品种的随机树的汇合。模型的最终值是每棵树产生的所有预测 / 预计的平均值。

咱们将以 sklearn 的 RandomForestClassifier 为根底

sklearn.ensemble.RandomForestClassifier

数据

为了阐明这一点,咱们将应用上面的训练数据。

注:年龄、血糖程度、体重、性别、吸烟,… f98、f99 都是自变量或特色。

糖尿病 (Diabetic) 是咱们必须预测的 y 变量 / 因变量。

外部到底产生了什么

有了这些根本信息,让咱们开始并了解咱们将这个训练集传递给算法会产生什么…

步骤 1 -Bootstrapping

一旦咱们将训练数据提供给 RandomForestClassifier 模型,它(该算法)会随机抉择一组行。这个过程称为 Bootstrapping。对于咱们的示例,假如它抉择 m 个记录。

留神 - 要抉择的行数可由用户在超参数 - max_samples 中提供)

留神 - 一行可能被屡次选中

步骤 2 - 为子树抉择特色

当初,RF 随机抉择一个子集的特色 / 列。为了简略起见,咱们抉择了 3 个随机特色。

留神,在你的超参数 max_features 中你能够管制这个数字,例如上面的代码

import sklearn.ensemble.RandomForestClassifier

my_rf = RandomForestClassifier(max_features=8)

步骤 3 - 抉择根节点

一旦抉择了 3 个随机特色,算法将对 m 个记录(从步骤 1 开始)进行决策树的拆分,并疾速计算度量值。

这个度量能够是 gini,也能够是熵。

criterion = 'gini' #(or 'entropy' . default= 'gini’)

选取基尼 / 熵值最小的随机特色作为根节点。

记录在此节点的最佳拆分点进行拆分。

步骤 4 - 抉择子节点

该算法执行与步骤 2 和步骤 4 雷同的过程,并抉择另一组 3 个随机特色。(3 是咱们指定的数字 - 你能够抉择你喜爱的 - 或者让算法来抉择最佳数字)

它依据条件(gini/ 熵),抉择哪个特色将进入下一个节点 / 子节点,而后在这里进一步宰割。

步骤 5 - 进一步拆分并创立子节点

持续抉择特色(列)以抉择其余子节点

此过程持续(步骤 2、4)抉择随机特色并拆分节点,直到呈现以下任一状况

  • a)已用完要拆分的行数
  • b)拆分后的基尼 / 熵没有缩小

当初你有了第一个“迷你决策树”。

应用随机抉择的行(记录)和列(特色)创立的第一个迷你决策树

第 6 步 - 创立更多迷你决策树

算法返回到你的数据并执行步骤 1 - 5 以创立第二个“迷你树”

这是咱们应用另一组随机抉择的行和列创立的第二个迷你树

第 7 步 - 树成林

一旦达到默认值 100 棵树(当初有 100 棵迷你决策树),模型就实现了 fit()过程。

留神???? 你能够指定要在超参数中生成的树的数量(n_estimators)

import sklearn.ensemble.RandomForestClassifier

my_rf = RandomForestClassifier(n_estimators=300)

当初你有一个由随机创立的迷你树组成的森林(因而得名 Random Forest)

第 7 步 - 推理

当初让咱们预测一个看不见的数据集(测试数据集)中的值

为了推断(通常称为预测 / 评分)测试数据,该算法将记录传递到每个迷你树中。

记录中的值依据每个节点示意的变量遍历迷你树,最终达到一个叶节点。基于该记录完结的叶节点的值(在训练期间决定的),该迷你树被调配一个预测输入。

相似地,雷同的记录通过所有的 100 个小决策树,并且每 100 个树都有一个预测输入。这个记录的最终预测值是通过对这 100 棵小树的简略投票来计算的。

当初咱们有了对单个记录的预测。

该算法依照雷同的过程迭代测试集的所有记录,并计算总体精度!

迭代取得测试集每一行的预测的过程,以达到最终的精度。

参考文献

[1] sklearn’s documentation for RandomForestClassifier (version : 3.2.4.3.1)

https://scikit-learn.org/stab…

原文链接:https://towardsdatascience.co…

欢送关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/

退出移动版