以下内容是在学习过程中的一些笔记,难免会有错误和纰漏的地方。如果造成任何困扰,很抱歉。
| 地址 |
|---|
| 待定 |
前言
决策树是一种常见的机器学习方法,常用于分类问题,顾名思义,决策树是基于树结构来进行决策的,例如下面这颗在西瓜书中的一颗非常有辨识度的决策树。
定义:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树。
决策树思想的来源非常朴素,很像在代码中if-else里疯狂嵌套,决策过程中的最终结论对应了我们所希望的判定结果,其体现的是一种“分而治之”的策略,目的是为了产生一颗泛化能力强、处理未知属性能力强的一颗决策树,最早的决策树就是利用这类结构分割数据的一种分类学习方法。
同时决策树算法还可以用于连续值的变量中,例如
经历树化演变后
决策树构造的输入是一组带有类别标记的例子,构造的结果是一棵二叉树或多叉树。二叉树的内部节点(非叶子节点)一般表示为一个逻辑判断,如形式为a=aj的逻辑判断,其中a是属性,aj是该属性的所有取值:树的边是逻辑判断的分支结果。
一、决策树的构造
描述:决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。包含特征选择、决策树的生成和决策树的剪枝过程。
给定一个数据集,可以有多种决策树的构建方法。在有限的时间内构建最优的决策树往往是不现实的。因此,往往使用启发式算法来进行决策树的构造,例如,使用贪心算法对每个节点构造部分最优决策树。对于一个决策树的构建,最重要的部分在于其分支处理,即确定在每个决策节点处的分支属性。分支属性的选取是指选择决策节点上哪一个属性来对数据集进行划分,要求每个分支中样本的纯度尽可能高,而且不要产生样本数量太少的分支。不同算法对于分支属性的选取方法有所不同。
- 开始:
构建根节点,根据某个依据选择最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。 - 如果都被基本正确分类:
构建叶节点,并将这些子集分到所对应的叶节点去。 - 如果不能被基本正确分类:对这些子集选择新的最优特征,
继续对其进行分割,构建相应的节点,如此递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。 - 每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。
二、信息增益与信息熵
描述:添加描述信息。
首先从信息熵的概念讲起,物理学上,熵 Entropy 是“混乱”程度的量度。
-
从信息完整性描述
当系统的有序状态一致时,数据越集中的地方熵值越小,数据越分散的地方熵值越大。
-
从信息有序性描述
当数据量一致时,系统越有序,熵值越低;系统越混乱或者分散,熵值越高。
假如通过猜测的方法,想知道球赛中哪支足球队会是冠军,并且猜测的次数尽可能少,我们通常会采取二分法,两两比较。
如果球队数量是 16,我们需要问 4 次来得到最后的答案,那么世界冠军这条消息的信息熵就是 4。
如果有32个球队,准确的信息量应该是:
H = -(p1 * logp1 + p2 * logp2 + ... + p32 * logp32)
其中 p1, ..., p32 分别是这 32 支球队夺冠的概率。当每支球队夺冠概率相等都是 1/32 的时:
H = -(32 * 1/32 * log1/32) = 5
每个事件概率相同时,熵最大,这件事越不确定。例如“太阳东升西落”这句话非常确定,是常识,其含有的信息量很少,所以熵的值就很小。
信息增益是一个统计量,用来描述一个属性区分数据样本的能力。信息增益越大,则决策树就会越简洁,信息增益的程度通过信息熵的变化程度去衡量。
简单来说,信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
例如,今天出去玩,我需要考虑三个特征:去哪里玩、天气、有没有靓女,如果没有靓女,那我根本就不会出门,如果有靓女,那我必然是会出门的,那么有没有靓女这个特征对于我来说很重要,那信息增益就很高。
三、决策树中的算法
描述:添加描述信息。
- ID3:在决策树各个结点上对应信息增益准则选择特征,递归地构建决策树。
- ID4.5:与ID3算法相似,但是做了改进,将信息增益比作为选择特征的标准。
- C5.0:
- CART算法:分类与回归树,选择基尼指数来划分属性,CART的构建过程采用的是二分循环分割的方法,每次划分都把当前样本集划分为两个子样本集,使决策树中的节点均有两个分支。
四、剪枝
描述:剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得"太好"了,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险.。
决策树生成算法递归的产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知测试数据的分类缺没有那么精确,即会出现过拟合现象。
剪枝(pruning):从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型。
剪枝就是当α确定时,选择损失函数最小的模型,即损失函数最小的子树
当α值确定时
子树越大,往往与训练数据的拟合越好,但是模型的复杂度越高;
子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好;
损失函数正好表示了对两者的平衡。