Datawhale-初级算法梳理-Day3-决策树算法梳理
1.信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)
a) 熵
熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。在信息论里面,熵是对不确定性的测量。但是在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。
采用概率分布的对数作为信息的量度的原因是其可加性。例如,投掷一次硬币提供了1 Sh的信息,而掷m次就为m位。更一般地,你需要用log2(n)位来表示一个可以取n个值的变量。
参考:维基百科—熵 (信息论)
b) 联合熵
两个变量 X 和 Y 的联合信息熵定义为:
其中 x 和 y 是 X 和 Y的特定值, 相应地, P(x,y) 是这些值一起出现的联合概率, 若 P(x,y)=0 为0,则
定义为0。
c) 条件熵
在信息论中,条件熵描述了在已知第二个随机变量 X 的值的前提下,随机变量 Y 的信息熵还有多少。同其它的信息熵一样,条件熵也用Sh、nat、Hart等信息单位表示。基于 X 条件的 Y 的信息熵,用 H (Y|X) 表示。
d) 信息增益
e) 基尼不纯度
基尼不纯度表示一个随机选中的样本在子集中被分错的可能性。基尼不纯度为这个样本被选中的概率乘以它被分错的概率。当一个节点中所有样本都是一个类时,基尼不纯度为零。
假设y的可能取值为{1, 2, …, m},令fi是样本被赋予i的概率,则基尼指数可以通过如下计算:
参考:维基百科—决策树学习
2.决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景
a) ID3算法
在ID3算法中,选择信息增益最大的属性作为当前的特征对数据集分类,通过不断的选择特征对数据集不断划分。
只能处理离散型属性
b) C4.5
信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,C4.5不直接使用信息增益,而是采用增益率来选择最优划分属性,增益率定义为:
其中
成为属性 “a” 的固有值,属性 a 的可能取值数目越多,IV(a) 的值通常会越大。
注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
它可以处理连续型属性。
c) CART分类树
采用基尼指数来选择划分属性。
相比ID3和C4.5,CART应用要多一些,既可以用于分类也可以用于回归。
参考:
3.回归树原理
一个回归树对应着输入空间(即特征空间)的一个划分以及在划分单元上的输出值。分类树中,我们采用信息论中的方法,通过计算选择最佳划分点。而在回归树中,采用的是启发式的方法。假如我们有n个特征,每个特征有
个取值,那我们遍历所有特征,尝试该特征所有取值,对空间进行划分,直到取到特征j的取值s,使得损失函数最小,这样就得到了一个划分点。
参考:机器学习算法—Regression Tree 回归树
4.决策树防止过拟合手段
剪枝(prumng)是决策树学习算法对付“过拟合”的主要手段,在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合.因此,可通过主动去掉一些分支来降低过拟合的风险。
决策树剪枝的基本策略有“预剪枝”(prepruning)和“后剪枝”(post-prunmg)。预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
5.模型评估
常用的评估分类器性能的方法:
1、保持方法
在保持(Holdout)方法中,将被标记的原始数据划分成两个不想交的集合,分别称为训练集合检验集。在训练数据集上归纳分类模型,在检验集上评估模型的性能。训练集和检验集的划分比例通常根据分析家的判断(例如,50-50,或者2/3作为训练集、1/3作为检验集)。分类器的准确率根据模型在检验集上的准确率估计。
2、随机二次抽样
可以多次重复保持方法来改进对分类器性能的估计,这种方法称作随机二次抽样(random subsampling)。设acci是第i次迭代的模型准确率,总准确率是
。随机二次抽样也会遇到一些与保持方法同样的问题,因为在训练阶段也没有利用尽可能多的数据。并且,由于它没有控制每个记录用于训练和检验的次数,因此,有些用于训练的记录使用的频率可能比其他记录高很多。
3、交叉验证
替代随机二次抽样的一种方法是交叉验证(cross-validation)。在该方法中,每个记录用于训练的次数相同,并且恰好检验一次。为了解释该方法,假设把数据分为相同大小的两个子集,首先,我们选择一个子集作训练集,而另一个作检验集,然后交换两个集合的角色,原先作训练集的现在做检验集,反之亦然,这种方法叫做二折交叉验证。总误差通过对两次运行的误差求和得到。在这个例子中,每个样本各作一次训练样本和检验样本。k折交叉验证是对该方法的推广,把数据分为大小相同的k份,在每次运行,选择其中一份作检验集,而其余的全作为训练集,该过程重复k次,使得每份数据都用于检验恰好一次。同样,总误差是所有k次运行的误差之和。
4、自助法
以上方法都是假定训练记录采用不放回抽样,因此,训练集合检验集都不包含重复记录。在自助(bootstrap)方法中,训练记录采用有放回抽样,即已经选作训练的记录将放回原来的记录集中,使得它等机率地被重新抽取。如果原始数据有N个记录,可以证明,平均来说,大小为N的自助样本大约包含原始数据中63.2%的记录。这是因为一个记录被自助抽样抽取的概率是
,当N充分大时,该概率逐渐逼近
=0.632。没有抽中的记录就成为检验集的一部分,将训练集建立的模型应用到检验集上,得到自助样本准确率的一个估计εi。抽样过程重复b次,产生b个自助样本。
按照如何计算分类器的总准确率,有几种不同的自助抽样法。常用的方法之一是.632自助(.632 bootstrap),它通过组合每个自助样本的准确率(εi)和由包含所有标记样本的训练集计算的准确率(
)计算总准确率(
):
参考:分类:基本概念、决策树与模型评估
6.sklearn参数详解,Python绘制决策树
a) sklearn参数
官网api:这里
b) python绘制决策树
参考: