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

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

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


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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
16天前
|
机器学习/深度学习 算法 搜索推荐
基于机器学习的用户行为分析:深入洞察与精准决策
【8月更文挑战第3天】基于机器学习的用户行为分析为企业提供了深入了解用户需求、优化产品设计和制定精准营销策略的有力工具。随着人工智能和大数据技术的不断发展,用户行为分析将更加智能化和个性化。未来,我们可以期待更加高效、精准的机器学习算法和模型的出现,以及更多创新性的应用场景的拓展。同时,也需要关注数据隐私和安全性问题,确保用户数据的安全和合规使用。
|
16天前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【8月更文挑战第3天】在数据的海洋中探寻真知,决策树犹如智慧之树,以其直观易懂的强大功能,引领我们逐步缩小决策范围,轻松获取数据洞察。本篇将带您踏上Python机器学习之旅,从理解决策树为何受青睐开始,通过scikit-learn库实现鸢尾花数据集分类,解析其决策机制,并掌握调参技巧,最终优化模型性能,共同摘取数据科学的甜美果实。
27 1
|
18天前
|
机器学习/深度学习 数据可视化 算法
决策树VS世界:掌握Python机器学习中的这棵树,决策从此不再迷茫
【8月更文挑战第2天】在数据驱动时代,决策树作为一种直观且易于解释的机器学习方法,因其强大的分类与回归能力备受青睐。本文介绍决策树的基础概念:通过属性测试划分数据,优化选择以提高预测准确度。使用Python的scikit-learn库,我们演示了如何加载鸢尾花数据集,构建并训练决策树模型,评估其准确性,以及利用`plot_tree`函数可视化决策过程,从而更好地理解模型的工作原理。掌握这些技能,你将在面对复杂决策时更加自信。
16 2
|
18天前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【8月更文挑战第1天】在数据科学领域,机器学习如同璀璨明珠,而决策树则以其直观易懂成为入门利器。本文引导初学者利用Python的`scikit-learn`库构建决策树模型。以鸢尾花数据集为例,展示了从加载数据、划分训练/测试集、创建`DecisionTreeClassifier`、训练模型到评估准确率的全过程。掌握这些基本操作后,还需深入理解信息增益、基尼不纯度等原理,学会调参优化,并探索集成学习方法如随机森林和梯度提升树,最终将理论应用于实践,成长为真正的机器学习大师。
15 2
|
22天前
|
机器学习/深度学习 搜索推荐 安全
云上机器学习平台:赋能智能时代的数据洞察与决策
集成化与一体化:随着云计算、大数据、人工智能等技术的不断融合和发展,云上机器学习平台将逐渐实现与其他云服务的集成化和一体化。用户可以在同一平台上完成数据处理、模型开发、应用部署等多个环节的工作,享受更加便捷和高效的服务体验。 定制化与个性化:针对不同行业和领域的需求特点,云上机器学习平台将提供更加定制化和个性化的服务。通过提供丰富的行业解决方案和定制化开发服务,满足不同用户对于机器学习应用的个性化需求。 安全与合规性:随着数据安全和隐私保护意识的不断提高,云上机器学习平台将更加注重安全和合规性的建设。通过加强数据加密、访问控制、隐私保护等方面的措施,确保用户数据的安全性和隐私性。同时,平台还将
28 1
|
24天前
|
机器学习/深度学习 数据采集 数据挖掘
智能决策新引擎:Python+Scikit-learn,打造高效数据分析与机器学习解决方案!
【7月更文挑战第26天】在数据驱动时代,企业需从大数据中提取价值以精准决策。Python凭借丰富的库成为数据分析利器,而Scikit-learn作为核心工具备受青睐。本文通过电商案例展示如何预测潜在买家以实施精准营销。首先进行数据预处理,包括清洗、特征选择与转换;接着采用逻辑回归模型进行训练与预测;最后评估模型并优化。此方案显著提升了营销效率和企业决策能力,预示着智能决策系统的广阔前景。
38 2
|
27天前
|
机器学习/深度学习 数据可视化 开发者
视觉的力量!Python 机器学习模型评估,Matplotlib 与 Seaborn 如何助力决策更明智?
【7月更文挑战第23天】在Python机器学习中,模型评估不可或缺。Matplotlib与Seaborn作为数据可视化工具,助力洞察模型性能。Matplotlib基础灵活,构建复杂图表;Seaborn在其上层,简化绘图,提升美观。从折线图追踪损失到条形图对比准确率,两者互补,促进高效决策制定。尽管Matplotlib掌控力强,但Seaborn友好快捷,适于统计图形。结合使用,可将数据转化成深刻见解。
25 6
|
1月前
|
机器学习/深度学习 算法 Python
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
|
2月前
|
机器学习/深度学习 人工智能 算法
【机器学习】Q-Learning算法:在序列决策问题中的实践与探索
【机器学习】Q-Learning算法:在序列决策问题中的实践与探索
50 0
【机器学习】Q-Learning算法:在序列决策问题中的实践与探索
|
2月前
|
机器学习/深度学习 人工智能 算法
【机器学习】AI在空战决策中的崛起:从理论到实践的跨越
【机器学习】AI在空战决策中的崛起:从理论到实践的跨越
149 0

热门文章

最新文章