决策树-信息熵-信息增益-基尼系数-剪枝操作-连续值处理-缺失值处理

决策树是基于树结构来进行决策的,一种常见的机器学习算法。一般的,一颗决策树包含一个根节点,若干个内部节点和若干叶子节点。叶节点对应于决策结果,其他节点对应于属性测试。

如何构造决策树,选取最优划分属性????   

1)  信息熵度量的是一种不确定性,信息熵越小 表示纯度越高。


信息增益定义如下:


信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。

2)基尼指数

基尼指数反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。基尼不纯度为这个样本被选中的概率乘以它被分错的概率。当一个节点中所有样本都是一个类时,基尼不纯度为零。

3)剪枝操作

剪枝一般是为了避免树的过于复杂,过于拟合而进行的一个动作,剪枝操作是一个全局的操作。

预剪枝:预剪枝就是在树的构建过程(只用到训练集),设置一个阈值,使得当在当前分裂节点中分裂前和分裂后的误差超过这个阈值则分列,否则不进行分裂操作。

后剪枝:后剪枝是在用训练集构建好一颗决策树后,利用测试集进行的操作。具体过程:基于已有的树切分测试数据:1.如果存在任一子集是一棵树,则在该子集递归剪枝过程 2.计算不合并的误差 3.如果合并会降低误差的话,就将叶节点合并。

优缺点:(1)前阈值的设定很敏感,一点点的变动,会引起整颗树非常大的变动,不好设定。 (2)前剪枝生成比后剪枝简洁的树 (3)一般用后剪得到的结果比较好。

4)连续值处理

一般来说,决策树处理不了具有连续值的特征,因为具有连续值的属性的可取值数目不再有限,因此不能直接用连续属性的取值来进行划分决策树,而常用二分法对连续值进行处理。假设属性a是连续属性,将属性a下的值从小到大排序,有{a1,a2,a3,…………an},在a(i)和a(i+1)之间取平均值,作为一个划分结点,一共有n-1个划分结点,因此我们以这些结点把数据集分为两个子集,分别计算在该结点下属性a的信息增益,计算结果有n-1个值,在n-1个值之中选取信息增益最大的值,以这个值的划分点作为把连续属性a变成2个类离散化的节点。

5)缺失值处理

按照我自己的理解就是  在属性a下假如存在缺失值的话,在计算属性a下的信息增益时,把具有缺失值的元组去掉,把具有完整值的属性a代入计算,用去掉缺失值计算结果进行比较。




猜你喜欢

转载自blog.csdn.net/qq_17073497/article/details/80483051