《统计学习方法》第五章决策树

1. 决策树学习的三个步骤

特征选择、决策树的生成、决策树的修建

2. 决策树模型与学习

2.1 决策树的组成

决策树由节点和有向边组成,节点包括内部节点和叶节点.
内部节点表示一个特征或属性,页节点表示一个类.路径上的内部节点的特征对应着规则的条件,而叶节点的类对应着规则的结论.
在这里插入图片描述
注:图中的圆和方框分别表示内部节点和叶节点

3. 决策树的特征选择

特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率.通常特征选择的准则是信息增益或信息增益比.

3.1 熵

熵表示随机变量不确定性的度量,设X是一个取有限个值的离散随机变量,其概率分布为:
在这里插入图片描述
则随机变量X的熵定义为:
在这里插入图片描述
注:对数一般以2为底或者以e为底
由定义可知,熵只依赖于X的分布,而与X的取值无关,所以也可将X的熵记作H§,即:
在这里插入图片描述
熵越大,随机变量的不确定性就越大,即:
在这里插入图片描述
注: i的取值为1…n, 对于i的所有取值,当pi=1/n时,不确定性最大,H最大,
H = -(1/n * log (1/n)) * n = -(log(1/n)) = log n

当随机变量只取0或1时,熵H§随概率p变化的曲线如下所示:
在这里插入图片描述
在这里插入图片描述

3.2 信息增益

定义:信息增益表示得知特征X的信息而使得类Y的信息不确定性减少的程度.
信息增益越大的特征具有更强的分类能力.
在这里插入图片描述
注: 熵H(Y)与条件熵H(Y|X)之差称为互信息,决策树学习中信息增益即为训练数据集中类与特征的互信息.
在这里插入图片描述
在这里插入图片描述
注:上述公式只是显的很复杂似的,因为把多步嵌套进一个公式了.

3.3 信息增益比

在这里插入图片描述

4. 决策树的生成

4.1 ID3算法

在这里插入图片描述
在这里插入图片描述
注: 第五步中,将Di中实例数最大的类作为标记,构建子节点,不太理解什么意思

4.2 C4.5的生成算法

在这里插入图片描述

5. 决策树的剪枝

定义:在决策树学习中将已生成的树进行简化的过程称为剪枝.
具体的,剪枝从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型.

5.1简单的决策树学习剪枝算法

决策树的剪枝往往通过极小化决策树整体的损失函数或代价函数来实现.
在这里插入图片描述
在这里插入图片描述
注:a越大,叶节点的个数对损失函数的影响越大,剪枝之后的决策树更容易选择复杂度较小的树,a越小,表示叶节点的个数对损失函数的影响越小.
在这里插入图片描述
在这里插入图片描述
注:式(5,15)只需考虑两个树的损失函数的差,其计算可以在局部进行,所以,决策树的剪枝算法可以由一种动态规划的算法实现.

5.2 CART(classification and regression tree分类与回归树)算法

CART算法同样由特征选择、树的生成、树的剪枝组成.既可以用于分类也可以用于回归.
CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法.CART假设决策树是二叉树,内部节点特征的取值是“是”和“否”,左分支取值是“是”,右分支取值为“否”.这样的决策树等价于递归的二分每个特征.

5.2.1 CART算法步骤

1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大.
2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准.
注:决策树剪枝操作CART算法与普通算法不同的是,这用的验证数据集,而普通算法用的训练数据集.

5.2.2 CART生成

决策树的生成就是递归地构建二叉决策树的过程,对回归树用平方误差最小化准则,对分类树用基尼指数(Gini index)最小化准则,进行特征选择,生成二叉树.
回归树的生成算法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分类树的生成算法
分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述

5.2.3 CART剪枝

CART剪枝算法由两步组成:首先从生成算法产生的决策树T0底端开始不断剪枝,直到T0的根节点,形成一个子树序列{T0,T1,…,Tn};然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树.
在这里插入图片描述
在这里插入图片描述
注:
1)步骤(6)中应该是回到步骤(2),这样才能在原来的基础上再进行剪枝,寻找最优子树.
2)上述算法整体思路:对于原始的CART树A0,先剪去一棵子树,生成子树A1,然后再从A1剪去一棵子树生成A2,直到最后剪到只剩一个根结点的子树An,于是得到了A0-AN一共n+1棵子树。然后再用n+1棵子树预测独立的验证数据集,谁的误差最小就选谁.
3)对参数a和g(t)的理解: 实际上这个g(t)表示剪枝的阈值,即对于某一结点a,当总体损失函数中的参数alpha = g(t)时,剪和不剪总体损失函数是一样的。
这时如果alpha稍稍增大,那么不剪的整体损失函数就大于剪去的。即alpha大于g(t)该剪,剪了会使整体损失函数减小;alpha小于g(t)不该剪,剪了会使整体损失函数增大。
(请注意上文中的总体损失函数,对象可以是以a为根的子树,也可以是整个CART树,对a剪枝前后二者的总体损失函数增减是相同的。)对于同一棵树的结点,alpha都是一样的,当alpha从0开始缓慢增大,总会有某棵子树该剪,其他子树不该剪的情况,即alpha超过了某个结点的g(t),但还没有超过其他结点的g(t)。这样随着alpha不断增大,不断地剪枝,就得到了n+1棵子树,接下来只要用独立数据集测试这n+1棵子树,试试哪棵子树的误差最小就知道那棵是最好的方案了.

发布了89 篇原创文章 · 获赞 0 · 访问量 1043

猜你喜欢

转载自blog.csdn.net/qq_26496077/article/details/103691327