决策树模型小结

版权声明:转载时须注明出处 https://blog.csdn.net/KID_yuan/article/details/85009501

决策树模型的基础知识总结

决策树定义:

分类型决策树是一种描述对数据类型实例进行分类的树形结构。树形结构由结点和有向边组成。

内部结点:对应数据的一个特征(属性)。

叶节点:对应数据的一个类别。

决策树模型的特点:

①直观、可解释性好;②模型具有可读性;③分类速度快。

经典决策树模型:

ID3(Iterative Dichotomiser);C4.5;Cart(Classification and Regression tree)。

决策树生成:递归地进行决策特征选择,构建树的结点的过程。
•ID3算法:利用信息增益最大的准则进行特征选择。
•C4.5算法:结合信息增益,利用增益率最大的准则进行特征选择。
•CART分类树:利用基尼指数最小的准则进行特征选择。
•CART回归树:利用最小平方误差的准则进行特征选择。

决策树常用技术路线:

决策树的生成:遍历所有可能的特征属性,对树进行分支。

剪枝:适当减除一些不必要的分支,减少过拟合情况,获得更好的推广能力。

具体步骤:

①构建根结点,将所有训练数据都放在根结点。②选择一个“最优”特征,按照他的离散取值,将上一数据结点中的数据分割不同的子集。③对于分割的子集,如果能够基本正确分类(子集中的大部分数据都属于同一类),那么构建叶结点。④对于不能构建叶结点的子集,继续2-3步骤,直到所有的子集都能构建叶结点。

决策树涉及的三大技术:
•决策特征的选择
•决策特征分裂点的确定
•决策树剪枝

那么问题来了,怎么样选择“特征最优”,怎样划分子集?

根据决策树划分的目的:每一个结点下所划分的子集应该尽可能应该属于同一类别。即分支结点的纯度尽可能高。

那么怎么评价其分支节点的纯度呢?

方法:

•基于信息熵的判据
•基于基尼指数的判据

信息熵定义:假定样本集合D中第k类样本所占比例为pk,k=1,2,…,C,则样本集合D的信息熵定义为:

信息熵的值越小,分支的样本集的不确定性越低,D的纯度越高。

信息增益:得到样本某个属性a的信息,使得样本集合的不确定性减少的程度。

根据属性a,对D进行划分所获得的信息增益:,表示集合D划分后纯度提升越大。

但是,信息增益对取值个数较多的属性有偏好,相应的增益率会大。因此采用对信息增益归一化处理:

信息增益率/增益比:利用数据集D关于属性a的熵对信息增益进行归一化。属性可取值个数多,IV(a)也会大

数据集D关于属性a的熵:


C4.5决策树学习算法:根据信息增益率,确定“最优”特征,构建决策树。

信息增益率会对取值个数较少的属性有偏好。
先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

假定样本集合D中第k类样本所占比例为pk,k=1,2,…,C,则样本集合D的基尼值定义为:

基尼值越小纯度越高。属性a的基尼指数:利用属性a对样本集合D划分后的基尼值之和。

ID3算法
输入:训练数据集D、特征集合A、阈值t
输出:决策树T
1、若D中所有实例都属于同一类k,则T为单结点树(叶结点),将类k作为该结点的类标记,返回T;
2、若特征集合A为空集,则T为单结点树(叶结点),将D中实例最多的类k作为该结点的类标记,返回T;
3、否则,计算A中各特征对D的信息增益,选择信息增益最大的特征Am;如果Am的信息增益小于阈值t,则T为单结点树(叶结点),将D中实例最多的类k作为该结点的类标记,返回T;
4、否则,对Am的每一可能取值ai,根据Am =ai将D分割成非空子集Di,每个子集作为一个子结点(内部结点),由输入结点及子结点构成树T,返回T;
5、对第i个子结点,以Di为训练集,A-{Am}为特征集,递归调用ID3算法。

C4.5算法
输入:训练数据集D、特征集合A、阈值t
输出:决策树T
1、若D中所有实例都属于同一类k,则T为单结点树(叶结点),将类k作为该结点的类标记,返回T;
2、若特征集合A为空集,则T为单结点树(叶结点),将D中实例最多的类k作为该结点的类标记,返回T;
3、否则,计算A中各特征对D的信息增益率和信息增益,先找出信息增益高于平均水平的特征,再从中选择增益率最大的特征Am;如果Am的信息增益率小于阈值t,则T为单结点树(叶结点),将D中实例最多的类k作为该结点的类标记,返回T;
4、否则,对Am的每一可能取值ai,根据Am =ai将D分割成非空子集Di,每个子集作为一个子结点(内部结点),由输入结点及子结点构成树T,返回T;
5、对第i个子结点,以Di为训练集,A-{Am}为特征集,递归调用C4.5算法。

决策树剪枝:

预剪枝:在生成决策树的过程中同时进行剪枝。在决策树生成的过程中,对每个结点在划分前进行进行估计,若该结点的划分不会对决策树的泛化能力带来提升,则不进行划分(剪枝)。

后剪枝:在生成决策树之后进行剪枝。先从训练集生成一颗完整的决策树,然后从决策树底部向上对非结点进行考察,若该结点对应的子树替换为叶结点之后能够带来决策树模型的泛化性能提升,则进行替换(剪枝)。

那么问题又来了,怎样判断决策树模型的泛化能力是否提升?

留出法:从带标签的训练数据中划分一部分作为“验证集”,用于评估训练好的决策树的测试性能(泛化性能)。

预剪枝的留出法技术路线:

1、在决策树生成算法中,假定我们选择了某个特征Am对数据进行划分,记划分前后的决策树(划分前该结点的类别为其中训练样本中最多的类别)分别为TB和TA。
2、分别计算使用TB和TA对验证集进行评估的性能,分类正确率记为PB和PA。
预剪枝算法的技术路线
3、如果PB<PA ,表明划分之后决策树泛化性能更好,保留该划分;否则放弃。

后剪枝的留出法技术路线:

1、根据训练集数据,生成一棵完整的决策树。
2、从决策树最底部的叶结点开始,向上回缩。记一组叶结点(对应同一个父结点)回缩前后,决策树在验证集上的正确率分别为PB和PA,如果PA≥PB,满足剪枝条件,将该组叶结点并入其父结点,并将其父结点作为新的叶结点
3、如果PA<PB ,表明回缩之后决策树泛化性能更差,放弃这次剪枝。
4、递归执行2-3步,直到不能继续为止。

处理连续特征取值:
•设置阈值,将连续特征取值划分为两个子集合,转化为取值个数为2的离散情况。

处理缺失特征:
•选择划分属性时,只使用没有缺失特征的数据子集计算特征选择标准,利用无缺失数据的比例进行加权
•对于划分属性上没有取值的样本,按照子结点的大小比例等比例的划分至所有子结点,更新样本的权重

•CART:Classification and Regression Tree,分类与回归决策树。
•CART的构建由特征选择、决策树生成和决策树剪枝三部分组成,既可用于分类,也可用于回归。
•CART是一个二叉树结构,内部结点取值“是”和“否”
•CART分类树使用基尼指数进行特征选择
•CART回归树使用平方误差最小准则进行特征选择
•CART决策树剪枝先根据数据自动产生一系列子树,然后通过交叉验证选择最优的子树作为剪枝结果

CART剪枝(后剪枝策略)
1.自底向上进行剪枝,产生一系列剪枝后的子树;
2.通过交叉验证,在独立的验证数据集上对所有子树进行测试,选择最优一个子树。

CART剪枝序列产生算法
输入:CART生成的决策树T0
输出:一系列剪枝后的子树T0,T1,…,Tn
1、令k=0,T=T0,α=+∞;
2、自下而上地对T各内部结点t计算:
其中,Tt表示以t为根结点的子树,C(T)表示利用树T对训练数据的预测误差。
3、对所有结点中g(t)值最小的那个进行剪枝,叶结点t的类别为其中多数样本的类别,得到树T,记录α=g(t),k=k+1,Tk=T;
4、如果T不是由根结点及两个叶结点构成的树,返回2,否则结束;

随机森林:通过随机方法构建多个决策树,利用决策树分类结果进行投票,得到随机森林的分类结果。随机森林泛化能力更强。
随机方法:生成决策树之前,先采用随机方法确定可用的训练数据和特征属性。
•训练数据随机:随机采样一部分训练数据
•使用特征随机:随机选择一部分特征属性

猜你喜欢

转载自blog.csdn.net/KID_yuan/article/details/85009501