【机器学习】决策树(基础篇)

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 【机器学习】决策树(基础篇)

决策树(基础篇---分类问题,回归问题会另出一篇博客,但也是基础篇)


7a83e70e8569484cd8fdaaf63e685c31_7e6fc55519564e2a8319b3aa02ae08c2.png

思维导图


4bef7dfed90049521eb5b8c8dae2997c_02b8d62f0f034be8a53d27f0f9c39079.png

前言


  • 本节将以例子为主,详细介绍生成决策树的原理部分,代码将不做重点介绍。


了解决策树(前后观看)


a0b05c8849ce5ecd184a991716853caf_e7ff04577fcc4368b8812d4b754d768b.png

9013bf5094d823da39fd11f5ba4e2656_28495e74804c4ea79bc9e9207f423773.png

e2c6c75f267e83a34f18347272dab871_4907dd1a4b1a4ec6af6aaf232432ef76.png

决策树算法被广泛应用于数据挖掘、自然语言处理、图像处理等领域。它的优点包括易于理解和解释、计算复杂度低、具有较高的准确性等。


使用决策树(感性的认识)


给定决策树:

2b42cb6992a242b043cbe7b26233d86c_35ce043b59cd49dbb47699477204cc5c.png

给定数据:

年龄 收入 学历 是否购买
25 本科
35 硕士
45 初中
20 大专
30 博士


依据决策树我们可以判定的下表是否购买项的数据

年龄 收入 学历 是否购买
25 本科
35 硕士
45 初中
20 大专
30 博士


如何生成决策树(原理部分,此部分有局限性,主要是针对分类问题)


通过上面的例子,我们将相关决策树的名词,给出以下定义:


最佳属性(最佳特征):在节点上,我们需要找到一个将数据集划分为最有利于分类的子集的属性。这个属性被称为最佳属性,


上例中根节点的年龄属性,蓝色字段是为什么不选其他的属性的原因

划分准则:划分准则是指用来衡量每个属性将数据集分成不同子集的优劣程度的方法。


例如信息增益、基尼系数等

子集:将数据集根据最佳属性划分后得到的数据子集。


叶节点:决策树的终止节点,表示该节点下的所有数据都属于同一类别。叶节点不再进行划分。

要生成一颗决策树,通常需要考虑以下几个方面:


  1. 数据集的选择:需要先选定用于训练决策树的数据集。这个数据集应该包含足够多的样本,能够覆盖待分类问题中的所有可能情况。
  2. 最佳属性选择:在数据集中选择最佳的属性(特征),作为节点划分准则,通常会使用信息增益、基尼不纯度等指标来衡量每个属性(特征)的重要性,以便确定最佳划分属性。
  3. 剪枝:生成的决策树可能存在过拟合的问题,需要进行剪枝以提高泛化能力。


5005ec135cefa8bcdd8e2553bde8b4d0_b07f72c547ff4d539a59c39a004435d2.png

5005ec135cefa8bcdd8e2553bde8b4d0_b07f72c547ff4d539a59c39a004435d2.png


3480236e4c51cbda99afea820f1c1751_e9c94c95751e419f9c83632edb240157.png

上图针对分类问题所作的图,显然,属性选择的不同会带来分类的不同效果,从我们感官上来分析,选择特征X1要优于选择特征X2。


决策树学习采用分而治之的策略,通过贪婪搜索来识别树中的最佳分割点。然后以自上而下的递归方式重复此拆分过程,直到所有或大多数记录都已分类到特定的类别标签下。


特征的选取不同,生成的子集不同,从图上我们可以看得出来选择特征X1要强于选择特征X2,但是如何量化的划分子集的效果,通过量化后数值大小来确定特征的选择呢,哎嘿!这就需要划分准则所做的事情。


暂不考虑数据集的选择和剪枝操作,对于最佳属性选择操作所使用的划分准则不同,可以将决策树算法分为以下4种:


  1. ID3算法:使用信息增益作为属性选择的判据,这种算法通常用于处理分类问题。
  2. C4.5算法:与ID3算法类似,但是使用信息增益比作为属性选择的依据,同时还支持处理缺失数据。
  3. CART算法:使用基尼指数或者均方误差(MSE)等判据作为属性选择依据,该算法既可以用于分类问题,也可以用于回归问题。
  4. CHAID算法:使用卡方检验作为属性选择判据,主要用于分类问题。


下面详细介绍下ID3和CART算法去生成决策树


ID3算法生成决策树(基于信息增益的决策树算法)


信息增益在我另一篇博客:(引流一下)【机器学习】信息量、香农熵、信息增益

fc3f3f3eb68888a044a499e1049edce0_3d42b78db562409cb0cb90e19e8c055a.png

信息增益的基本思想是:选择一个能够最大化训练数据集中信息增益的特征作为划分标准。信息增益的计算公式如下:


image.png

那么利用信息增益,生成决策树流程为:


收集数据集,并确定每个样本的分类标签。

利用信息增益确定用来分裂数据集的最佳特征。

根据选择的特征将数据集分为子集,每个子集都具有相同的特征值。

对于每个子集,递归地重复步骤2-3,直到所有子集中的样本属于同一类别或达到预定义的停止条件。 构建决策树,

并将最终的分类结果与测试数据进行比较以评估决策树的准确性。


信息增益确定用来分裂数据集的最佳特征的过程如下:

image.png

最后,根据选择的最佳特征,将训练数据集D分成若干个子集,每个子集对应于最佳特征的一个取值。这个过程就是数据集的划分。这些子集成为决策树的分支节点,它们继续递归地执行上述过程,直到满足预定义的停止条件,例如树的深度达到一定值,节点中的样本数量小于一定值等。


接下来,需要确定决策树的叶子节点的类别。有几种方法可以实现:


选取叶子节点中出现最多的类别作为该节点的类别。

对于叶子节点中的每个类别,计算该类别在训练数据集中出现的频率,选择频率最高的类别作为该节点的类别。

对于叶子节点中的每个类别,计算该类别在训练数据集中出现的概率,选择概率最高的类别作为该节点的类别。

最终,得到的决策树就可以用于对新样本进行分类。


举例:小明出去玩?

数据拟定背景:小明想出去玩?

ID Class Wind Temp Outlook
1 Play Weak Hot Sunny
2 Play Strong Hot Sunny
3 Stay Weak Hot Rain
4 Play Weak Mid Overcast
5 Stay Strong Cold Rain
6 Play Weak Cold Overcast
7 Stay Strong Cold Rain
8 Play Weak Mid Sunny
9 Play Weak Cold Sunny
10 Play Strong Mid Overcast
11 Stay Weak Mid Sunny
12 Stay Strong Mid Rain
13 Play Weak Hot Overcast
14 Play Weak Cold Rain


对于系统香农熵H(D)

Class Count
play 6
stay 4

image.png

计算关于Wind的信息增益


Weak
Strong
Play 7 2
Stay 2 3

image.png


image.png

计算关于Temperature的信息增益


Hot
Mid Cold
Play 3 3 3
Stay 1 2 2

image.png

image.png

image.png


计算关于Outlook的信息增益


Sunny
Overcast Rain
Play 4 4 1
Stay 1 0 4

image.png

image.png

image.png


信息增益汇总


wind
Temp Outlook
信息增益 0.102 0.008 0.424


不难看出,小明去不去玩啊,温度只能减少0.008的不确定性,但是天气景观(Outlook)可以减少0.424的不确定性,那我们是不是说Outlook更重要一些,更适合作为重要决策节点。

选择标准就是:信息增益最大的那个作为决策属性,


经过第一轮的比较我们可以知道根节点就是最佳决策属性就是Outlook


接下来的步骤就是,将划分好的3个数据子集image.png分别作为下一次的数据集合,进行上述操作,直至划分的子集纯度为1(其实就是不可在分,在数据的表现就是信息增益为0),这样我们就能得到一个完整的决策树。

如果数据集中有连续变量,可以将其转换为离散变量,例如将年龄按照一定的区间划分为不同的类别。这样做可以简化计算,并且能够更好地处理离散数据。


CART算法生成决策树(基于基尼系数|MSE的决策树算法)


在CART算法中,基尼系数和均方误差(MSE)都被用作度量划分质量的指标,选择最佳特征时,算法计算每个特征的基尼系数或者MSE,选择最小值对应的特征进行划分。


1.基尼系数用于分类问题,它表示从数据集中随机选取两个样本,其类别不一致的概率,基尼系数越小表示数据集纯度越高。


2.均方误差(MSE)用于回归问题,它表示预测值与实际值之间的平均误差的平方,均方误差越小表示预测值与实际值的差距越小。在回归问题中,CART算法选择平均值作为叶子节点的预测值。

79cb012c81fcac5b1c7b5b77378f08fd_95f4c0416d674b9faf2a162d2bf62619.png

假设数据集 D有 K个类别pk表示属于第 k 类的样本在数据集 D中的比例,那么D 的基尼系数可以表示为:

image.png

当 D中只有一种类别时,基尼系数最小,为 0。因为此时pk=1,而其他pj都等于 0,因此1 − p k = 0,整个求和式中只有一项,结果为 0。而当 D中所有类别都出现相同的次数时,基尼系数最大,为1−1/K。因为此时pk=1/K,每一项的值都相等,最终求和的结果为K×(1/K)(1−1/K)=1−1/K。


在决策树算法中,我们可以通过计算选择某个特征进行分割后子集的基尼系数来评估分割的质量,选取基尼系数最小的分割方法作为最终选择。

那么利用基尼系数,生成决策树流程为:


3.收集数据集,并确定每个样本的分类标签。


4.利用基尼系数确定用来分裂数据集的最佳特征。


5.根据选择的特征将数据集分为子集,每个子集都具有相同的特征值。


6.对于每个子集,递归地重复步骤2-3,直到所有子集中的样本属于同一类别或达到预定义的停止条件。 构建决策树,


7.并将最终的分类结果与测试数据进行比较以评估决策树的准确性。


基于基尼系数确定用来分裂数据集的最佳特征的具体步骤如下:


1.计算训练数据集 D 的基尼指数Gini(D)。

image.png

image.png

image.png


举例:


1d99920a45c8ffb6ebc29b9d7ec37f3a_eaa1115730a14adc8e78a910597224cd.png

1fc489f5e95edf2e6629bcef695959eb_7c1b6f55f94040c88a40314c820272ed.png

bc89734eff3ba12ec6bbbc015e7626a8_b7074db0e00d429ab2bc1a0a21a3d059.png


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
机器学习/深度学习 存储 算法
决策树和随机森林在机器学习中的应用
在机器学习领域,决策树(Decision Tree)和随机森林(Random Forest)是两种非常流行且强大的分类和回归算法。它们通过模拟人类决策过程,将复杂的数据集分割成易于理解和处理的子集,从而实现对新数据的准确预测。
127 10
|
3天前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
41 15
|
29天前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
102 1
|
3月前
|
机器学习/深度学习 数据采集 监控
探索机器学习:从数据到决策
【9月更文挑战第18天】在这篇文章中,我们将一起踏上一段激动人心的旅程,穿越机器学习的世界。我们将探讨如何通过收集和处理数据,利用算法的力量来预测未来的趋势,并做出更加明智的决策。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和思考方式。
|
3月前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【9月更文挑战第9天】在数据科学领域,机器学习如同璀璨明珠,吸引无数探索者。尤其对于新手而言,纷繁复杂的算法常让人感到迷茫。本文将以决策树为切入点,带您从Python机器学习的新手逐步成长为高手。决策树以其直观易懂的特点成为入门利器。通过构建决策树分类器并应用到鸢尾花数据集上,我们展示了其基本用法及效果。掌握决策树后,还需深入理解其工作原理,调整参数,并探索集成学习方法,最终将所学应用于实际问题解决中,不断提升技能。愿这棵智慧之树助您成为独当一面的大师。
51 3
|
3月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
54 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
4月前
|
机器学习/深度学习 算法 自动驾驶
揭秘机器学习模型的决策之道
【8月更文挑战第22天】本文将深入浅出地探讨机器学习模型如何从数据中学习并做出预测。我们将一起探索模型背后的数学原理,了解它们是如何被训练以及如何对新数据进行预测的。文章旨在为初学者提供一个清晰的机器学习过程概述,并启发读者思考如何在自己的项目中应用这些技术。
|
4月前
|
机器学习/深度学习 算法 搜索推荐
基于机器学习的用户行为分析:深入洞察与精准决策
【8月更文挑战第3天】基于机器学习的用户行为分析为企业提供了深入了解用户需求、优化产品设计和制定精准营销策略的有力工具。随着人工智能和大数据技术的不断发展,用户行为分析将更加智能化和个性化。未来,我们可以期待更加高效、精准的机器学习算法和模型的出现,以及更多创新性的应用场景的拓展。同时,也需要关注数据隐私和安全性问题,确保用户数据的安全和合规使用。
|
4月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【8月更文挑战第3天】在数据的海洋中探寻真知,决策树犹如智慧之树,以其直观易懂的强大功能,引领我们逐步缩小决策范围,轻松获取数据洞察。本篇将带您踏上Python机器学习之旅,从理解决策树为何受青睐开始,通过scikit-learn库实现鸢尾花数据集分类,解析其决策机制,并掌握调参技巧,最终优化模型性能,共同摘取数据科学的甜美果实。
55 1