西瓜书第四章-决策树模型

本篇内容基于西瓜书与邹博视频总结而成

第一部分:有关信息论以及熵的构造

主要知识点:

  • 条件熵【与联合熵】
  • 互信息(信息增益)

我的理解:熵等价于不确定度

熵的构造:

  1. 基本想法:当一个不可能发生的事情发生了,包含的信息的不确定性大

太阳东升西落:这件事情不携带任何不确定性,而地震发生的不确定性还是有的,我们的目标就是找到事情发生的不确定性,并且使它发生的概率最小。

  1. 构造:首先希望满足概率可加性:加对数 (经典底为2,不过底数对于模型极值无意义) ,其次:概率越小\(\Rightarrow\) 不确定信息越多\(\Rightarrow\) 添负号

即:\(p\) 【事件发生的概率)】 | 度量:\(-ln(p)\)

熵:所有随机事件不确定度的综合,即求事件的期望

\[\sum_{i=1}^N p(i)\cdot lnp(i) \]

条件熵 H(Y|X)

条件熵的定义是:是在X已经发生的情况后,Y发生“新”的不确定度(熵)

根据上述定义可有:\(H(X,Y)-H(X)\)

【X,Y所有包含的不确定度 】 减去 【X所含的不确定度 】 等于 【在X的基础上的额外的不确定度】

如果画出文氏图就能更好的理解:

推导:

\[\begin{aligned} H(X, Y)-H(X)={} &-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x} p(x) \log p(x)\\ ={} & -\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x}\left(\sum_{y} p(x, y)\right) \log p(x)\\ ={} & -\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x, y} p(x, y) \log p(x) \\ ={} & -\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x)} \\ ={} & -\sum_{x, y} p(x, y) \log p(y | x) \end{aligned} \]

可以发现上面最后这个式子不是很友好,前面是联合概率,后面是条件概率,将上面的联合概率变为条件概率看你那个得到什么结果?

\[\begin{aligned} H(X, Y)-H(X)={}& -\sum_{x, y} p(x, y) \log p(y | x) \\ ={} & -\sum_{x} \sum_{y} p(x, y) \log p(y | x) \\ ={} & -\sum_{x} \sum_{y} p(x, y) \log p(y | x) \\ ={} & -\sum_{x} p(x) p(y | x) \log p(y | x) \\ ={} & \sum_{x} p(x)\left(-\sum_{y} p(y | x) \log p(y | x)\right) \\ ={} &\sum_{x} p(x) H(Y | X=x) \end{aligned} \]

上述公式其实很好理解,我们代入决策树的思考环境去思考这个问题。加入新的信息量是有两个。一是真实类别信息,二是\(A=(a_1,a_2,\dots,a_V)\) ,熵的英文为:\(information \ entropy\) ,\(D\) 代表数据集,根据标签\(target\)可将\(D\)分为\(K\)类。根据特征\(A\),可将\(D\)分为\(V\)类。

始终记住:熵的公式是根据真实类别计算的“纯度或不确定度

\[Ent(D)=-\sum_{k=1}^{K}p_kln(p_k) \]

信息增益:加入特征前后的熵的便函

根据定义:\(Ent(D)-Ent(D|A)\)

\[\begin{aligned} Ent(D)-Ent(D|A) ={} & Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) \\ \end{aligned} \]

这个等号在概念上很好理解,我们根据加入A后计算各个子节点的熵,因为每个子节点划分后样本数量不相同,所以要对这些熵进行加权处理。但是数学上又需要一个解释。

\[\begin{aligned} Ent(D|A) ={} &-\sum_{v, k} p\left(D_{v}, A_{i}\right) \log p\left(D_{v} | A_{i}\right) \\ ={} & -\sum_{v, k} p\left(A_{v}\right) p\left(D_{k} | A_{v}\right) \log p\left(D_{k} | A_{v}\right)\\ ={} & -\sum_{v=1}^{V} \sum_{k=1}^{K} p\left(A_{v}\right) p\left(D_{k} | A_{v}\right) \log p\left(D_{k} | A_{v}\right)\\ ={} & -\sum_{v=1}^{V} \frac{\left|D_{v}\right|}{|D |} \sum_{k=1}^{K} \frac{\left|D_{v k}\right|}{\left|D_{v}\right|} \log \frac{\left|D_{v k}\right|}{\left|D_{v}\right|} =-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) \end{aligned} \]

这里的公式比较复杂,在西瓜书中\(D^v\) 说明一开这个数据集是由特征\(A\) 进行划分,但是这又是熵的计算,熵是根据样本分类\(K\)计算的不确定度。所以这里数据集\(D_{vk}\) 是先对\(A\)进行划分,之后再在\(D_V\)的基础上对分类\(K\)进行划分。

第二部分 决策树生成策略

决策树采用的是自顶而下的递归方法,其基本思想是以信息熵为度量,选择熵值下降最快【信息增益最大】的属性作为第一个结点,之后的特征依次以此为标准生成决策树。终止条件:到叶子结点处的熵值为0,此时每个叶节点中的实例属于同一类。

如下图分析:

之前我们以信息熵作为度量,以信息增益作维选择特征的决策依据,其实还有其他的依据:

常用三种算法:

  • ID3:信息增益(已学)
  • C4.5:信息增益率(本节内容)
  • CART:Gini系数(本节内容)

信息增益率

信息增益有个缺点。假设西瓜分为两类,好瓜和坏瓜。50个样本,其中一特征有100个属性。若用此属性作为划分依据,划分后每个类别的熵都为0【因为每个类别的瓜都可以被分到一节点,还记得怎么计算增益率吗?是先用V进行划分,再用K进行划分。这里V划分结束后,K已经不用划分了,因为只可能是一种类别】

属性\(a\)的固有值:

\[\mathrm{IV}(a)=-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \log _{2} \frac{\left|D^{v}\right|}{|D|} \]

\(a\)越大\(\Rightarrow\) \(D^v\) 越均匀 \(\Rightarrow\) 熵值越大

信息增益率:

\[\text { Gain ratio }(D, a)=\frac{\operatorname{Gain}(D, a)}{\operatorname{IV}(a)} \]

基尼系数 Gini

基尼数据定义:随机抽取两个样本,类别不一样的概率。

\[\begin{aligned} \operatorname{Gini}(D) &=\sum_{k=1}^{| \mathcal{Y |}} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}} \\ &=1-\sum_{k=1}^{|\mathcal{Y}|} p_{k}^{2} \end{aligned} \]

基尼指数【对照于增益】:

\[\text { Gini } \operatorname{index}(D, a)=\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Gini}\left(D^{v}\right) \]

最优划分属性:

\[a_{*}=\underset{a \in A}{\arg \min } \operatorname{Gini} \operatorname{index}(D, a) \]

高阶认识:Gini系数就是信息熵的一阶泰勒近似

第三部分 算法调参

过拟合处理:

  1. 剪枝

  2. 随机深林


剪枝

西瓜书和邹博讲的剪枝手段不一样啊。

⭕【邹博思路】:

  • 决策树的评价

    纯结点的熵为:\(H_p=0\) ,最小

    均结点的熵为:\(H_u=lnk\) ,最大

    对所有叶节点的熵进行求和,值越小,说明样本的分类越精细。

    考虑到每个结点的样本数目是不一样的,所以评价函数采用样本加权求熵和

    评价函数:

    \[C(T)=\sum_{t \in l e a f} N_{t} \cdot H(t) \]

    将此作为损失函数。

  • 正则化考虑:以叶子的数目作为复杂度

    损失函数:

    \[C_{\alpha}=C(T)+\alpha|T_{leaf}| \]

目标:求在保证损失不变的情况下,模型的复杂度是多少?(剪枝系数)

\[\alpha = \frac{C(r)-C(R)}{<R_{leaf}>-1} \]

剪枝算法:

  • 对于给定的决策树T:
    • 计算所有内部节点的剪枝系数;
    • 查找最小剪枝系数的结点,剪枝得决策树\(T_k\)
    • 重复以上步骤,直到决策树\(T\),只有1个结点;
    • 得到决策树序到 \(T_0T_1T_2 \dots T_k\)
    • 使用验证样本集选择最优子树

注:当用验证集做最优子树的标准,直接用之前不带正则项的评价函数:\(C(T)=\sum_{t \in l e a f} N_{t} \cdot H(t)\)

⭕【西瓜书

西瓜书的剪枝手段主要是通过验证集去选择,并且把剪枝分为预剪枝后剪枝

  • 预剪枝:
  • 后剪枝:在决策树生成后进行剪枝操作

注:预剪枝基于的是贪心算法,只要验证集精度提高了,我就剪枝,所以有欠拟合的风险。而后剪枝是自底向上对所有非叶结点进行逐一考察,时间开销大的多,但是泛化能力提高。

连续值和缺失值处理

连续值处理:

给定样本集\(D\)和连续属性\(a\),假定\(a\)\(D\)上出现了\(n\)个不同的取值,将这些值从小到大进行排序,记为\(\{a_l,a_2..,a_n\}\).基于划分点\(t\)可将\(D\)分为子集\(D_t^-\)\(D_t^+\),其中\(D_t^-\)包含那些在属性\(a\)上取值不大于\(t\)的样本,而\(D\)则包含那些在属性\(a\)上取值大于\(t\)的样本。我们可考察包含 \(n-1\) 个元素的候选划分点集合:

\[T_{a}=\left\{\frac{a^{i}+a^{i+1}}{2} | 1 \leqslant i \leqslant n-1\right\} \]

缕一缕:一个结点有\(n-1\)个候选划分点:

综上公式改为:

\[\begin{aligned} \operatorname{Gain}(D, a) &=\max _{t \in T_{a}} \operatorname{Gain}(D, a, t) \\ &=\max _{t \in T_{a}} \operatorname{Ent}(D)-\sum_{\lambda \in\{-,+\}} \frac{\left|D_{t}^{\lambda}\right|}{|D|} \operatorname{Ent}\left(D_{t}^{\lambda}\right) \end{aligned} \]

缺省值:

我们需解决两个问题:(1)如何在属性值缺失的情况下进行划分属性选择?(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

无缺失值样本所占的比例:

\[\rho=\frac{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in D} w_{\boldsymbol{x}}} \]

无样本下第k类的比例和第v个属性的比例:【与之前的公式相同】

\[\begin{aligned} \tilde{p}_{k} &=\frac{\sum_{\boldsymbol{x} \in \tilde{D}_{k}} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}} \quad(1 \leqslant k \leqslant|\mathcal{Y}|) \\ \tilde{r}_{v} &=\frac{\sum_{\boldsymbol{x} \in \tilde{D}^{v}} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}} \quad(1 \leqslant v \leqslant V) \end{aligned} \]

\(w_x\)是每个样本\(x\)的权重,根结点中的样本权重为1。

增益公式推广为:

\[\begin{aligned} \operatorname{Gain}(D, a) &=\rho \times \operatorname{Gain}(\tilde{D}, a) \\ &=\rho \times\left(\operatorname{Ent}(\tilde{D})-\sum_{v=1}^{V} \tilde{r}_{v} \operatorname{Ent}\left(\tilde{D}^{v}\right)\right) \end{aligned} \]

多变量决策树

⭕同一个特征可以进行多次判别:

⭕一般而言,分类边界为:轴平行(axis-parallel),但是也可以将线性分类器作为决策标准,可以产生"斜"这的分类边界。

技巧:可利用斜着的分裂边界简化决策树模型

posted @ 2019-11-06 20:02  王家盛  阅读(679)  评论(0编辑  收藏  举报