机器学习系列(7)_决策树与随机森林概念

简介: 机器学习系列(7)_决策树与随机森林概念

决策树有三种算法:

4659be3053c74905935c1bc1e24317b0.png


一、熵与基尼系数



熵:一件事情的混乱程度

c0faa359b1914cdb89c74df3ef0cbb53.png


  1. 如果一个集合内部的属性很多,混乱程度就很大,则熵值也较大
  2. 如果一个集合内部的属性很少,混乱程度就很小,则熵值也较小


8ecf311075a34e33a6fa3cddf28e03c4.png

image.png

image.png

基尼系数和熵在公式上面不同,但是表达的结果是相同的。

  • 熵和基尼系数越大,说明当前分类效果越不好
  • 熵和基尼系数越小,说明当前分类效果越好


二、决策树构造实例



构造树的基本想法是随着树深度的增加,节点的熵迅速地降低。熵降低的速度越快越好,这样我们有望得到一棵高度最矮的决策树。

熵降低的速度越快越好:能有三步构造决策树,就不使用五步构造决策树。要使决策树的分类层次少。

以打球为例:

此时的熵是单纯根据以往是否打球来计算的概率,没有考虑天气等其他因素:

912ed858365146ddb83c30e0d856b1da.png9ea1e9bd81be467f9a0d7976eb6735c2.png

2075e9affcab488ca17aca59ad30287f.pngimage.png


三、信息增益(ID3算法)



ID3算法(信息增益):较为传统的算法,使用信息增益构建决策树。

信息增益就是将原始的熵减去用某个指标当根节点之后的熵。

在本例中就是如下所示的gain(outlook)

1db685da3eda47e7b993c5df2e811977.png

信息增益越大,那么决策树就会越简洁。这里信息增益的程度用信息熵的变化程度来衡量。

因此将四个参数的信息增益值计算出来,信息增益最大的就是根节点。

其余的节点也是一样的,类似于一个递归的操作,每次都选择同类型当中信息增益大的作为节点。

四、信息增益率(C4.5算法)

通常仅使用信息增益来绘制决策树是不靠谱的,如果某个特征存在的属性很多,但是属性对应样本的个数很少,这种情况下信息增益很大,但却无法得到我们想要的效果。

比如将ID也当成一个特征,那么每个样本的ID都是不同的,且每个样本分类当中只有自身,因此纯度很高,熵为0,信息增益最大。但这将导致每个样本都分成一类,不是我们期望的。

因此引入信息增益率。

信息增益率=信息增益 / 自身的熵值

如何衡量最终决策树的效果呢,可以使用评价函数:

image.png

这里使用H(t)表示每个叶子节点算出的基尼系数或者熵值,最终目的希望每个叶子节点的纯度很大,因此希望H(t)很小。


因此评价函数越小越好。


C4.5算法是ID3算法的扩展

能够处理连续型的属性。首先将连续型属性离散化,把连续型属性的值分成不同的区间,依据是比较各个分裂点Gian值的大小。

缺失数据的考虑:在构建决策树时,可以简单地忽略缺失数据,即在计算增益时,仅考虑具有属性值的记录。

image.png


image.png



五、二分选值



image.png


六、决策树减枝



即让决策树的层数较小,高度较矮。因为如果决策树很高的话,最终在训练集上都能达到100%的纯度,但是对于测试集,就可能造成误差,产生过拟合,因此需要让决策树的层数较小,高度较矮。

  1. 预剪枝:在构建决策树的过程时,提前停止。

即指定决策树的深度,比如指定为3,则分到第三层之后就停止继续分层了。

或者指定min_sample,就是当样本小于50个的时候,就停止继续分枝。

image.png


为什么要进行预减枝?为了防止过拟合的风险。

  1. 后剪枝:决策树构建好后,然后才开始裁剪。

image.png


因为叶子节点个数越多,越琐碎,则越容易造成过拟合。

最终要使得上图的公式值最小。

上面公式中的a值可以手工指定的:

如果a较大,则叶子节点个数要少

如果a较小,则叶子节点个数可以较多


七、随机森林



森林:多颗决策树就构造了一片森林。

随机森林:构造出来一片决策树,用一片决策树都完成决策的操作,每个决策树都单独执行决策的操作,最终的结果去所有决策树的众数。

随机: 由于样本可能有异常值,因此要进行随机的选择。一共有两重的随机性:

  1. 数据的选择随机性
    随机森去的样本是有放回的(就是可以有完全相同的样本),而且比例是随机的,都是在原始的训练集进行随机的选择。


  1. 特征选择的随机性
  2. Bootstraping有放回采样
  3. Bagging:有放回采样n个样本一共建立.分类器


决策树的参数:这些参数主要是觉得决策树怎么预减枝和后减枝的问题,防止过拟合的问题。

1、 criterion: 特征选取方法,可以是gini(基尼系数),entropy(信息增益),通常选择gini,即CART算法,如果选择后者,则是ID3和C4,.5


2、 splitter: 特征划分点选择方法,可以是best或random,前者是在特征的全部划分点中找到最优的划分点,后者是在随机选择的部分划分点找到局部最优的划分点,一般在样本量不大的时候,选择best,样本量过大,可以用random


3、 max_depth: 树的最大深度,默认可以不输入,那么不会限制子树的深度,一般在样本少特征也少的情况下,可以不做限制,但是样本过多或者特征过多的情况下,可以设定一个上限,一般取10~100


4、 min_samples_split:节点再划分所需最少样本数,如果节点上的样本树已经低于这个值,则不会再寻找最优的划分点进行划分,且以结点作为叶子节点,默认是2,如果样本过多的情况下,可以设定一个阈值,具体可根据业务需求和数据量来定


5、 min_samples_leaf: 叶子节点所需最少样本数,如果达不到这个阈值,则同一父节点的所有叶子节点均被剪枝,这是一个防止过拟合的参数,可以输入一个具体的值,或小于1的数(会根据样本量计算百分比)


6、 min_weight_fraction_leaf: 叶子节点所有样本权重和,如果低于阈值,则会和兄弟节点一起被剪枝,默认是0,就是不考虑权重问题。这个一般在样本类别偏差较大或有较多缺失值的情况下会考虑


7、 max_features: 划分考虑最大特征数,不输入则默认全部特征,可以选 log2N,sqrt(N),auto或者是小于1的浮点数(百分比)或整数(具体数量的特征)。如果特征特别多时如大于50,可以考虑选择auto来控制决策树的生成时间


8、 max_leaf_nodes:最大叶子节点数,防止过拟合,默认不限制,如果设定了阈值,那么会在阈值范围内得到最优的决策树,样本量过多时可以设定


9、min_impurity_decrease/min_impurity_split: 划分最需最小不纯度,前者是特征选择时低于就不考虑这个特征,后者是如果选取的最优特征划分后达不到这个阈值,则不再划分,节点变成叶子节点


10、class_weight: 类别权重,在样本有较大缺失值或类别偏差较大时可选,防止决策树向类别过大的样本倾斜。可设定或者balanced,后者会自动根据样本的数量分布计算权重,样本数少则权重高,与min_weight_fraction_leaf对应


11、presort: 是否排序,基本不用管


相关文章
|
3月前
|
机器学习/深度学习 存储 算法
决策树和随机森林在机器学习中的应用
在机器学习领域,决策树(Decision Tree)和随机森林(Random Forest)是两种非常流行且强大的分类和回归算法。它们通过模拟人类决策过程,将复杂的数据集分割成易于理解和处理的子集,从而实现对新数据的准确预测。
131 10
|
8天前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
78 15
|
1月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
129 1
|
3月前
|
机器学习/深度学习 数据采集 监控
探索机器学习:从数据到决策
【9月更文挑战第18天】在这篇文章中,我们将一起踏上一段激动人心的旅程,穿越机器学习的世界。我们将探讨如何通过收集和处理数据,利用算法的力量来预测未来的趋势,并做出更加明智的决策。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和思考方式。
|
2月前
|
机器学习/深度学习 算法 数据可视化
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
|
3月前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【9月更文挑战第9天】在数据科学领域,机器学习如同璀璨明珠,吸引无数探索者。尤其对于新手而言,纷繁复杂的算法常让人感到迷茫。本文将以决策树为切入点,带您从Python机器学习的新手逐步成长为高手。决策树以其直观易懂的特点成为入门利器。通过构建决策树分类器并应用到鸢尾花数据集上,我们展示了其基本用法及效果。掌握决策树后,还需深入理解其工作原理,调整参数,并探索集成学习方法,最终将所学应用于实际问题解决中,不断提升技能。愿这棵智慧之树助您成为独当一面的大师。
52 3
|
3月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
56 1
|
3月前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
4月前
|
机器学习/深度学习 算法 自动驾驶
揭秘机器学习模型的决策之道
【8月更文挑战第22天】本文将深入浅出地探讨机器学习模型如何从数据中学习并做出预测。我们将一起探索模型背后的数学原理,了解它们是如何被训练以及如何对新数据进行预测的。文章旨在为初学者提供一个清晰的机器学习过程概述,并启发读者思考如何在自己的项目中应用这些技术。