机器学习-决策树

决策树系列算法介绍和实战,未完待续!

一、概述

决策树算法的大致流程如下:

在这里插入图片描述

注:下图的数据集为后续操作的训练数据集

img

二、特征选择(feature selection)

特征是机器学习中自变量的别名。特征选择就是在一系列自变量中选择出对分类最有用的变量。

特征选择是一个较大知识领域,主要目的是筛选出对项目目标有帮助的样本属性。在决策树中,特征选择有三大主流方法,分别是信息增益增益率基尼系数。其中信息增益和增益率都是由Quinlan创造的。

参考西瓜书第十一章特征选择与稀疏学习

1. 信息增益

信息增益参考文章

信息量

随机事件x,发生概率的对数的相反数。或者随机事件x带给我们的信息量。用I(x)表示,单位是bit 比特。
I ( x i ) = − log ⁡ 2 p ( x i ) I\left(x_{i}\right)=-\log _{2} p\left(x_{i}\right) I(xi)=log2p(xi)

例如,事件x;掷骰子,六点朝上。概率P(x)=1/6,I(x)=2.58(bit)。以2为底,表示二进制(两种状态)。

注意,下列计算结果均为近似值,这里以等号表示

事件y;小明今天吃饭了。P(x)=99.99%. I(y)=0.00015(bit)

事件z:某沿海地区发生海啸 P(z) = 0.01% I(z)=13.288(bit)

有关系式可以得出,概率与信息量呈负相关关系。一件事发生的概率越小,其信息量越大。在现实生活中也是一样,比如有人对你说,你们明天放长假,你肯定会想,这个信息量有点大。

信息熵(Information Entropy)

统计学角度:

设随机变量X取值于 x i ∣ i = 1 , 2 , . . . , n {x_i|i=1,2,...,n} xii=1,2,...,n, x i x_i xi出现的概率为 p ( x i ) p(x_i) p(xi),则有 ∑ i = 1 n p ( x i ) = 1 \sum_{i=1}^np(x_i) =1 i=1np(xi)=1
那么所有可能事件 x i x_i xi,的自信息量 I ( x i ) I(x_i) I(xi)的加权平均定义为随机变量X的信息熵,简称,记为 H ( X ) H(X) H(X)。即:

H ( X ) = ∑ i = 1 n p ( x i ) I ( x i ) = − ∑ i = 1 n p ( x i ) log ⁡ 2 p ( x i ) H(X) = \sum_{i=1}^np(x_i)I(x_i) = -\sum_{i=1}^np(x_i)\log_2p(x_i) H(X)=i=1np(xi)I(xi)=i=1np(xi)log2p(xi)

为方便起见,约定 p ( x i ) = 0 p(x_i)= 0 p(xi)=0时, p ( x i ) log ⁡ 2 p ( x i ) = 0 p(x_i)\log_2p(x_i) = 0 p(xi)log2p(xi)=0

人工智能角度:

信息熵是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第 k k k类样本所占比例为 p k ( k = 1 , 2 , . . . , y ) p_k (k=1,2,...,y) pk(k=1,2,...,y)。则样本集合 D D D的信息熵定义为:

E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log ⁡ 2 p k Ent(D) = - \sum_{k=1}^{|y|}p_k\log_2p_k Ent(D)=k=1ypklog2pk

显然 E n t ( D ) Ent(D) Ent(D)的值越小,则 D D D的纯度越高。

假定西瓜的属性“色泽”有三个可能的取值{“青绿”“乌黑”“浅白”},若使用“色泽”来对样本集 D D D进行划分,则会产生三个分支结点,其中第 v v v个分支结点包含了 D D D中所有在“色泽”上取值为 a v a^v av的样本,记为 D v D^v Dv。现在可以根据上式分别计算出的信息熵。
D 青 绿 = − ( 3 6 log ⁡ 2 3 6 + 3 6 log ⁡ 2 3 6 ) = 1.00 D^{青绿} = -(\frac{3}{6}\log_2\frac{3}{6}+\frac{3}{6}\log_2\frac{3}{6})=1.00 D绿=(63log263+63log263)=1.00
D 乌 黑 = − ( 4 6 log ⁡ 2 4 6 + 4 6 log ⁡ 2 4 6 ) = 0.918 D^{乌黑} = -(\frac{4}{6}\log_2\frac{4}{6}+\frac{4}{6}\log_2\frac{4}{6})=0.918 D=(64log264+64log264)=0.918
D 浅 白 = − ( 1 5 log ⁡ 2 1 5 + 4 5 log ⁡ 2 4 5 ) = 0.722 D^{浅白} = -(\frac{1}{5}\log_2\frac{1}{5}+\frac{4}{5}\log_2\frac{4}{5})=0.722 D=(51log251+54log254)=0.722
现在通过“色泽”属性,我们将样本集划分为三个分支结点 D 青 绿 、 D 乌 黑 、 D 浅 白 D^{青绿}、D^{乌黑}、D^{浅白} D绿DD,但由于它们包含的样本数不同,在所占比例不同,所以需要对每个分支结点赋予权重 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv,即样本数越多的分支节点影响越大。

信息增益(Information gain)

于是可计算出用属性“色泽”对样本集 D D D进行划分所获得的“信息增益”。从下方公式可以得出信息增益的现实意义:主要是划分前的样本集的信息熵减去划分后的样本集信息熵的加权和。

Gain ⁡ ( D , a ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) \operatorname{Gain}(D, a)=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

著名的ID3决策树学习算法就是以信息增益为准则来选择划分属性。ID3全称为Iterative Dichotomiser 3(迭代二分类器),分类器是一切的根源啊,神经网络也可以通过简单的线性分类器推导得出。
ID3决策树参考资料

2. 增益率(gain ratio)

增益率的出现可能是源于对信息增益的缺陷弥补。设想这样一种情况,将数据集的编号也作为一个属性,计算其信息增益。
Gain ⁡ ( D , a ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) \operatorname{Gain}(D, a)=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

可以很容易得出下面的结果,因为根据编号划分,n个样本就被划分为n个分支结点,分支只有一个样本,纯度已经达到最大。
Gain ⁡ ( D , 编 号 ) = 0.998 − ∑ v = 1 V ∣ 1 ∣ ∣ 1 ∣ ( − ∑ k = 1 ∣ y ∣ 1 log ⁡ 2 1 ) = 0.998 \operatorname{Gain}(D, 编号)=0.998-\sum_{v=1}^{V} \frac{\left|1\right|}{|1|} (- \sum_{k=1}^{|y|}1\log_21) = 0.998 Gain(D,)=0.998v=1V11(k=1y1log21)=0.998

所以信息增益准则对取值数目较多的属性有所偏好,为了解决这一问题,信息增益的作者又创造了增益率。

增益率定义为:
Gain-ratio ⁡ ( D , a ) = Gain ⁡ ( D , a ) I V ( a ) \operatorname{Gain-ratio}(D, a)=\frac{\operatorname{Gain}(D,a)}{IV(a)} Gain-ratio(D,a)=IV(a)Gain(D,a)

其中

I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ IV(a) = -\sum_{v=1}^V\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|} IV(a)=v=1VDDvlog2DDv

称为属性a的“固有值”(intrinsic value)。属性a的可能取值数目越多(即V越大),则 I V ( a ) IV(a) IV(a)的值通常会越大。

著名的C4.5决策树算法不直接使用信息增益,而是使用“增益率”来选择最优划分属性。因为增益率准则对可取值数目较少的属性有所偏好,所以C4.5算法使用启发式规则,先从候选划分属性中找出信息增益率高于平均水平的属性,再从中选择增益率最高的。

3. 基尼指数(gini index)

CART(Classification and Regression Tree)决策树使用基尼指数来选择划分属性。CART决策树既可以分类也可以回归哦

数据集的纯度可以用基尼值来度量,基尼值
Gini ⁡ ( D ) = ∑ k = 1 ∣ Y ∣ ∑ k ′ ≠ k p k p k ′ = ∑ k = 1 ∣ Y ∣ p k − ∑ k = 1 ∣ Y ∣ p k 2 = 1 − ∑ k = 1 ∣ Y ∣ p k 2 . p k ′ = 1 − p k \begin{aligned} \operatorname{Gini}(D) &=\sum_{k=1}^{|\mathcal{Y}|} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}} \\ & =\sum_{k=1}^{|\mathcal{Y}|}p_k - \sum_{k=1}^{|\mathcal{Y}|}p_k^2 \\ &=1-\sum_{k=1}^{|\mathcal{Y}|} p_{k}^{2} . \end{aligned} \\ p_{k^{\prime}} = 1- p_k Gini(D)=k=1Yk=kpkpk=k=1Ypkk=1Ypk2=1k=1Ypk2.pk=1pk

直观看出, Gini ⁡ ( D ) \operatorname{Gini}(D) Gini(D)反应了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此 Gini ⁡ ( D ) \operatorname{Gini}(D) Gini(D)越小,数据集D的纯度越高。因此,属性a的基尼指数
Gini ⁡ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Gini ⁡ ( D v ) \operatorname{Gini} i n d e x(D, a)=\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Gini}\left(D^{v}\right) Giniindex(D,a)=v=1VDDvGini(Dv)

我们选择使得划分后基尼指数最小的属性作为最优划分属性,即:

a ∗ = arg ⁡ min ⁡ a ∈ A  Gini-index  ( D , a ) a_{*}=\underset{a \in A}{\arg \min } \text { Gini-index }(D, a) a=aAargmin Gini-index (D,a)

三、生成决策树

ID3算法

缺点:

  • 采用信息增益作为划分选择,信息增益对可取值数目较多的属性有所偏好。
  • 没有考虑连续性值的属性以及有缺失值的属性
  • 没有考虑过拟合

C4.5

基于ID3基础上进行改进

  • 使用信息增益率作为划分选择,克服了对可取值数目较多的属性的偏好。
  • 能处理离散型和连续型的属性值的训练数据,即将连续型的属性进行离散化处理。
  • 能够处理具有缺失属性值的训练数据
  • 构造决策树之后进行剪枝操作,考虑过拟合。

缺点:

  • 增益率准则对可取值数目较少的属性有所偏好
  • C4.5生成多叉树,效率没有二叉树高
  • 只能用于分类,不能用于回归
  • 使用了熵模型,有大量耗时的对数运算,如果是连续值还有大量的排序运算,运行效率较低。

对比

算法作用树结构特征选择连续值处理缺失值处理剪枝分类变量样本偏好
ID3分类多叉树信息增益不支持不支持不支持离散变量
C4.5分类多叉树增益率支持支持支持离散和连续变量小样本
CART分类和回归二叉树基尼指数支持支持支持离散和连续变量大样本

四、剪枝

解决决策树过拟合的问题,将训练集的一些自身特性当作全部数据都具有的特征。

预剪枝

在生成决策树的过程中,若进行划分能带来验证集准确率的提高,则划分节点。否则不划分节点。虽然当前分支的划分不会提升泛化性能,但在其基础上进行的后续划分却有可能显著提升性能,可能会造成欠拟合。

后剪枝

在生成决策树后,从下到上,对非叶子节点进行判断,若将其替换为叶子节点能带来验证集准确率提升,则替换。

一般情况下,后剪枝决策树欠拟合风险很小,泛化性能要优于预剪枝决策树,但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对所有非叶节点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值