决策树问答

决策树产生方法:

1、结构:1个根节点+多干内部节点和叶节点,根节点和若干内部节点是判断模块,用来判断对特征怎样分类,叶节点是终止模块,到这里决策树就完成了分类过程.
2、feature selection+Decision tree生成(递归过程)+pruing(剪枝,防止过拟合)
3、决策树分支节点划分原则:纯度原则(Purity),分支节点的样本尽可能属于同一类,也就是纯度越高越好,判断纯度引入数学参数:信息熵用来描述信息的不确定度,信息熵越大,信息越不确定,包含的可能性就越大.

决策树分支节点划分原则

Gini索引: G i n i ( S ) = 1 i = 1 c p i 2

互熵: i n f o ( S ) = i = 1 m p i log 2 ( p i )
其中S样本数据,pi表示第i个类别在整个训练元组中出现的概率,一般来说会用这个类别的样本数量占总量的占比来作为概率的估计 | S j | | S | ;熵的实际意义表示是S中数据的类标号所需要的平均信息量。

常用的C4.5、C5.0用的是互熵信息增益比率,选择具有最大[增益比率]的属性作为分裂属性。

C5.0是C4.5应用于大数据集上的分类算法,主要在执行效率和内存使用方面进行了改进。C5.0算法则是C4.5算法的修订版,适用于处理大数据集,采用Boosting方式提高模型准确率,又称为BoostingTrees,在软件上计算速度比较快,占用的内存资源较少。
来看每个属性的增益比率怎么算:
在X属性下分裂的信息熵: s p l i t I n f o ( S | X ) = j = 1 k | S j | | S | l o g 2 ( | S j | | S | )
定义增益为: G a i n ( X ) = i n f o ( S ) i n f o ( S | X )
所以定义增益率为: g a i n R a t i o = G a i n ( X ) s p l i t I n f o ( S | X )

C4.5算法停止分裂的条件:

1、一个结点的所有目标变量样本值均为同一类别;
2、若无属性可用于划分当前样本集,则将当前结点强制划为叶结点,并把样本数目最多的类别标记为预测类别;
3、如果分裂后剩余的样本数小于某个给定的阈值,则返回一个叶结点,并把众数类别标记为预测类别。例如取值为10,如果剩余样本数小于10,则自动归为叶结点,停止分裂。这实际上是一种前剪枝的方式。

CART用的是Gini增益,计算每个属性的[Gini增益],然后选择Gini增益最大的属性进行分裂。

按照属性X进行划分的Gini索引值: G i n i ( S | X ) = j = 1 k | S j | | S | G i n i ( S j )
S j 为当属性X取值 x j 时的样本数据;
属性X的Gini增益被定义为: Δ G i n i ( X ) = G i n i ( S ) G i n i ( S | X )

CART停止分裂的条件:
1、决策树最大深度(maxdepth):如果决策树的层数已经达到了制定的深度,则停止生长;
2、最小样本分裂数(minsplit):如果结点包含的样本数已低于最小样本数minsplit,则不再分裂;
3、树中叶结点所包含的最小样本数(minbucket):如果自变量X分裂后生成的叶结点所包含的样本数低于最小样本数minbucket,则此次分裂无效,自变量X不再进行分裂;

防止过拟合

决策树的剪枝方法
决策树的剪枝有两种思路:前剪枝(Pre-Pruning)和后剪枝(Post-Pruning)

前剪枝(Pre-Pruning)
在构造决策树的同时进行剪枝。所有决策树的构建方法,都是在无法进一步降低熵的情况下才会停止创建分支的过程,为了避免过拟合,可以设定一个阈值,熵减小的数量小于这个阈值,即使还可以继续降低熵,也停止继续创建分支。但是这种方法实际中的效果并不好。

后剪枝(Post-Pruning)
决策树构造完成后进行剪枝。剪枝的过程是对拥有同样父节点的一组节点进行检查,判断如果将其合并,熵的减少量是否小于某一阈值。如果确实小,则这一组节点可以合并一个节点,其中包含了所有可能的结果。后剪枝是目前最普遍的做法。
后剪枝的剪枝过程是删除一些子树,然后用其叶子节点代替,这个叶子节点所标识的类别通过大多数原则(majority class criterion)确定。所谓大多数原则,是指剪枝过程中, 将一些子树删除而用叶节点代替,这个叶节点所标识的类别用这棵子树中大多数训练样本所属的类别来标识,所标识的类 称为majority class 。

猜你喜欢

转载自blog.csdn.net/qq_21567767/article/details/82144962