一、什么是决策树
我们看下面这个生活中的例子:
一个女生正在面临择偶的判断,最终的决策是:进一步了解(Yes/No),她往往从如下方面进行考虑(年龄、颜值、收入、价值观匹配度)

这很像一棵树对不对,根据属性对数据一步一步进行筛选(划分),从而达到符合条件的值。
决策树
决策树(Decision tree)是基于已知各种情况(特征取值)的基础上,通过构建树型决策结构来进行分析的一种方式,是常用的有监督的分类算法
决策树组成
一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;
决策树就是把样本按属性一层层做“是/否”等测试往下分,直到落到某个叶子;根结点装的是全部样本,每条根到叶的路径就是一串判定规则,叶子给出最终预测。
决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。
上面案例是大多数女生通过定性的主观意识,把年龄放最顶层进行划分,那么如果我们想量化这个过程,该如何划分属性呢?
这里我们先引入信息熵、信息增益、信息增益率、基尼系数的概念。
信息熵
信息熵是度量样本集合纯度最常用的一种指标。
假定当前样本集合中第类样本所占的比例为
的值越小,纯度越高。
信息增益
信息增益是相对于属性/特征而言的
对于某个属性有个可能的取值,按此划分会产生个分支节点,第个分支节点包含了中所有在属性上取值为的样本,记作。在结合分支节点赋予权重,我们给出信息增益公式:
一般来说,信息增益越大,意味着划分的更“纯”,ID3决策树算法就是根据划分属性的。
信息增益率
由信息增益公式我们知道,其对可取值数目较多的属性有所偏好,为了减少这种偏好带来的不利影响,引入了增益率来选择最优划分属性。
其中为属性的固有值,属性数目越多,其值就越大,C4.5决策树算法就是采用此方式,先从候选划分属性中找到信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼系数
CART决策树算法引入了此方式来划分属性,数据集的纯度可用基尼值来度量
属性的基尼指数定义为
反映了从数据集中随机抽取两个样本,其类别标记不一致的概率,其值越小,数据集纯度越高。
我们在候选属性集合中,选择那个使得划分后基尼指数最小的属性作为最优划分属性,即
二、一些决策树算法
示例
小明的是否外出活动与天气条件的关系
编号 | 天气 (晴、阴、雨) | 温度 (热、中、冷) | 湿度 (高、中) | 风力 (强、弱) | 外出活动 (是、否) |
|---|
1 | 晴 | 热 | 高 | 弱 | 否 |
2 | 晴 | 冷 | 高 | 强 | 否 |
3 | 阴 | 热 | 高 | 弱 | 是 |
4 | 雨 | 冷 | 高 | 强 | 否 |
5 | 雨 | 冷 | 中 | 强 | 否 |
6 | 雨 | 中 | 高 | 强 | 否 |
7 | 阴 | 热 | 中 | 弱 | 是 |
8 | 晴 | 冷 | 高 | 弱 | 否 |
9 | 晴 | 中 | 中 | 强 | 是 |
10 | 雨 | 中 | 中 | 弱 | 是 |
11 | 晴 | 冷 | 中 | 强 | 是 |
12 | 阴 | 冷 | 中 | 强 | 是 |
13 | 阴 | 中 | 高 | 弱 | 是 |
14 | 雨 | 热 | 高 | 强 | 否 |
ID3算法
是一种基于信息增益的决策树生成算法,核心思想:每一步选择最能“减少不确定性”的属性来划分数据。
以上述例子,我们开始计算:
用以学习小明是否根据天气预测是否决定外出的决策树,以天气属性为例:
计算信息增益:
依次类推计算有所有属性的增益,找到最优的进行划分。
C4.5算法
在ID3基础上需要多算一下信息增益率:
依次类推计算所有属性的增益率,我们选择信息增益率最小的进行划分
引入IV来计算增益率的目的
回顾熵的定义:衡量分布的“不确定性”。
若所有样本都集中在某个取值上,如 则
于是
划分前后的数据分布没有变化,增益为0,说明这个属性对分类没有帮助
若每个取值都一样多,如 则
于是
此时划分后的每个分支都是纯的(熵为0),增益达到最大,但是这样模型毫无泛化能力,因为每个分支都意味着模型要去拟合更多局部规律(过拟合)
故我们引入
属性的取值越多,样本划分得越细碎、不确定性越大,因此 (本质是熵)越大。
C4.5 用它来惩罚那些取值多但没有实质预测价值的属性。
CART算法
CART的思路完全不同。它构建的是二叉树(Binary Tree),每次划分只分成两部分。
它根据任务类型采用不同的纯度指标:
分类任务:使用基尼指数(Gini Index)
回归任务:使用最小平方误差(MSE)
评论交流
欢迎留下你的想法