关于决策树后剪枝和最大熵模型的一些直观理解

前言:
今天又看了一下李航的“统计学习方法”,每次看到决策树后剪枝和最大熵模型的时候,总觉得有些陌生,就是那种不管看几遍公式推导还是觉得理解不够到位的感觉,今天也不例外。于是我决定跳出公式,更加直观的去理解它们的原理,最后也算是有些新的感悟,就此做一个记录,同时希望能够有缘看到这篇文章的读者,对其中理解有误的地方指正出来,望不吝赐教。
ps:主要谈理解和思想,几乎不涉及公式推导和细节(并不是我懒得打公式),所以建议读者拿着原书对照着进行阅读。

一.决策树剪枝

统计学习方法中一共有两种决策树后剪枝的方法,我以前也没有仔细思考这两种剪枝到底有什么本质的区别,今天思考了一下,发现二者有着一个根本上的区别:

1.“决策树剪枝”(书中的名称,我直接沿用)是人为固定了正则项系数 α ,然后对树进行从下自上的剪枝,通过剪枝前后的损失函数(个人认为这里是用验证集进行计算的损失函数,书中好像没提到)的变化而判断在每一个节点处是否剪枝。

2.”CART树剪枝”是找到一个递增的 α 序列,这个序列正好一一对应到一组CART树的子树上。最终选择其中最优的一棵子树作为最终剪枝后的决策树,以及其对应的 α 作为损失函数的正则项系数(因为是一一对应也可以看成选择了一个最优的惩罚项系数 α )。

1的思想是比较简单直观的,我们可以先用训练集根据特征选择和停止条件,递归地生成一颗决策树,然后再定一个 α ,得到损失函数的表达式,基于验证集的损失函数值对决策树进行自下而上的剪枝。

关键是2中的决策树剪枝(以下只要不特殊说明,均指的是2中的决策树剪枝),书上的公式实在是绕的我头晕,其实它的思想非常简单:
首先需要清楚的一点是,一般而言,决策树的损失函数由两部分组成,一是预测的错误率带来的损失,错误率越低,自然损失就越少,二是树的复杂度(一般和树的叶子节点数成正比)带来的损失(正则项),复杂度越高,损失就越大。接下来便是重点:如果此时树的正则项系数 α 为0,那么树的复杂度变不会带来损失,此时当然是未剪枝时候的树 T 0 的损失函数是最小的,任意位置的剪枝都会导致损失函数变大。此时我们将 α 从0开始慢慢增大,也就是树的复杂度的代价越来越大,总会出现在某个值 α 1 处,对某个节点进行剪枝后,损失函数不再变大,也就是说虽然此时错误率会提高(对于训练集而言),但是复杂度会降低,而且它俩带来的代价正好抵消。那么此时我们根据奥卡姆剃刀准则,对此处进行剪枝,而且我们可以发现,当 α 继续变大的话,剪枝后的树比剪枝前的树损失函数更小。此时就有一个结论,当 α 属于[0, α 1 )时,原树是损失函数最小的,但是当超过 α 1 时,便有损失函数更低的子树。

现在问题来了,我怎么知道此时应该对哪个点进行剪枝?这个某个节点指的是哪个?你在说**呢?
别慌,这就是书上那些公式的由来,我们既然已经知道一定有这么个 α 1 ,那就可以把它算出来。对于每个节点 n o d e i ,我们都能算出它的临界 α n o d e i 值(书中有详细说明如何计算),也就是当 α 等于这个值时,便可以对这个节点进行剪枝了,但这些临界 α n o d e i 各不相同,我们应该如何选择呢?其实在上一段的分析中我们就已经说清楚了,我们要选择这些 α n o d e i 最小的那个(随着 α 从0慢慢增大,第一个遇到的不就是最小的那个 α n o d e i 嘛)。

之后便是重复以上的过程,我们把剪枝过后的树当成新的树,重复以上过程,随着 α 增大,当达到某一个值 α 2 时,我们需要继续剪枝,但在[ α 1 , α 2 )上, T 1 是损失函数最小的树,如此往复,直到达到停止条件。

最后我们就得到了一个 α 序列和子树序列,我们再用验证集去分别算出每个子树的损失函数,最终选择损失函数最小的那个子树作为最终的决策树。

具体算法书中写的还是比较清楚的,我只是对算法进行一个更加直观的理解,总结一下就是说:我们希望找到一个尽可能稠密的,且具有包含关系的子树序列{ T 0 T 1 T 2 . . . },而且每个子树 T i 在区间[ α i , α i + 1 )上是损失函数最小的(选你总是有道理的嘛,总是有点本事才选你),但是我们没法事先知道如何去取一个合适的惩罚系数 α , 所以我们通过验证集损失函数最小的原理选择出最终的决策树 T i ,它恰好也对应了一个惩罚系数 α i ,这个惩罚系数就是比较的合理的。

二.最大熵模型

如果说上面决策树还是挺绕的(写的确实很繁琐,不过我觉得只要没有废话,那么写的越长就应该越容易让人理解)。那么下面的最大熵模型就真的是非常直观的理解了,我用简单几句话就能讲清楚其大概思路。

最大熵模型基于最大熵原理,最大熵原理的基本思想,就是你要得到一个模型,使得它在满足给定的条件下,预测事件可能性P的熵H(P)尽可能的大(最大化),什么意思呢?比如说此时箱子里只有红球和白球两种球,但你不知道各自的数量是多少,那么此时我们就可以根据最大熵原理,红球白球各自占1/2的比例。这里的熵是作用于这个可能性P的.

接下来就是最大熵模型了,首先我们手上有一些训练集 ( X i , Y i ) 我们的目标是求 p ( Y | X ) ,是一个判别模型,而我们的熵H就是直接作用在P(Y|X)上的,那我们的目标就是$max H(p) = -

猜你喜欢

转载自blog.csdn.net/gzt940726/article/details/81610963
今日推荐