译者 | 朱先忠
审校 | 孙淑娟
机器学习中的决策树
现代机器学习算法正在改变我们的日常生活。例如,像BERT这样的大型语言模型正在为谷歌搜索提供支持,GPT-3正在为许多高级语言应用程序提供支持。
另一方面,今天构建复杂的机器学习算法比以往任何时候都容易得多。然而,无论机器学习算法有多么复杂,都属于把它们归纳为以下学习类别之一:
- 监督学习
- 无监督学习
- 半监督学习
- 强化学习
其实,决策树算是最古老的有监督的机器学习算法之一,可以解决广泛的现实问题。研究表明,决策树算法的最早发明可以追溯到1963年。
接下来,让我们深入研究一下这个算法的细节,看看为什么这类算法今天仍然广为流行。
什么是决策树?
决策树算法是一种流行的有监督机器学习算法,因为它处理复杂数据集的方法相对简单得多。决策树的名字来源于它们与“树”这种结构的相似性;树结构包括以节点和边缘形式存在的根、枝和叶等几个组成部分。它们用于决策分析,很像一个基于if-else的决策流程图,这些决策会产生所需的预测。决策树能够学习这些if-else决策规则,从而拆分数据集,最后生成树状数据模型。
决策树在分类问题的离散结果预测和回归问题的连续数值结果预测中得到了应用。多年来科学家们开发出了许多不同的算法,如CART、C4.5和ensemble算法,如随机森林和梯度增强树等。
剖析决策树的各个组成部分
决策树算法的目标是预测输入数据集的结果。树的数据集共划分为三种形式:属性、属性的值和要预测的种类。与任何监督学习算法一样,数据集被划分为训练集和测试集两种类型。其中,训练集定义了算法学习并应用于测试集的决策规则。
在聚集介绍决策树算法的步骤之前,让我们先来了解一下决策树的组成部分:
- 根节点:它是决策树顶部的起始节点,包含所有属性值。根节点根据算法学习到的决策规则分成决策节点。
- 分支:分支是对应于属性值的节点之间的连接器。在二进制拆分中,分支表示真路径和假路径。
- 决策节点/内部节点:内部节点是根节点和叶节点之间的决策节点,对应于决策规则及其答案路径。节点表示问题,分支显示基于这些问题的相关答案的路径。
- 叶节点:叶节点是表示目标预测的终端节点。这些节点不会进一步分裂。
以下是决策树及其上述组件的可视化表示,决策树算法经过以下步骤以达到所需的预测:
- 算法从具有所有属性值的根节点开始。
- 根节点根据算法从训练集中学习到的决策规则分成决策节点。
- 基于问题及其答案路径,通过分支/边缘传递内部决策节点。
- 继续前面的步骤,直到到达叶节点或使用了所有属性。
为了在每个节点上选择最佳属性,将根据以下两个属性选择度量之一进行拆分:
- 基尼系数(Gini index)测量基尼不纯度(Gini Impurity),以指示算法对随机类别标签进行错误分类的可能性。
- 信息增益测量分割后熵的改善,以避免预测类的50/50分割。熵是给定数据样本中不纯度的数学度量。决策树中的混沌状态由接近50/50的划分表示。
使用决策树算法的花卉分类案例
在了解了上述基础知识后,接下来让我们着手实现一个应用案例。在本文中,我们将使用Scikit学习库在Python中实现决策树分类模型。
关于数据集的简单说明
本教程的数据集是一个鸢尾花数据集。Scikit开源库中已经内置了这个数据集,所以不需要开发人员再从外部加载它。该数据集共包括四个鸢尾属性及相应的属性值,这些属性将被输入到模型中,以便预测三种类型的鸢尾花之一。
- 数据集中的属性/特征:萼片长度、萼片宽度、花瓣长度、花瓣宽度。
- 数据集中的预测标签/花卉类型:Setosis、Versicolor、Virginica。
接下来,将给出决策树分类器基于python语言实现的分步代码说明。
导入库
首先,通过下面的一段代码导入执行决策树实现所需的库。
import pandas as pd import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier
加载鸢尾花(Iris)数据集
以下代码展示了使用load_iris函数加载存储到data_set变量中的sklearn.dataset库中的鸢尾花数据集。接下来的两行代码将实现打印鸢尾花类型和特征信息。
data_set = load_iris() print('Iris plant classes to predict: ', data_set.target_names) print('Four features of iris plant: ', data_set.feature_names)
分离属性和标签
下面的代码行实现了将花的特性和类型信息分离开来,并将它们存储在相应的变量中。其中,shape[0]函数负责确定存储在X_att变量中的属性数;数据集中的属性值总数为150。
#提取花的特性和类型信息 X_att = data_set.data y_label = data_set.target print('数据集中总的样本数:', X_att.shape[0])
其实,我们还可以创建一个可视化表格来展示数据集中的一部分属性值,方法是将X_att变量中的值添加到panda库中的DataFrame函数中即可。
data_view=pd.DataFrame({ 'sepal length':X_att[:,0], 'sepal width':X_att[:,1], 'petal length':X_att[:,2], 'petal width':X_att[:,3], 'species':y_label }) data_view.head()
拆分数据集
以下代码展示了使用train_test_split函数将数据集拆分为训练集和测试集两部分。其中,此函数中的random_state参数用于为函数提供随机种子,以便在每次执行时为给定数据集提供相同的结果;test_size表示测试集的大小;0.25表示拆分后测试数据占25%而训练数据占75%。
#数据集拆分为训练集和测试集两部分 X_att_train, X_att_test, y_label_train, y_label_test = train_test_split(X_att, y_label, random_state = 42, test_size = 0.25)
应用决策树分类函数
下面的代码通过使用DecisionTreeClassifier函数创建一个分类模型来实现一棵决策树,分类标准设置为“entropy”方式。该标准能够将属性选择度量设置为信息增益(Information gain)。然后,代码将模型与我们的属性和标签训练集相匹配。
#应用决策树分类器 clf_dt = DecisionTreeClassifier(criterion = 'entropy') clf_dt.fit(X_att_train, y_label_train)
计算模型精度
下面的代码负责计算并打印决策树分类模型在训练集和测试集上的准确性。为了计算准确度分数,我们使用了predict函数。测试结果是:训练集和测试集的准确率分别为100%和94.7%。
print('Training data accuracy: ', accuracy_score(y_true=y_label_train, y_pred=clf_dt.predict(X_att_train))) print('Test data accuracy: ', accuracy_score(y_true=y_label_test, y_pred=clf_dt.predict(X_att_test)))
真实世界中的决策树应用程序
当今社会,机器学习决策树在许多行业的决策过程中都得到广泛应用。其中,决策树的最常见应用首先是在金融和营销部门,例如可用于如下一些子领域:
- 贷款批准
- 支出管理
- 客户流失预测
- 新产品的可行性分析,等等。
如何改进决策树?
作为本文决策树主题讨论的总结,我们有充分的理由安全地假设:决策树的可解释性仍然很受欢迎。决策树之所以容易理解,是因为它们可以被人类以可视化方式展现并便于解释。因此,它们是解决机器学习问题的直观方法,同时也能够确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理主题存在密切联系。
与任何其他机器学习算法一样,决策树自然也可以加以改进,以避免过度拟合和出现过于偏向于优势预测类别。剪枝和ensembling技术是克服决策树算法缺点方案最常采用的方法。决策树尽管存在这些缺点,但仍然是决策分析算法的基础,并将在机器学习领域始终保持重要位置。
译者介绍
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。
原文标题:An Introduction to Decision Trees for Machine Learning,作者:Stylianos Kampakis
以上是机器学习决策树实战演练的详细内容。更多信息请关注PHP中文网其他相关文章!

译者 | 布加迪审校 | 孙淑娟目前,没有用于构建和管理机器学习(ML)应用程序的标准实践。机器学习项目组织得不好,缺乏可重复性,而且从长远来看容易彻底失败。因此,我们需要一套流程来帮助自己在整个机器学习生命周期中保持质量、可持续性、稳健性和成本管理。图1. 机器学习开发生命周期流程使用质量保证方法开发机器学习应用程序的跨行业标准流程(CRISP-ML(Q))是CRISP-DM的升级版,以确保机器学习产品的质量。CRISP-ML(Q)有六个单独的阶段:1. 业务和数据理解2. 数据准备3. 模型

机器学习是一个不断发展的学科,一直在创造新的想法和技术。本文罗列了2023年机器学习的十大概念和技术。 本文罗列了2023年机器学习的十大概念和技术。2023年机器学习的十大概念和技术是一个教计算机从数据中学习的过程,无需明确的编程。机器学习是一个不断发展的学科,一直在创造新的想法和技术。为了保持领先,数据科学家应该关注其中一些网站,以跟上最新的发展。这将有助于了解机器学习中的技术如何在实践中使用,并为自己的业务或工作领域中的可能应用提供想法。2023年机器学习的十大概念和技术:1. 深度神经网

译者 | 朱先忠审校 | 孙淑娟在我之前的博客中,我们已经了解了如何使用因果树来评估政策的异质处理效应。如果你还没有阅读过,我建议你在阅读本文前先读一遍,因为我们在本文中认为你已经了解了此文中的部分与本文相关的内容。为什么是异质处理效应(HTE:heterogenous treatment effects)呢?首先,对异质处理效应的估计允许我们根据它们的预期结果(疾病、公司收入、客户满意度等)选择提供处理(药物、广告、产品等)的用户(患者、用户、客户等)。换句话说,估计HTE有助于我

近年来,基于深度学习的模型在目标检测和图像识别等任务中表现出色。像ImageNet这样具有挑战性的图像分类数据集,包含1000种不同的对象分类,现在一些模型已经超过了人类水平上。但是这些模型依赖于监督训练流程,标记训练数据的可用性对它们有重大影响,并且模型能够检测到的类别也仅限于它们接受训练的类。由于在训练过程中没有足够的标记图像用于所有类,这些模型在现实环境中可能不太有用。并且我们希望的模型能够识别它在训练期间没有见到过的类,因为几乎不可能在所有潜在对象的图像上进行训练。我们将从几个样本中学习

本文讨论使用LazyPredict来创建简单的ML模型。LazyPredict创建机器学习模型的特点是不需要大量的代码,同时在不修改参数的情况下进行多模型拟合,从而在众多模型中选出性能最佳的一个。 摘要本文讨论使用LazyPredict来创建简单的ML模型。LazyPredict创建机器学习模型的特点是不需要大量的代码,同时在不修改参数的情况下进行多模型拟合,从而在众多模型中选出性能最佳的一个。本文包括的内容如下:简介LazyPredict模块的安装在分类模型中实施LazyPredict

译者 | 朱先忠审校 | 孙淑娟引言模型超参数(或模型设置)的优化可能是训练机器学习算法中最重要的一步,因为它可以找到最小化模型损失函数的最佳参数。这一步对于构建不易过拟合的泛化模型也是必不可少的。优化模型超参数的最著名技术是穷举网格搜索和随机网格搜索。在第一种方法中,搜索空间被定义为跨越每个模型超参数的域的网格。通过在网格的每个点上训练模型来获得最优超参数。尽管网格搜索非常容易实现,但它在计算上变得昂贵,尤其是当要优化的变量数量很大时。另一方面,随机网格搜索是一种更快的优化方法,可以提供更好的

实现自我完善的过程是“机器学习”。机器学习是人工智能核心,是使计算机具有智能的根本途径;它使计算机能模拟人的学习行为,自动地通过学习来获取知识和技能,不断改善性能,实现自我完善。机器学习主要研究三方面问题:1、学习机理,人类获取知识、技能和抽象概念的天赋能力;2、学习方法,对生物学习机理进行简化的基础上,用计算的方法进行再现;3、学习系统,能够在一定程度上实现机器学习的系统。

本文将详细介绍用来提高机器学习效果的最常见的超参数优化方法。 译者 | 朱先忠审校 | 孙淑娟简介通常,在尝试改进机器学习模型时,人们首先想到的解决方案是添加更多的训练数据。额外的数据通常是有帮助(在某些情况下除外)的,但生成高质量的数据可能非常昂贵。通过使用现有数据获得最佳模型性能,超参数优化可以节省我们的时间和资源。顾名思义,超参数优化是为机器学习模型确定最佳超参数组合以满足优化函数(即,给定研究中的数据集,最大化模型的性能)的过程。换句话说,每个模型都会提供多个有关选项的调整“按钮


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Atom编辑器mac版下载
最流行的的开源编辑器

记事本++7.3.1
好用且免费的代码编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),