【阿旭机器学习实战】【12】决策树基本原理及其构造与使用方法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【阿旭机器学习实战】【12】决策树基本原理及其构造与使用方法

决策树


【关键词】树,信息增益,信息熵


决策树的优缺点


优点:


计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据;

既能用于分类,也能用于回归;


数据形式非常容易理解。


缺点:可能会产生过度匹配问题


一、决策树的原理


一个决策树的游戏:【二十个问题的游戏】


游戏的规则很简单:参与游戏的一方在脑海里想某个事物,其他参与者向他提问题,只允许提20个问题,问题的答案也只能用对或错回答。问问题的人通过推断分解,逐步缩小待猜测事物的范围。决策树的工作原理与20个问题类似,用户输入一系列数据 ,然后给出游戏的答案。


我们经常使用决策树处理分类问题。近来的调查表明决策树也是最经常使用的数据挖掘算法。它之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它是如何工作的。


使用决策树找对象示例


如果以前没有接触过决策树,完全不用担心,它的概念非常简单。即使不知道它也可以通过简单的图形了解其工作原理。


决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:


  女儿:多大年纪了?
  母亲:26。
  女儿:长的帅不帅?
  母亲:挺帅的。
  女儿:收入高不?
  母亲:不算很高,中等情况。
  女儿:是公务员不?
  母亲:是,在税务局上班呢。
  女儿:那好,我去见见。


这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑:

e75d07750fee4d6c92843ea74475f5ac.png


上图完整表达了这个女孩决定是否见一个约会对象的策略,其中绿色节点表示判断条件,橙色节点表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径,图中红色箭头表示了上面例子中女孩的决策过程。


这幅图基本可以算是一颗决策树,说它“基本可以算”是因为图中的判定条件没有量化,如收入高中低等等,还不能算是严格意义上的决策树,如果将所有条件量化,则就变成真正的决策树了。


决策树定义


决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。


可以看到,决策树的决策过程非常直观,容易被人理解。目前决策树已经成功运用于医学、制造产业、天文学、分支生物学以及商业等诸多领域。


决策树算法能够读取数据集合,构建类似于上面的决策树。决策树很多任务都是为了数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,机器学习算法最终将使用这些机器从数据集中创造的规则。专家系统中经常使用决策树,而且决策树给出结果往往可以匹敌在当前领域具有几十年工作经验的人类专家。


知道了决策树的定义以及其应用方法,下面介绍决策树的构造算法。


二、决策树的构造


分类解决离散问题,回归解决连续问题


  • 决策树:信息论
  • 逻辑斯蒂回归、贝叶斯:概率论


决策树构造过程


不同于逻辑斯蒂回归和贝叶斯算法,决策树的构造过程不依赖领域知识,它使用属性选择度量来选择将元组最好地划分成不同的类的属性。所谓决策树的构造就是进行属性选择度量确定各个特征属性之间的拓扑结构。


构造决策树的关键步骤是分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。


分裂属性分为三种不同的情况:


  1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。
  2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。
  3、属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。


构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,它决定了拓扑结构及分裂点split_point的选择。


属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略。这里介绍常用的ID3算法。


ID3算法


划分数据集的大原则是:将无序的数据变得更加有序。


我们可以使用多种方法划分数据集,但是每种方法都有各自的优缺点。组织杂乱无章数据的一种方法就是使用信息论度量信息,信息论是量化处理信息的分支科学。我们可以在划分数据之前使用信息论量化度量信息的内容。


在划分数据集之前之后信息发生的变化称为信息增益,知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。


在可以评测哪种数据划分方式是最好的数据划分之前,我们必须学习如何计算信息增益。集合信息的度量方式称为香农熵或者简称为熵,这个名字来源于信息论之父克劳德•香农。


熵entropy与信息增益


熵定义为信息的期望值,在明晰这个概念之前,我们必须知道信息的定义。如果待分类的事务可能划分在多个分类之中,则符号x的信息定义为:


1c1f9d02e91c44bc9a585b6e93a9b207.png


其中p(x)是选择该分类的概率


为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值,通过下面的公式得到:


7f414ea397724fdb8ab6f1447844d545.png


其中n是分类的数目。


在决策树当中,设D为用类别对训练元组进行的划分,则D的熵(entropy)表示为:


56d0e922d942469f9e4b2b9e0658c116.png


其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计。熵的实际意义表示是D中元组的类标号所需要的平均信息量。


现在我们假设将训练元组D按属性A进行划分,则A对D划分的期望信息为:


3c5b2042c57c4ee4bb50517f46329e63.png


而信息增益即为两者的差值:


5f1f8db603ab4a4db1dc58ce55f42130.png


ID3算法就是在每次需要分裂时,计算每个属性的增益率,然后选择增益率最大的属性进行分裂。下面我们继续用SNS社区中不真实账号检测的例子说明如何使用ID3算法构造决策树。为了简单起见,我们假设训练集合包含10个元素:


51216aa1216943a188f8e8525aaf12e0.png


其中s、m和l分别表示小、中和大。


设L、F和H表示日志密度、好友密度、是否使用真实头像,下面计算各属性的信息增益。


407b0f9b2a87465695966128b6f41e13.png


因此日志密度的信息增益是0.276。


用同样方法得到F和H的信息增益分别为0.553和0.033。


因为F具有最大的信息增益,所以第一次分裂选择F为分裂属性,分裂后的结果如下图表示:

c34f461aaf894e86a03fbabc2465473e.png


在上图的基础上,再递归使用这个方法计算子节点的分裂属性,最终就可以得到整个决策树。


练习—计算第二层决策树节点

计算上图的第二层节点的信息熵,确定下一个分类的特征


import numpy as np
info_D = 0.75*(-np.log2(0.75) ) + 0.25*(-np.log2(0.25))
info_D
0.8112781244591328
# L--日志密度   ; H--是否使用真实头像
info_D_L = 0.5 * (-np.log2(1)) + 0.5 * (-0.5*np.log2(0.5) - 0.5*np.log2(0.5))
info_D_L
0.5
# L--日志密度   ; H--是否使用真实头像
info_D_H = 0.75 * (-2/3*np.log2(2/3)-1/3*np.log2(1/3)) + 0.25 * (-1*np.log2(1))
info_D_H
# L--日志密度   ; H--是否使用真实头像
info_D_H = 0.75 * (-2/3*np.log2(2/3)-1/3*np.log2(1/3)) + 0.25 * (-1*np.log2(1))
info_D_H
0.6887218755408672
print(info_D - info_D_L)
print(info_D - info_D_H)
0.31127812445913283
0.12255624891826566


因为L具有最大的信息增益,所以第二次分裂选择L为分裂属性.


三、决策树实战—iris数据集


from sklearn import datasets
iris = datasets.load_iris()
• 1
data = iris.data
target = iris.target
from sklearn.model_selection import train_test_split
• 1
x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.2)

# 导入决策树分类器
from sklearn.tree import DecisionTreeClassifier
• 1
• 2
# max_depth表示最大深度
dt = DecisionTreeClassifier(max_depth=5)

# 训练模型
dt.fit(x_train,y_train)
• 1
• 2
dt.score(x_test,y_test)
• 1
1.0
• 1


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4天前
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
10 2
|
8天前
|
机器学习/深度学习 人工智能 关系型数据库
【机器学习】Qwen2大模型原理、训练及推理部署实战
【机器学习】Qwen2大模型原理、训练及推理部署实战
48 0
【机器学习】Qwen2大模型原理、训练及推理部署实战
|
15天前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
68 2
|
18天前
|
机器学习/深度学习 算法 搜索推荐
基于机器学习的用户行为分析:深入洞察与精准决策
【8月更文挑战第3天】基于机器学习的用户行为分析为企业提供了深入了解用户需求、优化产品设计和制定精准营销策略的有力工具。随着人工智能和大数据技术的不断发展,用户行为分析将更加智能化和个性化。未来,我们可以期待更加高效、精准的机器学习算法和模型的出现,以及更多创新性的应用场景的拓展。同时,也需要关注数据隐私和安全性问题,确保用户数据的安全和合规使用。
|
18天前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【8月更文挑战第3天】在数据的海洋中探寻真知,决策树犹如智慧之树,以其直观易懂的强大功能,引领我们逐步缩小决策范围,轻松获取数据洞察。本篇将带您踏上Python机器学习之旅,从理解决策树为何受青睐开始,通过scikit-learn库实现鸢尾花数据集分类,解析其决策机制,并掌握调参技巧,最终优化模型性能,共同摘取数据科学的甜美果实。
30 1
|
19天前
|
机器学习/深度学习 数据可视化 算法
决策树VS世界:掌握Python机器学习中的这棵树,决策从此不再迷茫
【8月更文挑战第2天】在数据驱动时代,决策树作为一种直观且易于解释的机器学习方法,因其强大的分类与回归能力备受青睐。本文介绍决策树的基础概念:通过属性测试划分数据,优化选择以提高预测准确度。使用Python的scikit-learn库,我们演示了如何加载鸢尾花数据集,构建并训练决策树模型,评估其准确性,以及利用`plot_tree`函数可视化决策过程,从而更好地理解模型的工作原理。掌握这些技能,你将在面对复杂决策时更加自信。
17 2
|
20天前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【8月更文挑战第1天】在数据科学领域,机器学习如同璀璨明珠,而决策树则以其直观易懂成为入门利器。本文引导初学者利用Python的`scikit-learn`库构建决策树模型。以鸢尾花数据集为例,展示了从加载数据、划分训练/测试集、创建`DecisionTreeClassifier`、训练模型到评估准确率的全过程。掌握这些基本操作后,还需深入理解信息增益、基尼不纯度等原理,学会调参优化,并探索集成学习方法如随机森林和梯度提升树,最终将理论应用于实践,成长为真正的机器学习大师。
17 2
|
24天前
|
机器学习/深度学习 搜索推荐 安全
云上机器学习平台:赋能智能时代的数据洞察与决策
集成化与一体化:随着云计算、大数据、人工智能等技术的不断融合和发展,云上机器学习平台将逐渐实现与其他云服务的集成化和一体化。用户可以在同一平台上完成数据处理、模型开发、应用部署等多个环节的工作,享受更加便捷和高效的服务体验。 定制化与个性化:针对不同行业和领域的需求特点,云上机器学习平台将提供更加定制化和个性化的服务。通过提供丰富的行业解决方案和定制化开发服务,满足不同用户对于机器学习应用的个性化需求。 安全与合规性:随着数据安全和隐私保护意识的不断提高,云上机器学习平台将更加注重安全和合规性的建设。通过加强数据加密、访问控制、隐私保护等方面的措施,确保用户数据的安全性和隐私性。同时,平台还将
28 1
|
8天前
|
机器学习/深度学习 数据采集 物联网
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
28 0
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
37 0