- 决策树思想
- 特征选择
- 信息增益与ID3
- 信息增益率与C4.5
- 基尼指数与CART
- ID3、C4.5与CART的对比
- 决策树剪枝
- 对连续值的处理
- 对缺失值的处理
- 多变量决策树
两人去轩辕台路上遇雨,郭靖道:那么咱们快跑。黄蓉摇了摇头:靖哥哥,前面也下大雨,跑过去还不是一般的淋湿?郭靖笑道:正是。黄蓉心中却忽然想起了华筝之事:“前途既已注定了是忧患伤心,不论怎生走法,终究避不了、躲不开,便如长岭遇雨一般。”当下两人便在大雨中缓缓行去。# 1903 <长岭遇雨>
一、决策树(Decision Trees)
决策树学习算法的构造思想很接近于人做决策的行为,通过 if-then-else 的决策规则来得到结论或是进入下一次决策中。
举个例子,例如中午到饭点了,我需要决定出去吃还是点外卖,
- 第一个 if 是外面是否下雨了,如果没下雨,(then)那就出去吃,做出决定,决策结束。(else)但是如果下雨了,就再看是否有人约,这就是第二次决策,依然是 if-then-else 。
- 如果有人约,那么出去吃,决策结束。没人约,那就点外卖,并且没有了其他的 if 条件可以影响决策的,同样的,决策结束。
每一次的做决策的结果都是得到结论,或是导出进一步决策的问题,其考虑范围是在上一次决策结果的限定范围之内,例如在 “是否下雨 --> 下雨” 之后再判断 “是否有约--> ?”,则只是在考虑下雨时是否有约的情况。
决策树学习算法的目的就是创建一种模型,从数据特征中依据特征的重要程度一步步预测目标样本的值。
决策树学习算法通常包括特征选择、决策树生成和剪枝三个步骤。
二、特征选择
特征选择的标准有信息增益、信息增益率和基尼指数, 特征选择决定用哪个特征划分特征空间。在介绍信息增益之前,先来看信息熵和不纯度。
2.1、信息熵与不纯度
熵 本来是表示分子状态混乱程度的一个物理量,也可以作为一个系统的混乱程度的标准; 信息 是某种确定性的增加 (你掌握了某种信息,该事物的行为对你而言就可以预见,例如你上班的地方每正点和半小时有一趟车,那你在家的时候就大致可以估计到下一次车什么时候来,你赶不赶的上)。
而 信息熵 可以理解为某种信息不稳定程度,即信息熵越小,事件越稳定,也就是发生概率越大,搞清楚这个事件所需要的信息也就越小
香农用信息熵的概念来描述信源的不确定度。
而这个不稳定程度,可以理解为“ 不纯度 ”,数据的纯度高,意味着在数据集里我们要分类的某一种类型的占比很高,会更容易区分。例如在一个集合中,结果A占100%,B占0%,这个数据集就很纯(不纯度就很低),我们在进行分类时根本不需要费心。而在这个集合中,结果A占50%,B占50%,这个数据集就很不纯(不纯度很高),在我们进行分类时,就很难过了,无异于随机猜测。
2.2、信息增益-ID3
在有了不纯度的概念以后,我们只需要将决策分类之后的不纯度和分类前的不纯度相减,就可以得到一种纯度提升值的概念。我们称之为 信息增益 。
这里给出具体的数学表达。
假定当前样本集合 中第 k 类样本所占的比例为 ,则 的信息熵定义为
约定,当为0时,。 的最小值为0,最大值为 .
假定离散属性 有 个可能的取值 ,在上面吃饭的例子中, 就有两种可能的取值 。
如果以 属性来对数据集 进行划分,就会产生 个分支结点,其中第 个分支结点包含了 中所有在属性 上取值为 的样本,记为 。
什么意思呢,再拿吃饭来讲,我们选取 是否下雨 这个属性来划分整个数据集(假设我每天中午都有记录),就会产生 下雨 和 没下雨 两个分支结点,拿第一个结点 下雨 来说,第一个结点包含了我吃饭这个记录里面所有下雨的情况,即吃饭数据集中 是否下雨 属性值为 下雨 的样本。就是将数据集根据属性的取值分为 份,每一份对应一种情况,就对应第 种情况。
解释这么多,是因为我在第一次看的时候绕进去了,如果专业看就不用看我这些乱七八糟的例子,自己理解就行。
利用信息熵的公式(1),我们可以计算出 的信息熵,再考虑到不同分支结点所包含的样本数目不同,我们再给 的信息熵加上各自结点的权重 。而根结点是包括 中所有样本的,同样可计算出根节点的信息熵,这样我们就可以得到以属性 对样本集 进行划分时所获得的 信息增益(information gain):
著名的 ID3决策树学习算法 就是以信息增益为准则来划分属性。
这里还是以西瓜为例好了。
今天在肯德基看了一天书,回来听朋友吐槽同事和直男。感觉有这么多不好的东西,人和事物,但这也正好是世界的可爱之处呀!#190311
这里是一段计算各个特征信息增益的过程,大晚上的用Markdown写公式会头疼睡不着的,明天白天补充
需要注意的有两点:
1、在选择下一结点的时候为什么不直接使用信息熵,谁小就用谁,而采用信息增益多做一步减法。
2.1、在西瓜书中,选择根结点时,比较信息增益,这个时候根结点的上一结点(不存在,但体现在计算中就是 )选择的是全样本,直接分为 和 两类来直接计算信息熵。
2.2、在按纹理划分完后,计算 色泽信息增益那一步怎么都算不对,不知道哪里有问题
2.3、信息增益率与C4.5
讲了这么多 ID3决策树学习算法,但是他有问题,而且很大。在 E1 里面我们有介绍归纳偏好,而 ID3 就是很明显的对可取值数量较多的特征有偏好。
当我们的数据里面有一项是身份信息的时候,m个样本就对应 这个特征有m种可取值,那么在计算信息增益的时候, 会始终为1,这时候 就为 0,那么无关于其他因素,这时候的信息增益就是 ,即此时最大的信息增益(也就是此时选特征为结点的信息熵为0)。
很多时候这种偏好是没有意义的,只能造成树生成的时候浪费内存资源。
为了解决这一问题,ID3 算法的创造者又对他进行了改进,采用 信息增益率 来代替信息增益作为特征选择的准则。
信息增益率 就是用信息增益除一个 。
其中
称为属性 的固有值(instrinsic value),属性 的可取值数目越多(即 越大),其固有值 通常越大。这样就消除了使用信息增益带来的归纳偏好问题。
但但但是,说了每一种算法都会存在归纳偏好,那采用信息增益率的这种算法它的归纳偏好是什么呢?
它所带来的结果是消除了信息增益的偏好,而指向了相反的一面,信息增益率对可取值数目较少的特征有所偏好。
到这里你可能觉得,没完没了了(╯‵□′)╯︵┴─┴ 。所以,C4.5算法 并不是简单的直接选择信息增益率最大的候选划分特征,而是启发式的:先从候选划分特征中找出信息增益高于平均水平的特征,再从中选择信息增益率最高的
2.4、基尼指数与CART
基尼指数
后续内容,
三种特征选择方法的表格比较
决策树剪枝(预剪枝和后剪枝,生成时自上而下和生成后自下而上)
对连续值的处理
对缺失值的处理
多变量决策树