当前位置: 首页 > 科技观察

机器学习决策树在行动_0

时间:2023-03-18 23:56:07 科技观察

朱宪忠审稿人|SunShujuan机器学习中的决策树现代机器学习算法正在改变我们的日常生活。例如,像BERT这样的大型语言模型正在为谷歌搜索提供支持,而GPT-3正在为许多高级语言应用程序提供支持。另一方面,如今构建复杂的机器学习算法比以往任何时候都容易得多。然而,机器学习算法,无论多么复杂,都属于以下学习类别之一:监督学习无监督学习半监督学习强化学习事实上,决策树是最古老的监督机器学习算法之一,可以解决广泛的问题一系列现实世界的问题。研究表明,决策树算法最早的发明可以追溯到1963年。接下来,让我们深入研究这个算法的细节,看看为什么这样的算法在今天仍然流行。什么是决策树?决策树算法是一种流行的监督机器学习算法,因为它处理复杂数据集的方法要简单得多。决策树因其与“树”结构的相似性而得名;树结构由多个组件组成,形式为节点和边、根、分支和叶。它们用于决策分析,很像基于if-else的决策流程图,这些决策会导致所需的预测。决策树能够学习这些if-else决策规则来拆分数据集,最终生成树状数据模型。决策树用于预测分类问题的离散结果和回归问题的连续数值结果。多年来,科学家们开发了许多不同的算法,例如CART、C4.5和集成算法,例如随机森林和梯度提升树。剖析决策树的组成部分决策树算法的目标是预测输入数据集的结果。树的数据集分为三种形式:属性、属性的值、待预测的类别。与任何监督学习算法一样,数据集分为两种类型:训练集和测试集。其中,训练集定义了算法学习并应用于测试集的决策规则。在汇总介绍决策树算法的步骤之前,让我们先了解一下决策树的组成部分:根节点:是决策树顶部的起始节点,包含所有属性值。根据算法学习到的决策规则,将根节点划分为决策节点。分支:分支是属性值对应的节点之间的连接器。在二元分裂中,分支代表真假路径。决策节点/内部节点:内部节点是介于根节点和叶节点之间的决策节点,对应于一条决策规则及其答案路径。节点代表问题,分支显示基于这些问题的相关答案的路径。叶节点:叶节点是表示目标预测的终端节点。这些节点不会进一步分裂。以下是决策树及其上述组件的可视化表示,决策树算法通过以下步骤来达到所需的预测:该算法从具有所有属性值的根节点开始。根节点根据算法从训练集中学习到的决策规则划分为决策节点。内部决策节点根据问题及其答案路径通过分支/边缘。继续前面的步骤,直到到达叶节点或使用所有属性。为了在每个节点选择最佳属性,拆分将基于两个属性选择指标之一:基尼指数(Giniindex)衡量GiniImpurity以指示算法在随机类别上标签被错误分类的概率。信息增益衡量分裂后熵的改善,以避免预测类的50/50分裂。熵是给定数据样本中杂质的数学度量。决策树中的混乱状态由接近50/50的分裂表示。使用决策树算法的花卉分类案例了解了以上基础知识之后,我们来实现一个应用案例。在本文中,我们将使用Scikit-learn库在Python中实现决策树分类模型。关于数据集的简要说明本教程的数据集是鸢尾花数据集。这个数据集已经内置在Scikit开源库中,所以开发者不需要从外部加载它。该数据集总共包括四种鸢尾属植物的属性和相应的属性值,这些属性值将被输入到模型中,以预测三种鸢尾花中的一种。数据集中的属性/特征:萼片长度、萼片宽度、花瓣长度、花瓣宽度。数据集中的预测标签/花类型:Setosis、Versicolor、Virginica。下面给出基于python语言实现决策树分类器的分步代码说明。导入库首先,使用以下代码导入执行决策树实现所需的库。importpandasaspdimportnumpyasnpfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.treeimportDecisionTreeClassifierloadIris(Iris)数据集Iris数据集。接下来的两行代码将打印鸢尾花的类型和特征信息。data_set=load_iris()print('要预测的鸢尾植物类别:',data_set.target_names)print('鸢尾植物的四个特征:',data_set.feature_names)分离属性和标签将类型信息分离出来,存储在相应的变量。其中,shape[0]函数负责确定X_att变量中存储的属性个数;数据集中属性值总数为150。#提取花朵的特征和类型信息X_att=data_set.datay_label=data_set.targetprint('数据集中样本总数:',X_att.shape[0])其实我们也可以通过将X_att变量中的值添加到panda库中的DataFrame函数中,创建一个可视化表格来展示数据集的一部分属性值。data_view=pd.DataFrame({'萼片长度':X_att[:,0],'萼片宽度':X_att[:,1],'花瓣长度':X_att[:,2],'花瓣宽度':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函数分类模型来实现决策树,分类标准设置为“熵”。该标准允许将属性选择度量设置为信息增益。然后代码使模型适合我们的属性和标签训练集。#应用决策树分类器clf_dt=DecisionTreeClassifier(criterion='entropy')clf_dt.fit(X_att_train,y_label_train)计算模型准确率下面代码负责计算并打印决策树分类模型在训练集和测试集上的准确率.为了计算准确度得分,我们使用预测函数。测试结果为:训练集和测试集的准确率分别为100%和94.7%。print('训练数据准确率:',accuracy_score(y_true=y_label_train,y_pred=clf_dt.predict(X_att_train)))print('测试数据准确率:',accuracy_score(y_true=y_label_test,y_pred=clf_dt.predict(X_att_test)))决策树在现实世界中的应用如今,机器学习决策树被广泛应用于许多行业的决策过程中。其中,决策树最常见的应用首先是在财务和市场部门,例如,它可以用于以下子领域:贷款审批、支出管理、客户流失预测、新产品可行性分析等。.如何改进决策树?作为本文对决策树主题讨论的结论,我们可以有把握地假设决策树的可解释性仍然很受欢迎,这是有充分理由的。决策树很容易理解,因为它们可以被人类可视化和解释。因此,它们是解决机器学习问题的直观方法,同时还确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理话题密切相关。与任何其他机器学习算法一样,可以自然地改进决策树以避免过度拟合和过于偏向主导预测类。剪枝和集成技术是克服决策树算法缺点的最常用方法。尽管存在这些缺点,决策树仍然是决策分析算法的基础,并且在机器学习领域将始终保持重要地位。译者介绍朱宪忠,社区编辑,专家博主,讲师,潍坊某高校计算机教师,自由编程资深人士。原标题:AnIntroductiontoDecisionTreesforMachineLearning,作者:StylianosKampakis