恰西瓜 [ 2 ] 决策树

Decision

本文仅记录自身学习,本着知识分享的目的,放出来供大家参考交流,故请勿转载。文中若有错误,望不吝赐教。

【一】 决策树

1.1 基本流程

决策树是基于树形结构来进行决策,通过给定训练数据集学得一个模型,用以对新示例进行分类。决策过程中提出的每个 判定问题 都是对某个属性的验证,每个验证的结果或者导出最终结论,或者导出进一步的判定问题。一般的,一棵决策树包含一个根节点,若干个内部节点(表征一个特征或属性)和若干个叶节点(表示一个类);

输入:

  • 训练集 \(D=\{(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)\}\)
  • 属性集 \(A= \{a_1,a_2,\dots,a_d\}\)
TreeGenerate(D,A){
    生成结点 node ;
    if D 中样本全属于同一类别 C then{
        将 node 标记为 C 类叶结点;
        return //递归返回,情形(1)
    }
    end if
    
    if A = 空集 || D 中样本在 A 上取值相同 then{
        将 node 标记为叶节点,其类别标记为 D 中样本数最多的类;
    	return	//递归返回,情形(2)
    }
    ende if
    //划分策略 语句,最重要!
        从 A 中选择“最优”划分属性 a*;
        
    for a* 的每一个值 a^v, do{
            为 node 生成一个分支;
            令 Dv 表示 D 中在a*上取值为 a_*v的样本子集;
            if	Dv 为空 then{
                将分支节点标记为叶节点,其类别表记为 D中样本最多的类;
                return	//递归返回,情形(3)
            }else{
                以 TreeGenerate(Dv,A\{a*}) 为分支节点//从A集合中去掉 a*
            }
            end if
        }end for
}

输出:以 node 为根节点的一棵决策树

1.2 划分选择

决策树学习的关键在于如何选择最优划分属性,一般而言,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的 purity 越来越高。 那么该如何定量的刻画这个“纯度”呢?

1.2.0 离散信源及其信息测度(本节主要介绍信息论,可跳过)

我将首先介绍信源,简要列出信源的统计特性和数学模型,以及离散信源的信息测度-熵 及其性质。

信源是信息的来源,是产生消息或消息序列的源泉,信息是抽象的,而消息是具体的,他不是信息本身,却携带者信息。

  • 信源输出的消息用随机变量描述

假设我们仍一颗质地均匀的骰子,研究其落下后朝上一面的点数,每次实验结果必定是\(一点,二点\dots六点\)中的某一面朝上。

这种信源输出的消息是:

\[\cdots\\ \alpha_i=\{朝上的面是\ i\ 点\}\ i=1,\cdots,6\\\cdots \]

这六个不同的消息构成两两互不相容的基本事件集合,样本空间为符号集\(A=\{\alpha_1,\cdots,\alpha_6\}\)由大量实验表明,个消息都是等概率出现的为\(\frac{1}{6}\),因此,可以用一个离散型随机变量\(X\),而\(X\)的概率分布就是个消息出现的先验概率,来描述这个信源输出的消息:

\[\left[\begin{matrix} X\\ P(x) \end{matrix}\right]= \left[\begin{matrix} \alpha_1 & \alpha_2&\alpha_3&\alpha_4&\alpha_5&\alpha_6\\ \frac{1}{6}&\frac{1}{6}&\frac{1}{6}&\frac{1}{6}&\frac{1}{6}&\frac{1}{6}& \end{matrix}\right]\\且满足,\sum_{i=1}^6P(\alpha_i)=1 \]

上式表明信源的概率空间必定是一个完备集。由上式可推广出最基本的离散信源模型如下:

\[\left[\begin{matrix} X\\ P(x) \end{matrix}\right]= \left[\begin{matrix} \alpha_1 & \alpha_2&\cdots&\alpha_q\\ P(\alpha_1)&P(\alpha_2)&\cdots&P(\alpha_q)& \end{matrix}\right]\\且满足,\sum_{i=1}^qP(\alpha_i)=1 \]

如果信源给定,其相应的概率空间也就给定,反之若概率空间给定,则相应信源相当于给定,所以概率空间能表征离散信源的统计特性,因此有时也把概率空间称为信源空间

同理可以定义连续信源空间

\[\left[\begin{matrix} X\\ p(x) \end{matrix}\right]= \left[\begin{matrix} (a,b)\\ p(x) \end{matrix}\right]\\且满足,\int_{a}^bp(x)=1 \]

  • 信源的输出可以用N维随机矢量\(X=(X_1\ X_2\dots\ X_N)\)来描述,其中N可以为有限正整数或可列个,有时又成\(X\)随机序列,我们假设信源输出的是平稳的随机序列,也就是序列的统计性质与时间增量无关。

平稳信源又分为无记忆信源和有记忆信源,在某些简单的离散平稳信源情况下,信源先后发出的一个个符号彼此是统计独立的,则\(N\)维随机矢量的联合概率分布满足:

\[\begin{align*} P(X)&=P(X_1\ X_2\cdots X_N)\\ &=P_1(X_1)P_2(X_2)\cdots P_N(X_N)\\&=\prod_{i=1}^NP(X_i)\\ \end{align*} \]

即当不同时刻的离散随机变量又取自同一个符号集

\[A:\{a_1,a_2,\cdots ,a_q\},则有\\ P(x=\alpha_i)=\prod_{i_k=1}^qP(a_{i_k}),\alpha_i=(a_{i_1}\cdots a_{i_k}) \]

是N维随机矢量的一个取值.

由符号集\(A:\{a_1,a_2,\cdots ,a_q\}\)与概率测度\(\leq P(a_{i_k}\leq1(i_k=1,\cdots ,q)\)构成一个概率空间

\[\left[\begin{matrix} X\\ P(x) \end{matrix}\right]= \left[\begin{matrix} a_1 & a_2&\cdots&a_q\\ P(\alpha_1)&P(\alpha_2)&\cdots&P(\alpha_q)& \end{matrix}\right]\\且满足,\sum_{i=1}^qP(a_i)=1 \]

我们称由信源空间\([X,P(x)]\)描述的信源\(X\)离散无记忆信源 。这种信源在不同时刻发出的符号之间是无依赖的,彼此统计独立的。我们把此信源X 所输出的随机矢量\(X\)所描述的信源称为 离散无记忆信源\(X\)的N次扩展信源。离散无记忆信源的N此扩展信源的数学模型是X信源空间的N重空间

\[\left[\begin{matrix} X^N\\ P(\alpha_i) \end{matrix}\right]= \left[\begin{matrix} \alpha_1 & \alpha_2&\cdots&\alpha_{q^N}\\ P(\alpha_1)&P(\alpha_2)&\cdots&P(\alpha_{q^N})& \end{matrix}\right] \]

其中,\(\alpha_i=(a_{i_1}\cdots a_{i_k})\ \ \ \ (i_1,i_2,\cdots ,i_N=1,2,\cdots ,q)\)并满足\(0\leq P(\alpha_i) \leq 1\)

\[P(\alpha_i)=P(a_{i_1}a_{i_2}\cdots a_{i_N})=\prod_{i_k=1}^qP(a_{i_k})\\ \sum_{i=1}^{q^N}P(\alpha_i)=\sum_{i=1}^{q^N}\prod_{i_k=1}^qP(a_{i_k})=1 \]

离散信源的信息熵

首先我们直观的定义信息量为:

\[\begin{align} 收到某消息获得的信息量 &=不确定性减少量\\ &=(收到此消息前关于某件事的不确定性)-(收到此消息后关于某事件发生的不确定性)\\ &=信源输出的某消息中所含有的信息量 \end{align} \]

我们也知道,事件发生的不确定性与事件发生的概率呈负相关关系,对于发生概率等于1的必然事件,就不存在不确定性,某事件发生所含有的信息量应该是该事件发生的先验概率的函数

\[I(a_i)=f[P(a_i)]=log\frac{1}{P(a_i)}=-log_2P(a_i)\ (bit) \]

式中,\(P(a_i)\)是时间ai发生的先验概率,而I表示时间ai发生所含有的信息量,我们称之为 ai 的自信息量.代表某一信源发出某一消息所含有的信息量。

我们定义自信息的数学期望为信源的平均自信息量,即

\[H(X)=E[log\frac{1}{P(a_i)}]=-\sum_{i=1}^qP(a_i)logP(a_i)\ 称为信息熵 \]

信源的信息熵H 是从整个信源的统计特性来考虑的,他是平均意义上来表征信源的总体信息测度的,对于确定的信源,其信息熵是一个确定的数值。

信息熵的基本性质
  • 对称性

当变量的顺序任意呼唤是,熵函数的值不变:\(H(p_1,p_2\cdots ,p_q)=\cdots=H(p_q,p_1,\cdots,p_{q-1})\)

  • 确定性

从总体来说,信源虽然有着不同的输出消息,但他只有一个消息几乎必然出现,而其他消息都是几乎不可能出现,那么此心愿就是个确知信源,熵为零。

  • 非负性

显然,易证,观察得知,证明略,由文章篇幅限制证明留做习题,易见 qwq

  • 扩展性

\[因为 {lim}_{\varepsilon \rarr0}\varepsilon log\varepsilon=0\\ lim_{\varepsilon\rarr0}H_{q+1}(p_1,p_2\cdots,p_q-\varepsilon,\varepsilon)=H_q(p_1,\cdots,p_q) \]

信源消息集中的消息数目增多时,若这些消息对应的概率很小,则信源的熵不变,这是信源总体平均性的一种体现。

  • 可加性

独立统计信源X和Y的联合信源的熵等于分别熵之和:\(H(XY)=H(X)+H(Y)\)

  • 强可加性

两个相互关联的信源X,Y的联合信源的熵等于:\(H(XY)=H(X)+H(Y|X)\)

其中,条件熵公式为:\(\sum_{i=1}^np_iH_m(p_{i1},\cdots,p_{im})=\sum_{i=1}^np_iH(Y|X=x_i)=H(Y|X)\)

  • 递增性
  • 极值性

\(H(p_1,\cdots,p_q)\leq H(1/q,\cdots,1/q)=logq\),又称为最大离散熵定理

  • 上凸性

熵函数H(P)是概率矢量P的严格上凸函数,即对于任意\(0<\theta<1\),有

\[H[\theta P_1+(1-\theta)P_2]>\theta H(P_1)+(1-\theta)H(P_2) \]

1.2.1 信息增熵

由上节,我们假定当前样本集合 \(D\) 中第\(k\)类样本所占的比例为 \(p_k,(k=1,2,\cdots,|\gamma|)\),则 \(D\)信息熵(entropy)定义为

\[Ent(D)=-\sum_{k=1}^{|\gamma|}p_klog_2p_k\tag{2.1} \]

  • 易知 \(min\ Ent(D)=0,max\ Ent(D)=log_2|\gamma|\),Ent(D)的值越小,则D的纯度越高。

\[\begin{align} max\ Ent(D)&=-\sum_{k=1}^{|\gamma|}p_klog_2{p_k}\\ &\because 混乱都最大的情况下,每一特征都自成一种分支\\ &=-|\gamma|\frac{1}{|\gamma|}log_2\frac{1}{|\gamma|}\\ &=log_2|\gamma| \end{align}\tag{2.2} \]

假定离散属性 a 由 V 个可能的取值\(\{a^1,a^2,\cdots,a^V\}\),若用 特征a 来对样本集 D 进行划分,则会产生 V 个分支节点,其中第v个分支节点包含了 D中所有在属性 a 上取值为 \(a^v\) 的样本,记为\(D^v\),由(2.1)式可计算出 \(D^v\) 的信息熵,再考虑到不同的分支节点所包含的样本数也不同,给分支节点赋予权重\(\frac{|D^v|}{|D|}\), 于是可计算出用属性 a 对样本集 D 进行划分所获得的信息增益(information gain)

\[Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v)\tag{2.3} \]

  • 每次划分后信息增益越大,则意味着使用属性 a 来进行划分所获得的“纯度提升“越大。因此,我们可以讲划分策略设定为

\[a_*=arg\ max_{a\in A}\ Gain(D,a)\tag{ID3-Quinlan,1986} \]

1.2.2 增益率

信息增益准则对可取值数目较多的属性有所偏好(例如可能将样本的编号作为一种特征),为减少这种偏好可能带来的不良影响,C4.5决策树算法[Quinlan,1993]使用 增益率 来选择最优划分属性.

\[Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}\tag{2.4}\\ IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|},固有值(intrinsic\ value) \]

值得注意的是,增益率准则可能会对可取值数目较少的属性有所偏好,因此C4.5算法使用了一个启发式[Quinlan, 1993]:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的

1.2.3 基尼系数

CART决策树[Breiman et al., 1984] 试图用基尼系数(Gini index)来选择划分属性,数据集 D 的纯度可以通过 基尼系数来度量:

\[\begin{align} Gini(D)&=\sum_{k=1}^{|\gamma|}\sum_{k'\neq k}p_kp_{k'}\\ &=1-\sum_{k=1}^{|\gamma|}p_k^2\tag{2.5} \end{align} \]

Gini(D) 反映了从数据集D 中随机抽取的两个样本,其类别标记不一致的概率。

属性a的基尼指数定义为:

\[Gini\_index(D,a)=\sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v)\tag{2.6} \]

于是我们在后选属性集合A 中,选择那个使得划分后基尼系数最小的属性作为最优划分属性,即:

\[a_*=arg_{a\in A}min \ Gini\_index(D,a) \]

1.3 剪支处理

剪支 pruning是决策树学习算法对付”过拟合“的主要手段。通过主动去掉一些分支来降低过拟合的风险。

决策树剪枝的基本策略有“预剪枝”和“后剪枝”,预剪枝是说在决策树生成过程中,对每个结点划分前先进行估计,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分,并将当前节点标记为叶节点。后剪枝则是先从训练集中生成一颗完整的决策树,然后自底向上的对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来泛化性能提升,则替换。

后剪枝决策树通常比预剪枝决策树保留了更多的分支,一般情况下,后剪枝决策树的欠拟合风险很小(有些分支可能当前的划分不能提升泛化性能,但在其基础上进行的后续划分却有可能导致性能显著提高),泛化性能往往优于预剪枝决策树,但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上的对数中所有非叶节点进行逐一考察,因此训练时间开销要比未减枝决策树和预剪支决策树都要大得多。

1.4 连续与缺失值

在数据属性数目较多的情况下,往往会有大量样本出现缺失值,如简单放弃不完整样本,无疑是对信息极大的浪费,如果利用有缺失属性值的训练样例进行学习,我们需要解决两个问题:(1)如何在属性值缺失的情况下进行划分属性选择;(2)给定划分属性,若样本再改属性上得值缺失,该如何对样本进行划分?

给定训练集 D 和属性 a,令\(\tilde{D}\)表示 D 中在属性 a 上没有确实值得样本子集,对于(1)显然我们只可以根据\(\tilde{D}\)判断属性a的优劣。假定属性a有V个可取值\(\{a^1,a^2,\dots,a^V\}\),令\(\tilde{D^v}\)表示\(\tilde{D}\)中在属性a上取值为\(a^v\)的样本子集,\(\tilde{D_k}\)表示\(\tilde{D}\)中属于第 k类(k =1,2,...,|y|)的样本子集,显然有\(\tilde{D}=\bigcup_{k=1}^{|y|}\tilde{D_k}=\bigcup_{v=1}^{V}\tilde{D^v}\)假定我们对每一个样本x赋予一个权重\(\omega_x\)并定义:

\[\begin{align} \rho=&\frac{\sum_{x\in\tilde{D}}\omega_x}{\sum_{x\in D}\omega_x},无缺失值样本所占的比例\\ \tilde{p}_k=&\frac{\sum_{x\in\tilde{D}_k}\omega_x}{\sum_{x\in\tilde{D}}\omega_x},(1\leq k\leq{|y|}),无缺失值样本中第k类所占的比例\\ \tilde{r}_v=&\frac{\sum_{x\in\tilde{D}^v}\omega_x}{\sum_{x\in\tilde{D}}\omega_x},(1\leq v\leq V),无缺失值样本中在属性a上取值a^v的样本所占的比例 \end{align} \]

显然\(\sum_{k=1}^{|y|}\tilde{p}_k=1,\sum_{v=1}^V\tilde{r}_v=1\)

基于上述定义,我们把信息增益的计算式推广为:

\[Gain(D,a)=\rho \times Gain(\tilde D,a)=\rho \times\{Ent(\tilde D)-\sum_{v=1}^V\tilde r_vEnt(\tilde D^v)\}\\ Ent(\tilde D)=-\sum_{k=1}^{|\gamma|}\tilde p_k\log_2\tilde p_k \]

对问题(2),若样本\(x\)在划分属性 a 上的取值已知,贼将\(x\)划入于其取值相对应的子节点,且样本权值在子结点中保持为\(\omega_x\),若样本\(x\)在划分属性 a 上的取值位置,则将\(x\)同时划入所有子节点,且样本权值在属性值\(a^v\)对应的子结点中调整为\(\tilde r_v.\omega_x\);直观来看,就是让同一个样本以不同的概率划入到不同的子结点中去-C4.5 [quinlan, 1993]

posted @ 2020-01-30 10:20  ExplodedVegetable  阅读(413)  评论(0编辑  收藏  举报