机器学习之决策树、随机森林

news/2024/12/5 5:02:42/

一、决策树

决策树是常见的机器学习中监督学习的方法,可以用来分类和回归。对于数据集,沿着决策树的分支,根据属性值判断属于决策树的哪一枝,最终到达叶节点,得到结果。一棵典型的决策树如下,

图1. 决策树

一棵决策树包括以下部分:

(1)树根:包含全部数据集

(2)树枝:划分标准

(3)中间节点:按照一定标准划分的子集

(4)叶子:最终的结果(包含的子集)

1.1 决策树分类

决策树分类中,最终的叶子为最终划分的分类结果,如根据当天的温度、湿度、风力、大气污染程度等,判断最终是天气好、一般还是差。决策树分支的标准是信息熵的增益最大,信息熵的定义如下:

Ent(D) = -\sum_{k=1}^{y} p_{k}log(p_{k})(1)

其中,p_{k}为集合D中第k类样本所占的比例,Ent(D)表示划分前根据数据标签的原始数据集的信息熵,信息熵越大,表示结构越活越;信息熵越小,结构越稳定。假设某一离散属性值X包含V个离散取值,那么根据属性X,可以将D划分为V个不同的子集,每一个子集都可以计算Ent(D^{v}), \ v=1,2,\cdots,V.

那么根据属性X进行划分(分枝)的信息增益(信息熵的下降量)为:

Gain(D, X)= Ent(D)-\sum_{v}^{V} \frac{D^{v}}{D} Ent(D^{v})(2)

挑选使得信息增益最大的属性X_{max},对决策树进一步分枝。该背后原理如下,根据决策树,使得整棵树的信息熵最低,得到的决策树不确定性最小,最稳定。

参见https://zhuanlan.zhihu.com/p/89607509

1.2 决策树回归

决策树用于回归时,其分枝的标准为最小均方误差。根据数据集的第j个特征,设置阈值为s,划分为c_{1}c_{2}两个区域,如下:

\mathop{\min}\limits_{j,s} \{ \mathop{\min}\limits_{c_{1}} \sum_{x_{i} \in R_{1 }(j,s) } (y_{i}-c_{1})^2 + \mathop{\min}\limits_{c_{2}} \sum_{x_{i} \in R_{2} (j,s)} (y_{i}-c_{2})^2 \}(3)

使得一个子集内均方误差最小的c_{k} =\hat{y}_{k}= \frac{1}{N_{k}} \sum_{x_{i}\in R_{k}} y_{i},那么上式为,

\mathop{\min}\limits_{j,s} \{ \sum_{x_{i} \in R_{1} (j,s) } (y_{i}-\hat{y}_{1})^2 + \sum_{x_{i} \in R_{2 }(j,s)} (y_{i}-\hat{y}_{2})^2 \}(4)

参见,https://blog.csdn.net/Albert201605/article/details/81865261

二、随机森林

随机森林,顾名思义,是很多树的集合。随机森林的基本单位是决策树,其示意图如下,

图2. 随机森林

随机森林的步骤如下:

(1)从数据集中有放回的随机抽样 ;

(2)随机抽取特征构建决策树;

(3)将决策树的结果取平均,得到最终结果。

参加,机器学习常用算法——随机森林 - 云+社区 - 腾讯云

三、代码实现

随机森林

利用第三方库,随机森林分类和回归如下,

分类,

from sklearn.ensemble import RandomForestClassifier# x. y为训练数据
model_RF_class = RandomForestClassifier(n_estimators = 100, random_state = 0)
model_RF_class.fit(x, y)
# x_test, y_test为测试数据
y_test = model_RF_class.predict(x_test)

回归,

# x. y为训练数据
from sklearn.ensemble import RandomForestRegressor# 随机森林回归器
model_RF_regr = RandomForestRegressor(n_estimators = 100, random_state = 0)
# 拟合数据集
model_RF_regr = model_RF_regr.fit(X, y)
# x_test, y_test为测试数据
y_test = model_RF_regr.predict(x_test)

参见,机器学习算法系列(十八)-随机森林算法(Random Forest Algorithm)_sai_simon的博客-CSDN博客_随机森林算法​​​​​​​j

具体参数的含义,见官网,sklearn.ensemble.RandomForestClassifier — scikit-learn 1.1.0 documentation

决策树

from sklearn.tree import DecisionTreeClassifier# x. y为训练数据
model_DT_class = DecisionTreeClassifier()
model_DT_class.fit(x, y)
# x_test, y_test为测试数据
y_test = model_DT_class.predict(x_test)
from sklearn.tree import DecisionTreeRegressor# x. y为训练数据
model_DT_regr = DecisionTreeRegressor(max_depth=1)
model_DT_regr.fit(x, y)
# x_test, y_test为测试数据
y_test = model_DT_regr.predict(x_test)

参见,python代码实现决策树分类_林下月光的博客-CSDN博客_python决策树分类

 参见,决策树—回归_禺垣的博客-CSDN博客_决策树回归


http://www.ppmy.cn/news/592762.html

相关文章

基于随机森林算法的糖尿病数据集回归

基于随机森林算法的糖尿病数据集回归 作者介绍1. 随机森林算法原理1.1决策树与Bagging1.2 随机森林算法 2. 实验过程2.1 糖尿病数据集2.2 实验过程2.3 实验结果展示2.4 完整实验代码 作者介绍 李怡格,女,西安工程大学电子信息学院,2021级硕士…

随机森林(Random Forest)算法

目录 简介 决策树 概念 定义 如何构建? 优点 缺点 集成学习 特点 错误率 种类 自主采样法(Boostrap Sampling) 概念 拓展 随机森林 概念 优点 缺点 简介 一种分类算法,属于集成学习中的Bagging算法,即…

随机森林模型sklearn_sklearn中随机森林的参数

AI 人工智能 sklearn中随机森林的参数 一:sklearn中决策树的参数: 1,criterion: ”gini” or “entropy”(default”gini”)是计算属性的gini(基尼不纯度)还是entropy(信息增益),来选择最合适的节点。 2,splitter: ”b…

随机森林评估特征重要性

随机森林(RF)简介 只要了解决策树的算法,那么随机森林是相当容易理解的。随机森林的算法可以用如下几个步骤概括: 1、用有抽样放回的方法(bootstrap)从样本集中选取n个样本作为一个训练集 2、用抽样得到的…

3决策树随机森林与深度学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Deep Neural Decision Forests二、Deep Forest阅读参考 关于决策树随机森林与深度学习,以两篇论文为切入,作简要分析。 作者的研究动机&…

全网独家--【图像色彩增强】方法梳理和问题分析

文章目录 图像增强图像色彩增强问题可视化比较 难点色彩空间大,难以准确表征?不同场景差异大,难以自适应?计算量大,但应用场景往往实时性要求高? 方法传统方法深度学习逐像素预测3D LUT模仿ISP 个人思考批判…

在线分析|在线做随机森林分析

今天小编给大家介绍的是TUTU(https://www.cloudtutu.com/)网站上新添的randomforest2分析,即随机森林模型分析。目前平台上有两个随机森林的分析,如下图,小伙伴们可根据自己的需求选择对应的工具。 ​ 随机森林&#…

森林防火综合解决方案

森林防火的原则要求是:“积极预防、早发现、早出动、早扑灭”,目前森林防火的手段主要有传统人防、普通监控和智能化自动监控这三种。传统人防手段只能靠护林员对重点时段、重点区域野外火源进行人工巡查,不具备全时、全天候、全地形的监测能…