谢邀, 尽量用通俗易懂的语言描述一下, 希望能够帮助大家理解这玩意.
1. 决策树本质上是按照某种方法/某些条件对数据进行分类. 正如一般的树结构, 这个分类是可以不断嵌套, 按层逐级细分的, 直到满足某个/某些条件为止. 一个最简单的例子是, 对某个数据按照一个条件进行分类, 这就是最简单的树, 可以用很简单的代码实现.
例如有个数据集, 其中一个指标的直方图如图所示, 如果按照该指标将数据集分为A和B两类的话, 最简单的方式就是给定一个阈值40, 小于该阈值的, 则为B, 大于等于该阈值的, 则为A.
代码简单的写成:
当然, 这个分类的效果很一般, 大概正确率是 79%. 详细情况见图:
这种最简单的分类情况, 就是一个只有两个节点的树, 看起来就是:
在这里, 简单粗暴, 但效果并不太好. 于是, 我们烧着树, 吃着火锅唱着歌 "决策燃棵树, 树在锅下泣, 本来要生长, 奈何烧太急".
2. 为了让"决策树"的决策做的更好, 我们不能满足于"两条腿"的树, 于是, 我们给这棵树浇灌, 让它茁壮成长. 比如, 下面就是一棵长得更好的树:
问题在于怎样长出这么一棵"好看"的树出来呢? 其中一种方法是"贪婪", 也就是, 先设定好规则, 然后不断进行二分分裂, 知道满足预定的条件就截止.
3. "贪婪"算法还算不错, 但有其固有的缺陷, 也就是有可能陷入局部最优的情况. 一个可能的例子是, 对于某个节点, 再次分裂会使得整棵树的效果变差, 那么这个时候, 树的生长就该停止了. 但其实这个时候, 如果某个子节点再次生长(分裂), 效果能够更好. 比如:
比如上图, 在Case 0的时候, 尝试对AB进行分裂, 分裂成AB1和AB2, 见Case 1, 发现效果变差, 那么贪婪算法就会停止在这个分支的生长. 但其实如果对AB1继续分裂, 见Case 2, 这时效果有可能变得更好. 但贪婪算法一般不会尝试这一步, 于是乎, 错过了人生中更加美好的时刻.
4. 为了解决"贪婪"存在的一些问题, 一种办法是, 先"生成"一棵足够大的树, 然后对其进行剪枝,看看是否效果能够更好.如果能够更好的话, 就把"该枝"给剪了, 留下"残缺"的树. 大概的样子是:
在Case 0 的时候, 先生成一棵较大的树. 然后尝试着对AB2这个点进行剪枝, 剪去3和4两个叶子节点, 测试一下效果如何? 测试的结果是效果变差了, 于是该剪去的枝得保留. 然后呢尝试着对5,6 和7,8 等节点进行剪枝, 发现效果变好, 就继续,一直剪到保留AC为止, 就是Case 2的情况.
5. 怎么剪枝呢? 当然不能想上述一眼傻傻的一点点试, 有一个流行的方法叫"成本-复杂度剪枝". 大概是先生成一棵足够大的树T0, 然后将这棵树进行剪枝, 然后通过设定好的标准来衡量何时终止剪枝. 这个标准就是题主截图中的公式:
在这个公式中,
可以认为是一个参数, 用来调节树的大小以及树与数据拟合好坏之间的权衡. 这个值为0的话, 就是初始的 *大树T0* 了. 这个值越大, 树就越小, 被剪去的枝枝叶叶就越多. 而那个|T|是表示树的叶子节点的个数, +号后面的部分大概就可以理解了, 可以认为是树的复杂度.
6. 接下来说
这里面的内容. 首先说求和符号里面的内容, 就是
. 这个可以这么来理解. 一棵树有很多个节点, 对每个节点进行编号, 分别为1, 2, ..., t-1, t, t+1, ..., |T|. 那么对于编号为t的节点, 有两个属性, 这两个属性的"名字"分别取为
和
. 前一个好理解, 就是决策树在该节点 (在特定数据集中训练的时候) 的样本数. 而后一个呢, 在题主的截图中就是另外一个公式了, 它的学名叫交叉熵, 原始定义来自于香农的信息论, 在决策树发展过程中被引进来的. 对这个公式的理解在下面说, 这里先说一下在熵被引进来之前, 决策树用了另外一个叫"错误分类率", 或者简称"误分率" 的条件. 它大概指对于一个样本点来说, 它本来应该是A类的, 但却被分在了B类中. 误分率可以简单的认为前面"饼图"中的Not部分, 对于Class A节点来说就是Not A的占比, 对于Class B来说就是Not B的占比.
7. 通过前面的叙述, 大概能够总结出,
就是成本-复杂度的一个权衡, 当最小化这个标准的目标达成后, 就能够得到一棵不错的决策树.
8. 继续6对
的理解. 为了得到更好的效果, 前辈们对
进行改善, 把信息论中熵的概念给引入到决策树中来, 用熵来衡量决策树的好坏, 这个就是题主中所提到的公式:
这里的K是分类的类别, 表示的是多(K)分类的情况, 如果K=2的话就是二分类了.
从定义就能够看出来是指: 在节点t中, 属于k类的样本点的比例. 不理解的朋友们, 可以将其简化为二值分类, 在纸上画画就应该能够明白的. 交叉熵对误分率是一个大的改进, 至少两方面相比误分率是有优势的, 一是误分率是不可微的(可微是很重要地), 另外一个是效果要比直接误分率更好(如果效果更差, 当然不会被引进来了).
上图中mce是指误分率, 由于中间有个折点(在0.5的位置), 导致了其不可分. 而熵则是平滑的曲线.
差不多就这样了, 希望看到的朋友能够立即. 如有问题欢迎讨论.