决策树学习笔记(decisiontree)

HOU_JUN HOU_JUN     2022-10-23     787

关键词:

 什么是决策树?

  决策树是一种基本的分类与回归方法。其主要有点事模型具有可得性,分类速度快。学习时,利用训练数据,根据损失函数最小化原则建立决策树模型;预测时,对新数据,利用决策树模型进行分类。

 决策树学习通常包含以下三个步骤:

  •   选择特征
  •   决策树生成
  •   剪枝

 决策树的改进路线:

  ID3--->C4.5--->CART

  (1)其中ID3是基于信息增益来选择划分属性

  (2)C4.5不直接使用增益率来选择划分属性,而是使用了一个启发式:先从候选划分属性中选取信息增益高于平局水平的属性,再从中选择增益率最高的。

  (3)CART(Classification and Regression Tree)算法使用基尼系数来代替信息增益比。

 信息

  这个是熵和信息增益的基础概念,是对一个抽象事物的命名,无论用不用‘信息’来命名这种抽象事物,或者用其他名称来命名这种抽象事物,这种抽象事物是客观存在的。如果带分类的事物集合可以划分为多个类别当中,则某个类(xi)的信息(量)定义如下:

         

  I(x)用来表示随机变量的信息,p(xi)指是当xi发生时的概率。当事件xi发生的概率p(xi)很小,但是它却发生了,那这个信息量相当大,比如买彩票中奖了,那么这个信息量肯定是很大的。相反,对于大概率事件,人们习以为常,那么这个事件的信息量就很小。这就体现在上述公式中。

 信息熵

  “信息熵”是度量样本纯度最常用的一种指标。所谓样本纯度,相反而言之就是凌乱程度。如一个数据集U中的样本都属于同一类,那么这时样本纯度最高而凌乱程度最低。信息熵定义为:

   

  其中D表示样本集合,|y|样本中类别的数目, pk表示第k种分类占集合的比例。Ent(D)的值越小,D的纯度越高。

 

 信息增益

  信息增益 指的是,使用某一个属性a进行划分后,所带来的纯度提高的大小。一般而言,信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大。信息增益定义如下:  

    

  即

  信息增益 = 根节点的信息熵 - 所有分支节点的信息熵的加权和

  其中,权值为划分后属性a=ak节点中样本的数量与划分前节点中的样本数量的比值,即概率。概率确保了权重的和为1.

        

      上图描述的是,使用属性a对样本集合D进行划分,因为a有V个取值,因此决策树会有V个分支。划分后每一个节点中样本的数量为属性a=ak的样本的数量。

 

    问:如何理解:信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大?

    答:因为Ent(D)的值越小,D的纯度越高。而划分后,所有的分支节点的Ent(Dk)的和就是划分后的信息熵,公式体现了前后的差距,如果差距越大,那么就说明划分后所有的分支节点的信息熵越小,纯度提升越大。

 

  增益率

  背景:当样本集中的某一属性取值使得所有样本被分到不同类别,此时分支的纯度达到最高,无需再继续划分。然而这样的决策树不具备泛化能力。事实上,信息增益准则对可取值较多的属性有所偏好。

  为了减少这种偏好可能带来的影响,因此使用增益率代替信息增益准则选择划分属性。

  即增益率(Gain_ratio(D,a))=信息增益Gain(D,a)/属性固有值(IV(a))。
  属性A的可能取值越大,固有值IV(a)通常越大。
  信息增益率偏向于可能取值减少的属性。因此C4.5算法不直接使用信息增益率来选择划分属性。

 

 基尼值

  基尼值 Gini(D) 反映了从数据集中随机抽取两个样本,其类别标记不一致的概率。当数据集的纯度越高,每次抽到不同类别标记的概率越小。打个比方,在一个袋子里装100个乒乓球,其中有99个白球,1个黄球,那么当我们随机抽取两个球的时候,很大概率是抽到两个白球。

  所以数据集D的纯度可以用基尼值来度量,其定义如下:

    

  基尼值越小,数据集D纯度越高。

 

 基尼指数

  基尼指数是针对于属性定义的,其反映的是,使用属性a进行划分后,所有分支中(使用基尼值度量的)纯度的加权和。

  属性a的基尼指数定义如下:

   

  我们在属性集合A中选择划分属性的时候,就选择使得划分后基尼指数最小的属性作为最优划分属性。CART就是用基尼指数来选择划分属性的。

 

 决策树的剪枝处理

  剪枝是决策树学习算法解决过拟合的主要手段。在决策树的学习过程中,为了尽可能地正确分类训练样本,节点划分得不断重复,有时候会造成决策树的分支过多,这时候就是算法在训练样本上学得太好,导致把训练集本身的一些特点作为所有数据所有数据都有的一般性质(实际上新数据中可能没有这些特点),从而导致过拟合。因此可以主动去掉一些分支来降低过拟合的风险。

  决策树的剪枝分为  预剪枝  和  后剪枝

  预剪枝,是指在决策树生成过程中,对每个节点在划分前先进行估计,若当前的节点划分不能带来决策树泛化的提升,则停止划分并将当前节点标记为叶子节点。

  后剪枝,是指先从训练数据集中生成一课完整的决策树,然后自底向上对非叶子节点进行考察,若将该节点对应的子树替换为叶子结点能够带来决策树泛化能力的提升,则将该节点替换为叶子节点。

  

  (注:叶子节点的类别指定为 训练数据集中数量最大的类别)

  预剪枝

  在某个节点的预剪枝的估计建立在已经确定最优划分属性的前提之上,要不要以该属性对当前节点进行划分,还得先计算泛化能力是否有提高。

  在预剪枝中,泛化能力的计算依赖于验证数据集。验证精度的计算是将验证数据集输入决策树模型进行判别,取正例样本数量与验证集样本数量的比值(百分比)。划分前验证精度由上一步计算给出。泛化能力的提高与否,要对比划分前后验证集的大小。

  预剪枝基于“贪心”本质禁止这些分支的展开,给预剪枝决策树带来欠拟合的风险。

 

  后剪枝

  将验证集输入到决策树算法,计算出剪枝前的验证精度。然后,找到最底下的非叶子结点,(模拟)将其领先的分支去除,取其中数量最大的分类作为该节点的判别标记。然后计算剪枝后的验证精度。通过对比剪枝前后的验证精度,来确定是否需要进行剪枝。

 

  剪枝处理总结:

  后剪枝决策树通常比预剪枝决策树保留更多的分支,一般情形下,后剪枝决策树的欠拟合风险小,泛化能力往往优于预剪枝。但后剪枝决策树训练开销比预剪枝大得多。

 

 连续值与缺失值

  连续值处理

  连续属性的可取值数目不再有限,因此不能直接根据连续属性可取值来对节点进行划分(因为如果以可取值来对数据集进行划分,如果在该属性上所有的可取值是不一样的,使得划分后纯度达到最大,不利于决策树的泛化)。此时可以使用连续属性离散化技术。最常用的是二分法。

  给定样本集D合连续属性a,嘉定a在D上出现不同取值,将这些取值从小到大排序,记为a1,a2,......,an,基于划分可以将t划分为子集Dt-,Dt+, 其中Dt-包含那些属性a取值不大于t的样本,Dt+包含取值不大于t的样本。显然,对于相邻的属性取值ai和a(i+1)来说,t在半开区间[ai  a(i+1)) 中所产生的划分结果是相同的。因此,对于连续属性a, 我们可以考虑包含n-1个元素的候选划分点集合

    

  即把区间[ai  a(i+1))的中位数(ai+a(i+1))/2作为候选划分点,之后我们就可以像离散属性值一样来考察这些划分点,选取划分点进行样本集合的划分,例如可以对离散属性的信息增益式子稍加改造:

     

  其中,Gain(D,a,t)是样本集D基于划分点二分后的信息增益于是我们就可以选择使Gain(D,a,t)最大化的划分点。

 

  缺失值

  对于数据缺失问题,我们需要解决两个问题:

  (1)如何在属性值缺失的情况下进行划分属性选择?

  (2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

  

  

 

 

 

  

  

  

  

 

  

 

  

 

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

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

decisiontrees决策树

DecisionTrees (DT)是用于分类和回归的非参数监督学习方法。目标是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的值。例如,在下面的例子中,决策树从数据中学习用一组if-then-else决策规则逼近... 查看详情

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

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

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

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

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

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

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

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

决策树(decisiontree)

决策树是一种基本的分类和回归方法。本章主要讨论用于分类的决策树,决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上... 查看详情

machinelearning01_decisiontree(决策树)

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

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

#导入鸢尾花数据集、决策树分类器、计算交叉验证值的函数cross_val_scorefromsklearn.datasetsimportload_irisfromsklearn.treeimportDecisionTreeClassifierfromsklearn.model_selectionimportcross_val_score#使用默认参数,创建一颗基于基尼系数的决策树&# 查看详情

决策树(decisiontree)

...策树的生成,剪枝。一、概述    决策树(decisiontree)是一种基本的分类与回归方法(这里是分类的决策树)。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规... 查看详情

决策树(decisiontree)吧啦吧啦

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

class-决策树decisiontree

顾名思义,决策树model是树形结构,在分类中,表示基于特征对实例进行分类的过程。可以人为是“if-else”的合集,也可以人为是特征空间,类空间上条件概率分布。主要优点是分类速度快,可读性好。在学习时(training)根据l... 查看详情

机器学习:决策树(decisiontree)--id3算法(代码片段)

决策树的主要算法构建决策树的关键:按照什么样的次序来选择变量(属性/特征)作为分类依据。根据不同的目标函数,建立决策树主要有以下三种算法ID3(J.RossQuinlan-1975)核心:信息熵,信息增益C4.5——ID... 查看详情

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

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

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

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

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

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

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

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

决策树(decisiontree)的理解及优缺点

决策树的理解  决策树是一种机器学习的方法。决策树的生成算法有ID3,C4.5和CART等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。... 查看详情