机器学习-决策树decisiontree(代码片段)

tangxiaobo199181 tangxiaobo199181     2023-04-24     112

关键词:

咱们正式进入了机器学习的模型的部分,虽然现在最火的的机器学习方面的库是Tensorflow, 但是这里还是先简单介绍一下另一个数据处理方面很火的库叫做sklearn。其实咱们在前面已经介绍了一点点sklearn,主要是在categorical data encoding那一块。其实sklearn在数据建模方面也是非常666的。一般常用的模型都可以用sklearn来做的。既然它都这么牛逼了,咱们为啥还要学TensorFlow呢?其实主要的原因有两个,一是因为Google在流量方面的强势推广,导致绝大部分的机器学习方面的应用都是用TensorFlow, 二是因为TensorFlow包括的常用库确实要更加多一点。所以导致现在TensorFlow直接火到爆。所以sklearn在模型方面的应用,咱们只在决策树这里讲一下,都免绝大部分的模型还是用TensorFlow来解释,毕竟它的市场更加大嘛。这里没有啥好坏之分的,他们的API都写的很清楚,无论选什么框架,大家自己起看看文档都可以的。这节内容主要分两部分,第一部分介绍决策树在sklearn中的应用,第二部分作为补充内容介绍决策树的原理(决策树的构建原理)。

  • Decision Tree 在sklearn中的实现

决策树其实很简单,就是将一条数据中的每一个feature作为一个node,然后根据不同的条件分成不同的分支branch,每一个branch还有一个node,这个node可能还是feature也可能是leave(target)。具体一个决策树种有多少个node,有多少个leaves,咱们后面再说,这设计到了很多概率和信息熵方面的知识。咱们现在只需要知道一个大致的概念就是,决策树中的node是咱们的feature,leaves是咱们的target,branch是咱们的split conditions 就行了,具体其中的细节咱们暂时不需要了解,咱们这里的重点是如何用sklearn这个框架搭建出咱们的决策树模型。咱们这里先直接用一个代码示例来展示,然后再来解释他的过程。

from sklearn.tree import DecisionTreeRegressor
#1.Define
melb_model = DecisionTreeRegressor()
#2. fit
melb_model.fit(X,y)
#3. predict
melb_house_prediction = melb_model.predict(X)
#4.Mean Absolute Error (MAE)
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y,melb_house_prediction)

上面是一个最简单的用sklearn建模一个decision tree的实例了,其总共包括:实例化决策树,训练决策树,预测,和验证四个步骤。当然在实际中会有很多的细节部分需要处理,例如第一步实例化的过程有可能会有很多的参数需要调整,如max_depth, min_sample_split等等这些参数,这些都需要根据咱们后面的模型表现来不断的调整; 其次在验证阶段也是的,咱们得把咱们的数据集分割成training dataset和validation dataset, 这里面也包括了很多技术来分割和random的;具体这些细节,咱们在后面遇到了再说哈。对于绝大部分的决策树模型,咱们都可以用上面的4个步骤来创建。既然说到这里了,咱现在也就简单的数据分割的api也给大家展示一下。

from sklearn.model_selection import train_test_split
train_X, validate_X, train_y, validate_y = train_test_split(X,y,random_state=0)

上面是一个最简单的数据分割代码,默认是将(X,y)按照80%,20%比例分割,分别用于training和validation;当然啦,这里的分割比例也可以自行通过train_test_split函数的参数进行调节。random_state是当做random generator的seed,是将数据打乱后在分割。既然如何用sklearn建模决策树的内容讲了,咱们也顺带把random forest 随机森林模型在sklearn中如何建模的内容也说了把,毕竟random forest是基于decision tree的,而且random forest建模过程跟decision tree几乎是一模一样的,见下面代码展示如何创建random forest的,

from sklearn.model_selection import train_test_split
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state = 1)

from sklearn.ensemble import RandomForestRegressor
#define
melb_model = RandomForestRegressor(random_state=1)
#training
melb_model.fit(train_X,train_y)
#prediction
predictions = melb_model.predict(val_X)
#validation
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(val_y, predictions)

在解释上面的代码之前,咱们先来说说什么是random forest。大家想一想,既然前面咱们创建了一颗决策树,那咱们就自然而然的可以建造许多的决策树然后就可以创建一个森林啦,就叫做随机森林。用random forest预测的时候,咱们就把test data放进这个随机森林的每一颗树里面去预测,最后咱们取预测的平均值。就是怎么简单so easy。咱们现在就理解到这个程度就够了,实际的底层的创建原理,等咱们把decision tree的创建原理弄懂了以后大家就知道了。咱们看上面的代码,它跟decision tree只有几个小区别,第一个就是random forest是一个ensemble,相当于把许多小decision tree模型打包成了一个ensemble;第二个就是他的实例化名称是RandomForestRegressor。其他都差不多,大家在这里不需要死记硬背这些代码,关键要了解这里面的每一步有什么作用,为什么需要这些步骤就行了。再一个就是一定得对decision tree和random forest的结构从上层有一个大致的了解,对于他们的底层细节结构,咱们可以看看下面的一部分。

  • 决策树的创建原理

由于在博客中画图不方便,我特地花了一张解释decision tree创建原理的一张图,然后这部分内容主要是围绕着这张图作为一个解释。这里面还涉及到一些数学计算和概率的一些内容。所以这幅图的信息量还是蛮大的。其实说白了,这里讲决策树的创建原理实际上就是解释如何每一步从n个features中选择一个特点的feature作为node,具体是根据一个什么指标来选择feature作为node的。好了废话不多说,直接上图啦

 

 

技术图片

 

 先来解释一下一个简单的概念,就是entropy, 中文咱们可以称作是信息熵。它是一种衡量信息量的值,具体这个值是怎么的计算的咱们可以看上面的图片,我上面的图片还配备了一个简单的数字实例给演示。在正式解释之前咱们先来问一问咱们自己一个最基本的问题,那就是decision tree到底是来干什么的???decision tree最本质的功能是根据feature的条件来最终分离出不同的信息(这里的信息咱们可以理解为target)。因而这里信息熵咱们可以理解为这一组数据可以被分辨(分离的)能力,信息熵越小,越容易被分辨,信息熵越大(1),就越难被分辨出来。Information Gain是父节点的信息熵跟他子节点信息熵之差, I(A)的值越大,则说明从这个节点获取的信息就越大,那么就选这个获取信息量越大的feature。这个过程就是决策树中选择feature的方法。如果上面的理解了,咱们也就顺理成章的理解了是如何构建decision tree和random forest的了,他们之间还有一个小区别是,decision tree每一个都要算每一个feature的Information Gain然后才来选择Information Gain最大的那个feature;而random forest创建它的每一颗tree的过程则是每一步都是随机选几个features来就算Information Gain,然后选最大的,从而确保了tree的多样性。

机器学习-决策树decisiontree(代码片段)

...作为补充内容介绍决策树的原理(决策树的构建原理)。DecisionTree在sklearn中的实现决策树其实很简单,就是将一条数据中的每一个feature作为一个node,然后根据不同的条件分成不同的分支branch,每一个branch还有一个no 查看详情

机器学习算法实践:决策树(decisiontree)(转载)

...便加深印象。本文为这系列博客的第一篇,关于决策树(DecisionTree)的算法实现,文中我将对决策树种涉及到的  算法进行总结并附上自己相关的实现代码。所有算法代码以及用于相应模型的训练的数据都会放到GitHub上(https://gith... 查看详情

机器学习sklearn监督学习分类算法决策树decisiontree(代码片段)

...数cross_val_scorefromsklearn.datasetsimportload_irisfromsklearn.treeimportDecisionTreeClassifierfromsklearn.model_selectionimportcross_val_score#使用默认参数,创建一颗基于基尼系数的决策树,并将该决策树分类器赋值给变量clfclf=DecisionTreeClassifier()i... 查看详情

机器学习-决策树(代码片段)

...g.csdn.net/HerosOfEarth/article/details/52347820  前言:决策树(DecisionTree)是一种基本的分类与回归方法,本文主要讨论分类决策树。决 查看详情

机器学习入门-1.介绍与决策树(decisiontree)

机器学习(MachineLearning)介绍与决策树(DecisionTree)机器学习入门系列是个人学习过程中的一些记录与心得。其主要以要点形式呈现,简洁明了。1.什么是机器学习?一个比较概括的理解是:根据现有的数据,预测未来2.核心思想:Genera... 查看详情

机器学习实战之第三章决策树(decisiontree)

...st/MathJax.js?config=default"></script>决策树概述决策树(DecisionTree)算法主要用来处理分类问题,是最经常使用的数据挖掘算法之一。决策树场景一个叫做"二十个问题"的游戏,游戏的 查看详情

机器学习二——分类算法--决策树decisiontree

...噪音影响较小),可规模性,可解释性。1、决策树 DecisionTree:决策树是一个类似于流程图的树结构,其中每个内部节点表示在一个属性上的测试,每一个分支代表一个属性输出,每一个树叶节点代表类(label)或类的分布。... 查看详情

机器学习-决策树(decisiontree)算法

学习彭亮《深度学习基础介绍:机器学习》课程[toc]决策树概念决策树是一种用于监督学习的层次模型,由此,局部区域通过少数几步递归分裂决定。决策树是一个类似流程图的树结构:其中每个结点表示在一个... 查看详情

机器学习实战基础(二十八):决策树概述(代码片段)

概述决策树是如何工作的 决策树(DecisionTree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适... 查看详情

决策树(decisiontree)吧啦吧啦

#小魔仙?#参考:美BrettLantz的《机器学习与R语言》,周志华老师的《机器学习》#仅供个人学习用#比较长和啰嗦,提醒自己:最好使用电脑看,手机看长篇大论总是不太合适? 这两天学R与机器学习,真心赶脚R太简单化了,转... 查看详情

sklearn1.分类决策树(代码片段)

...器学习全集】菜菜的sklearn完整版决策树简介决策树(DecisionTree)是一种非参数的有监督学习方法 查看详情

机器学习方法:决策树decisiontree原理与实现技巧

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。技术交流QQ群:433250724,欢迎对算法、技术、应用感兴趣的同学加入。前面三篇写了线性回归,lasso,和LARS的一些内容,这篇写一下决策树... 查看详情

sklearn基础篇--决策树(decisiontree)(代码片段)

        决策树是广泛用于分类和回归任务的模型。本质上,它从一层层的if/else问题中进行学习,并得出结论。决策树学习算法包括3部分:特征选择、树的生成和树的剪枝。常用的算法有ID3、C4.5和CART。      ... 查看详情

机器学习之决策树(decisiontree)(代码片段)

...益算法实现Python模型的保存与读取总结理论基础决策树(DecisionTree,DT):决策树是一种基本的分类与回归方法。由于模型呈树形结构,可以看做是if-then规则的集合,具有一定的可读性,可视化效果好。决策树的建立包括3个步骤:... 查看详情

以决策树(decisiontree)作为入门(代码片段)

UoAFMLWeek2DecisionTree定义MachineLearningDecisionTreeMakesense(建立概念)Asimpledecisiontreecreationalgorithm(一个简单的决策树算法)Fundamentalalgorithmofdecisiontreelearning(决策树学习的基本算法)Whichscorefunctionshouldadecisiontree... 查看详情

machinelearning01_decisiontree(决策树)

分类树(决策树)是一种十分常用的分类方法。他是一种监管学习,所谓监管学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象... 查看详情

机器学习--决策树

决策树(DecisionTree)决策树是监督学习(supervisedlearning)的一种。机器学习中分类和预测算法的评估:1.准确率2.速度3.强壮型4.可规模性5.可解释性什么是决策树?决策树是一个类似于流程图的树结构:其中,每个内部节点表示在一... 查看详情

机器学习笔记-决策树

决策树(DecisionTree)决策树学习,建立一颗树结构的模型。此模型由一系列逻辑决策构成。在此结构中决策点代表某个属性上的决策,分支表示决策选择项,树的叶子节点是一系列联合决策的结论。决策树通过分而治之(Divideandconq... 查看详情