目录
4.1基本流程
决策树: 样本分类可看作基于树结构, 来进行决策的过程.
基本流程: "分而治之" (divide-and-conquer) 策略, 即不断根据某属性进行划分.
递归划分时, 离散属性不能重复使用. (进一步的判定, 其考虑范围是在上次决策结果的限定范围之内. 每个结点包含的样本集合划分到子结点中.)
叶结点: 决策结果
非叶结点: 属性测试
根结点到叶结点的路径: 对应一个判定测试序列
决策树学习基本算法
输入: 训练集 D= {(x1 , y1) , (x2, y2),.. . , (xm, ym)}; 属性集 A={a1, a2 ,...,ad}. 过程: 函数TreeGenerate(D, A) 1: 生成结点 node; 2: if D中样本全属于同一类别C then 3: node 标记为C类叶结点; return //递归返回,情形 (1). 4: end if 5: if A= 空集∅ OR D中样本在A上取值相同 then 6: node 标记为叶结点,其类别标记为D中样本数最多的类; return //递归返回情形 (2). 7: end if 8: 从A中选择最优划分属性a_*; 9: for a_*的每一个值 a_*^v do 10: 为node 生成一个分支;令 D_v 表示D中在a_*上取值为a_*^v的样本子集; 11: if D_v为空 then 12: 将分支结点标记为叶结点,其类别标记为D中样本最多的类; return //递归返回,情形 (3). 13: else 14: 以TreeGenerate (D_v, A \ {a*} )为分支结点//递归入口 15: end if 16: end for 输出:以 node 为根结点的1棵决策树 |
导致递归返回三种情形:
(1) 当前结点(D中)包含的样本全属于同一类别,无需划分; 当前结点样本集合:
属性1 | 属性2 | 样本类别 |
A1 | A2 | 1 |
A1 | B2 | 1 |
虽有可用属性1或2, 但样本类别全部为1 (2) 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
1) 当前属性集为空, A=空集∅
当前结点样本集合:
属性1 | 样本类别 |
A1 | 1 |
A1 | 2 |
属性用光, 但类别不纯. 理解为样本集含的标记含有噪声, 或应增加新特征(即当前的几种特征属性不足以描述样本.
处理方式: 把当前结点标记为叶结点,将其类别设定为该结点所含样本最多的类别.
2)样本(D)所有属性(A)上取值相同, 但不属于同一类别
当前结点样本集合:
属性1 | 属性2 | 样本类别 |
A1 | A2 | 1 |
A1 | A2 | 2 |
属性1, 属性2都能用, 但全都相同, 没用信息可以分类别了. 样本集含的标记含有噪声, 或应增加新特征.
处理方式: 把当前结点标记为叶结点,将其类别设定为该结点所含样本最多的类别. (利用当前结点的后验分布.)
(3) 当前结点包含的样本集合为空,不能划分
当前结点样本集合:
属性1 | 样本类别 |
|
|
处理方式: 把当前结点标记为叶结点, 将其类别设定为其父结点所含样本最多的类别. (把父结点的样本分布作为当前结点的先验分布. )
注意,此分支必须保留,因为测试时,可能会有样本落入该分支。
4.2划分选择
针对学习算法第8行,即选择最优划分属性. 希望决策树的分支结点的"纯度" (purity) 越来越高, 即所包含的样本尽可能属于同一类别.
以下为三种划分选择方法: 信息增益(学习算法ID3)、增益率(学习算法C4.5)、基尼指数(学习算法CART).
4.2.1 信息增益
信息熵
"信息熵" (information entropy) : 度量样本集合纯度指标.
信息熵定义公式:
$$ \mathrm{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k} $$
其中, D为需划分集合, |Y|表示样本类别总数,p_k表示第k类样本所占的比例.
当各类样本所占比例相同时, 样本集合纯度最低, 信息熵Ent(D)最大:
$$ \max \mathrm{Ent}(D)=\log _{2} n\\ 在x_1=x_2=...=x_n=\frac{1}{n}x时取得 $$
当样本集合D中只含某一类样本时, 样本集合纯度最高, 信息熵Ent(D)最小:
$$ \min \mathrm{Ent}(D)=\log _{2} n\\ 当某个x_k=1, x_1=x_2=...=x_{k-1}=x_{k+1}=...=x_n=0 $$
计算信息熵时约定:
$$ 若 p=0,则 p\log_2p=0 $$
Ent(D)的值越小,则D的纯度越高.
相关知识: 信息熵范围证明
样本所占比例性质:
$$ 0 \leq p_k \leq 1,\sum_{k=1}^{n}p_k=1 $$
信息熵转化为实值函数:
$$ 若令|\mathcal{Y}|=n,p_k=x_k,\\ \mathrm{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k}\\ =f(x_1,...,x_n)=-\sum_{k=1}^{n} x_{k} \log _{2} x_{k} $$
求该多元函数最大值, 对f(x_1,...,x_n)求最大值等价于该最小化问题:
$$ \begin{array}{ll}{ \min} & {\sum\limits_{k=1}^{n} x_{k} \log _{2} x_{k} } \\ {\text { s.t. }} & {\sum\limits_{k=1}^{n}x_k=1} \end{array} $$
在0≤x_k≤1时,此问题为凸优化问题,其拉格朗日函数的一阶偏导数等于0的点即为最优解。根据拉格朗日乘子法(λ为乘子),该优化问题的拉格朗日函数为:
$$ L(x_1,...,x_n,\lambda)=\sum_{k=1}^{n} x_{k} \log _{2} x_{k}+\lambda(\sum_{k=1}^{n}x_k-1) $$
L对x_1求偏导数, 令偏导数等于0可得:
$$ \begin{aligned} \cfrac{\partial L(x_1,...,x_n,\lambda)}{\partial x_1}&=\cfrac{\partial }{\partial x_1}\left[\sum_{k=1}^{n} x_{k} \log _{2} x_{k}+\lambda(\sum_{k=1}^{n}x_k-1)\right]=0\\ &=\log _{2} x_{1}+x_1\cdot \cfrac{1}{x_1\ln2}+\lambda=0 \end{aligned} $$
其中:
$$ (\log _{2} x_{1})'=(\frac{\ln x_1}{\ln 2})'=\frac{1}{x_1\ln 2} $$
则:
$$ \begin{aligned} \cfrac{\partial L(x_1,...,x_n,\lambda)}{\partial x_1} &=\log _{2} x_{1}+\cfrac{1}{\ln2}+\lambda=0 \\ &\Rightarrow \lambda=-\log _{2} x_{1}-\cfrac{1}{\ln2} \end{aligned} $$
L对λ求偏导数, 令偏导数等于0可得:
$$ \begin{aligned} &\cfrac{\partial L(x_1,...,x_n,\lambda)}{\partial \lambda}=0\\&=\cfrac{\partial }{\partial \lambda}\left[\sum_{k=1}^{n} x_{k} \log _{2} x_{k}+\lambda(\sum_{k=1}^{n}x_k-1)\right]=0\\ &\Rightarrow \sum_{k=1}^{n}x_k=1\\ \end{aligned} $$
即:
$$ \left\{ \begin{array}{lr} \lambda=-\log _{2} x_{1}-\cfrac{1}{\ln2}=-\log _{2} x_{2}-\cfrac{1}{\ln2}=...=-\log _{2} x_{n}-\cfrac{1}{\ln2} \\ \sum\limits_{k=1}^{n}x_k=1 \end{array}\right. $$
由于x1~xn的对数函数皆等于同一个常数, 故相等, 又因其和为1, 有当前问题的最小值, f的最大值点与最大值:
$$ x_1=x_2=...=x_n=\cfrac{1}{n},\\ f(\cfrac{1}{n},...,\cfrac{1}{n})=-\sum_{k=1}^{n} \cfrac{1}{n} \log _{2} \cfrac{1}{n}=-n\cdot\cfrac{1}{n} \log _{2} \cfrac{1}{n}=\log _{2} n $$
求最小值
不考虑x_k和为1, f可看作互不相关的一元函数累加:
$$ f(x_1,...,x_n)=\sum_{k=1}^{n} g(x_k)\\ 其中,g(x_k)=-x_{k} \log _{2} x_{k},0 \leq x_k \leq 1 $$
每个g取到最小值时, f也取到其最小值. 即求g(x_1)的最小值,对g(x_1)关于x_1求一阶和二阶导数:
$$ g^{\prime}(x_1)=\cfrac{d(-x_{1} \log _{2} x_{1})}{d x_1}=-\log _{2} x_{1}-x_1\cdot \cfrac{1}{x_1\ln2}=-\log _{2} x_{1}-\cfrac{1}{\ln2}\\ g^{\prime\prime}(x_1)=\cfrac{d\left(g^{\prime}(x_1)\right)}{d x_1}=\cfrac{d\left(-\log _{2} x_{1}-\cfrac{1}{\ln2}\right)}{d x_1}=-\cfrac{1}{x_{1}\ln2} $$
当x_k∈[0, 1]时, g''<0, 是一个开口向下凹函数,其最小值在边界x_1=0和x_1=1. 代入g(x_1)
得:
$$ g(0)=-0\log _{2} 0=0\\ g(1)=-1\log _{2} 1=0 $$
当x_k为1或0时, 取到g最小值0,根据约束Σx_k=1, 只能取1个1, 其他都为0. 故f最小值也为0.
信息增益
设离散属性a有V个可能的取值 {a^1, a^2, … , a^V} , 若使用a划分样本集D,则会产生 个V分支结点, 其中第v个分支结点包含了D中所有在属性a上取值为a^v的样本, 记为 D^v.
属性a对样本集D划分的信息增益的定义公式:
$$ \mathrm{Gain}(D,a) = \mathrm{Ent}(D) - \sum_{v=1}^{V}\frac{|D^v|}{|D|}\mathrm{Ent}({D^v}) $$
该公式可以理解为, 在属性a的取值已知后,样本类别的不确定性减小的程度。信息增益越大,则说明在知道其取值后样本集(属性a划分所得)的不确定性减小的程度越大,也即 “纯度提升”越大。
因此,我们可用信息增益来进行决策树的划分属性选择,即在算法第8行选择属性时:
$$ a_* = \arg\max_{a\in A}\mathrm{Gain}(D,a) $$
ID3 决策树学习算法选择划分属性的准则: 信息增益.
相关知识: 互信息
信息论中信息增益也称为互信息,其表示已知一个随机变量的信息后使得另一个随机变量的不确定性减少的程度。
条件熵表示的是在已知一个随机变量的条件下,另一个随机变量的不确定性。根据信息熵公式计算出D^v的信息熵. 因不同的分支结点所包含的样本数不同, 给分支结点赋予权重 |D^v|/|D|, 即样本数越多的分支结点的影响越大.
已知X,随机变量Y的条件熵为:
$$ \mathrm {Ent}(Y|X) = \sum_{i=1}^np_i \mathrm {Ent}(Y|X = x_i)\\ 其中,p_i = P(X = x_i) ,i =1,2,...,n $$
信息增益(互信息)=信息熵-条件熵
互信息的数学定义:
$$ \mathrm {I}(Y;X) = \mathrm {Ent}(Y) - \mathrm {Ent}(Y|X) $$
西瓜例子
西瓜数据集2.0:
编号,色泽,根蒂,敲声,纹理,脐部,触感,好瓜 1, 青绿,蜷缩,浊响,清晰,凹陷,硬滑,是 2, 乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,是 3, 乌黑,蜷缩,浊响,清晰,凹陷,硬滑,是 4, 青绿,蜷缩,沉闷,清晰,凹陷,硬滑,是 5, 浅白,蜷缩,浊响,清晰,凹陷,硬滑,是 6, 青绿,稍蜷,浊响,清晰,稍凹,软粘,是 7, 乌黑,稍蜷,浊响,稍糊,稍凹,软粘,是 8, 乌黑,稍蜷,浊响,清晰,稍凹,硬滑,是 9, 乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑,否 10, 青绿,硬挺,清脆,清晰,平坦,软粘,否 11, 浅白,硬挺,清脆,模糊,平坦,硬滑,否 12, 浅白,蜷缩,浊响,模糊,平坦,软粘,否 13, 青绿,稍蜷,浊响,稍糊,凹陷,硬滑,否 14, 浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,否 15, 乌黑,稍蜷,浊响,清晰,稍凹,软粘,否 16, 浅白,蜷缩,浊响,模糊,平坦,硬滑,否 17, 青绿,蜷缩,沉闷,稍糊,稍凹,硬滑,否 |
D=17(该数据集包含 17 个训练样例)
|Y|=2(样本类别总数)
根结点(包含D中的所有样例): 正例占p1=8/17,反例占p2=9/17
若使用"色泽"属性对D划分,得子集: D^1(色泽=青绿), D^2 (色泽=乌黑), D^3(色泽=浅白).
D^1包含 {1,4, 6, 10, 13, 17} 6个样例,D^1=6, p1=3/6, p2=3/6
D^2包含{2, 3, 7, 8, 9, 15} 6个样例, D^2=6, p1=4/6, p2=2/6
D3 包含{5, 11, 12, 14, 16}5个样例,D^3=5, p1=1/5, p2=4/5
根据公式计算信息熵:
$$ \mathrm{Ent}(D)=-(p_{1} \log _{2} p_{1}+p_{2} \log _{2} p_{2})\\ =-(\frac{8}{17}\log _{2}\frac{8}{17}+\frac{9}{17}\log _{2} \frac{9}{17})=0.998\\ \mathrm{Ent}(D^1)=-(\frac{3}{6}\log _{2}\frac{3}{6}+\frac{3}{6}\log _{2} \frac{3}{6})=1\\ \mathrm{Ent}(D^2)=-(\frac{4}{6}\log _{2}\frac{4}{6}+\frac{2}{6}\log _{2} \frac{2}{6})=0.918\\ \mathrm{Ent}(D^3)=-(\frac{1}{5}\log _{2}\frac{1}{5}+\frac{4}{5}\log _{2} \frac{4}{5})=0.722 $$
其中D1恰是信息熵最大的情况, 两类样本占比相同.
根据公式可计算属性"色泽"的信息增益, 注意此时累加上限为属性值个数:
$$ \mathrm{Gain}(D,色泽) = \mathrm{Ent}(D) - \sum_{v=1}^{3}\frac{|D^v|}{|D|}\mathrm{Ent}({D^v})\\ =0.998-(\frac{6}{17}\times 1+\frac{6}{17}\times 0.918+\frac{5}{17}\times 0.772)\\=0.109 $$
选取信息增益最高的属性划分样例到分支结点中, 最后得到决策树:
4.2.2 增益率
信息增益准则对可取值数目较多的属性有所偏好(如编号属性的信息增益0.998-0=0.998), C4.5 决策树算法 [Quinlan 1993J使用"增益率" (gain ratio) 来选择最优划分属性. 增益率准则对可取值数目较少的属性有所偏好.
增益率定义:
$$ \mathrm{Gain\_ ratio}(D,a) =\frac{\mathrm{Gain}(D,a)}{\mathrm{IV}(a)} $$
其中, 固有值:
$$ \mathrm{IV}(a)= - \sum_{v=1}^{V}\frac{|D^v|}{|D|}\log_2 \frac{|D^v|}{|D|} $$
信息熵按样本集合D的类别标记计算,固有值(intrinsic value)按属性a的取值计算(相当于将属性a作为类别)。
$$ \mathrm{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k}= - \sum_{k=1}^{|\mathcal{Y}|}\frac{|D^k|}{|D|}\log_2 \frac{|D^k|}{|D|} $$
标签属性增益率等于 1.
4.2.3 基尼指数
CART决策树使用"基尼指数" (Gini index) 选择划分属性. 基尼值(度量数据集D的纯度):
$$ \mathrm {Gini}(D) = \sum_{k=1}^{|\mathcal{Y}|}\sum_{k'\neq 1}p_k p_{k'}\\ =1-\sum_{k=1}^{|\mathcal{Y}|}p_k^2 $$
基尼值=类别标记不一致的概率=1-类别标记一致的概率
基尼值越大表示纯度越差, 故选择使(各划分子集的基尼值)即(基尼指数)尽可能小的作为划分属性.
基尼指数(即各子集基尼值的加权平均):
$$ \mathrm {Gini\_index}(D,a) = \sum_{v=1}^{V}\frac{|D^v|}{|D|}\mathrm {Gini}(D^v) $$
相关知识: CART分类树的构造算法
因为CART分类树是一颗二叉树,如果用上面的公式去选出最优划分属性,无法进一步选出最优划分属性的最优划分点. (类似于无序离散属性, 需要展开为多维0-1属性. ) 对每个属性a的每个可能取值v,将数据集D分为a=v和a≠v两部分来计算基尼指数.
4.3 剪枝处理
剪枝(pruning) 是决策树学习算法处理"过拟合"的主要手段. 剪枝的基本策略有"预剪枝" (prepruning) 和"后剪枝"(post-pruning). 通过比较替换前后决策树泛化性能, 来判断是否剪枝. 泛化性能可使用性能评估方法, 如留出法, 划分出一部分验证集:
编号,色泽,根蒂,敲声,纹理,脐部,触感,好瓜 1, 青绿,蜷缩,浊响,清晰,凹陷,硬滑,是 2, 乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,是 3, 乌黑,蜷缩,浊响,清晰,凹陷,硬滑,是 6, 青绿,稍蜷,浊响,清晰,稍凹,软粘,是 7, 乌黑,稍蜷,浊响,稍糊,稍凹,软粘,是 10, 青绿,硬挺,清脆,清晰,平坦,软粘,否 14, 浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,否 15, 乌黑,稍蜷,浊响,清晰,稍凹,软粘,否 16, 浅白,蜷缩,浊响,模糊,平坦,硬滑,否 17, 青绿,蜷缩,沉闷,稍糊,稍凹,硬滑,否 |
4, 青绿,蜷缩,沉闷,清晰,凹陷,硬滑,是 5, 浅白,蜷缩,浊响,清晰,凹陷,硬滑,是 8, 乌黑,稍蜷,浊响,清晰,稍凹,硬滑,是 9, 乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑,否 11, 浅白,硬挺,清脆,模糊,平坦,硬滑,否 12, 浅白,蜷缩,浊响,模糊,平坦,软粘,否 13, 青绿,稍蜷,浊响,稍糊,凹陷,硬滑,否 |
划分属性选择使用信息增益准则.
4.3.1 预剪枝
基于信息增益准则,选属性"脐部"进行划分(此处因划分出了验证集, 训练集已与之前不同了, 之前信息增益最大的是纹理),产生3个分支,如下图所示.
预剪枝考虑是否应该进行这个划分, 对划分前后的泛化性能(验证集精度)进行估计.
预剪枝使很多分支都没有展开, 降低过拟合风险, 训练测试时间开销.但有些分支的当前划分虽不能提升泛化性能, 在其基础上进行的后续划分却有可能导致性能显著提高, 可能欠拟合.
4.3.2 后剪枝
首先生成一颗完整决策树:
得该决策树的验证集精度为 42.9%.
后剪枝首先考察图结点⑥. 若将其领衔的分支剪除,则相当于把⑤替换为叶结点.替换后的叶结点包含编号为 {7 15} 的训练样本,该叶结点的类别标记为"好瓜",此时决策树的验证集精度提高至 57.1%. 后剪枝策略决定剪枝. 若精度不变, 可以不剪, 但剪枝后模型更好.
剪枝后验证集精度也为71. 4%.
后剪枝决策树保留更多的分支, 欠拟合风险很小,泛化性能往往优于预剪枝决策树. 但后剪枝过程是在生成完全决策树之后进行的, 且自底向上考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多.
4.4连续与缺失值
4.4.1 连续值处理
在决策树学习中使用连续属性. 连续属性的可取值数目无穷多,不能直接根据连续属性的取值来对结点进行划分.
连续属性离散化
C4.5决策树算法采用二分法(bi-partition).
本节离散化与决策树生成过程融为一体,属于嵌入式算法. 若先离散化后再调用C4.5 决策树生成算法,则为过滤式算法. 若以学习器的预测结果准确率为评价标准,则包裹式算法. (特征选择中有“过滤式(filter)”算法、“包裹式(wrapper)”算法、“嵌入式 (embedding)”算法).
候选划分点
设连续属性a在D上出现n个值,从小到大记为 {a^1, …, a^n }. 则有n-1个候选划分点, 划分点t可将D分为子集Dt-, Dt+, Dt-包含属性值不大于t样本:
$$ T_a={\lbrace{\frac{a^i+a^{i+1}}{2}|1\leq{i}\leq{n-1}}\rbrace} $$
即每两个相邻取值的中点作为划分点.
信息增益
像离散属性值一样来考察这些划分点,选取最优的划分点(信息增益最大):
$$ \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{|D_t^{\lambda}|} {|D|}\operatorname{Ent}(D_t^{\lambda}) \end{aligned} $$
其中λ∈{−,+}表示属性a的取值分别小于等于和大于候选划分点t时的情形.
即当λ=−时:
$$ D^{\lambda}_t=D^{a\leq t}_t $$
当λ=+时:
$$ D^{\lambda}_t=D^{a> t}_t $$
西瓜例子
数据集含连续属性"密度"和"含糖率"
编号,色泽,根蒂,敲声,纹理,脐部,触感, 密度, 含糖率,好瓜 1, 青绿,蜷缩,浊响,清晰,凹陷,硬滑, 0.697, 0.460, 是 2, 乌黑,蜷缩,沉闷,清晰,凹陷,硬滑, 0.774, 0.376, 是 3, 乌黑,蜷缩,浊响,清晰,凹陷,硬滑, 0.634, 0.264, 是 4, 青绿,蜷缩,沉闷,清晰,凹陷,硬滑, 0.608, 0.318, 是 5, 浅白,蜷缩,浊响,清晰,凹陷,硬滑, 0.556, 0.215, 是 6, 青绿,稍蜷,浊响,清晰,稍凹,软粘, 0.403, 0.237, 是 7, 乌黑,稍蜷,浊响,稍糊,稍凹,软粘, 0.481, 0.149, 是 8, 乌黑,稍蜷,浊响,清晰,稍凹,硬滑, 0.437, 0.211, 是 9, 乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑, 0.666, 0.091, 否 10, 青绿,硬挺,清脆,清晰,平坦,软粘, 0.243, 0.267, 否 11, 浅白,硬挺,清脆,模糊,平坦,硬滑, 0.245, 0.057, 否 12, 浅白,蜷缩,浊响,模糊,平坦,软粘, 0.343, 0.099, 否 13, 青绿,稍蜷,浊响,稍糊,凹陷,硬滑, 0.639, 0.161, 否 14, 浅白,稍蜷,沉闷,稍糊,凹陷,硬滑, 0.657, 0.198, 否 15, 乌黑,稍蜷,浊响,清晰,稍凹,软粘, 0.360, 0.370, 否 16, 浅白,蜷缩,浊响,模糊,平坦,硬滑, 0.593, 0.042, 否 17, 青绿,蜷缩,沉闷,稍糊,稍凹,硬滑, 0.719, 0.103, 否 |
决策树学习时. 对属性"密度", 根据候选划分点公式,候选划分点集合包含 16 个候选值:
$$ T_{密度}=\{0.244 0.294, 0.351, 0.381, 0.420, 0.459, 0.518, 0.574, 0.600, 0.621, 0.636, 0.648, 0.661, 0.681, 0.708, 0.746\} $$
由离散化的连续属性信息增益公式, 属性"密度"的最大信息增益为 0.262 ,对应于划分点 0.381. 最终生成决策树:
注意, 与离散属性不同, 使用过的连续属性可作为其后代结点的划分属性, 但划分时需要使用不同划分点.
4.4.2 缺失值处理
缺失值的样本预处理. 常用的缺失值填充方法是:连续属性,采用该属性的均值;离散属性,采用属性值众数(假设了数据集样本基于独立同分布采样). 一般仅指特征属性含有缺失,若类别含有缺失,直接抛弃. 在不进行预处理填充的情况下划分, 有两个问题:
(1) 属性值缺失, 如何选择划分属性?
(2) 属性值缺失,如何划分样本?
令tilde D表示D中属性a完整的样本子集; tilde D^v表示其属性a取值为a^v的样本子集; tilde D_k表示其类别为k的样本子集. 有性质:
$$ \tilde{D}=\cup_{k=1}^{|\mathcal{Y}|}\tilde{D}_k\\ \tilde{D}=\cup_{v=1}^{V}\tilde{D}_v $$
设样本x权重为w_x(初始权重为1), 对属性a有
无缺失值样本所占的比例:
$$ \rho=\frac{\sum_{x\in \tilde D}w_x}{\sum_{x\in D}w_x} $$
无缺失值样本中第k类所占的比例:
$$ \tilde p_k=\frac{\sum_{x\in \tilde D_k}w_x}{\sum_{x\in \tilde D}w_x} $$
无缺失值样本中属性a=a^v的样本所占的比例:
$$ \tilde r^v=\frac{\sum_{x\in \tilde D^v}w_x}{\sum_{x\in \tilde D}w_x} $$
信息增益
对问题(1)选择划分属性,可根据tilde D来判断属性a的优劣. 含缺失值的信息熵:
$$ \mathrm{Ent}(\tilde D)=-\sum_{k=1}^{|\mathcal{Y}|} \tilde p_{k} \log _{2}\tilde p_{k} $$
含缺失值的信息增益:
$$ \mathrm{Gain}(D,a)=\rho\times\mathrm{Gain}(\tilde D,a) \\ = \rho\times\left(\mathrm{Ent}(\tilde D) - \sum_{v=1}^{V}\tilde r^v\mathrm{Ent}({\tilde D^v})\right) $$
对问题(2)划分样本:
1) 若样本x在划分属性a上的取值己知, 则将x划入与其取值对应的子结点,且样本权值在子结点中保持为w_x.
2) 若样本x在划分属性a上的取值未知,则将x同时划入所有子结点, 且在与属性值a^v对应的子结点中, 样本权值调整为:
$$ \tilde r^v\cdot w_x $$
未改变该属性在样本的分布.
西瓜例子
以西瓜数据集2.0α为例生成决策树.
编号,色泽,根蒂,敲声,纹理,脐部,触感,好瓜 1, -, 蜷缩,浊响,清晰,凹陷,硬滑,是 2, 乌黑,蜷缩,沉闷,清晰,凹陷, -, 是 3, 乌黑,蜷缩, -, 清晰,凹陷,硬滑,是 4, 青绿,蜷缩,沉闷,清晰,凹陷,硬滑,是 5, -, 蜷缩,浊响,清晰,凹陷,硬滑,是 6, 青绿,稍蜷,浊响,清晰, -, 软粘,是 7, 乌黑,稍蜷,浊响,稍糊,稍凹,软粘,是 8, 乌黑,稍蜷,浊响, -, 稍凹,硬滑,是 |
9, 乌黑, -, 沉闷,稍糊,稍凹,硬滑,否 10, 青绿,硬挺,清脆, -, 平坦,软粘,否 11, 浅白,硬挺,清脆,模糊,平坦, -, 否 12, 浅白,蜷缩, -, 模糊,平坦,软粘,否 13, -, 稍蜷,浊响,稍糊,凹陷,硬滑,否 14, 浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,否 15, 乌黑,稍蜷,浊响,清晰, -, 软粘,否 16, 浅白,蜷缩,浊响,模糊,平坦,硬滑,否 17, 青绿, -, 沉闷,稍糊,稍凹,硬滑,否 |
初始时17个样本在根节点的权重都为1, "色泽"属性无缺失值的样例子集tilde D包含编号为{2 10 11 12 14 15 16 17} 14 个样例.
tilde D, tilde D1青绿, tilde D2乌黑, tilde D3浅白的信息熵分别为:
$$ \mathrm{Ent}(\tilde D)=-\sum_{k=1}^{2} \tilde p_{k} \log _{2}\tilde p_{k}\\ =-(\frac{6}{14} \log _{2}\frac{6}{14}+\frac{8}{14} \log _{2}\frac{8}{14} )=0.985\\ \mathrm{Ent}(\tilde D^1) =-(\frac{2}{4} \log _{2}\frac{2}{4}+\frac{2}{4} \log _{2}\frac{2}{4})=1\\ \mathrm{Ent}(\tilde D^2) =0.918\\ \mathrm{Ent}(\tilde D^3) =-(\frac{0}{4} \log _{2}\frac{0}{4}+\frac{4}{4} \log _{2}\frac{4}{4})=0 $$
由以上可得样本子集tilde D属性"色泽"的信息增益:
$$ \mathrm{Gain}(\tilde D,色泽) = \mathrm{Ent}(\tilde D) - \sum_{v=1}^{3}\tilde r^v\mathrm{Ent}({\tilde D^v})\\ =0.985-\left(\frac{4}{14}\times 1+\frac{6}{14}\times 0.918+\frac{4}{14}\times 0\right)\\=0.306 $$
完整样本集D上属性"色泽"的信息增益:
$$ \mathrm{Gain}(D,色泽)=\rho\times\mathrm{Gain}(\tilde D,色泽) \\ = \frac{14}{17}\times0.306=0.252 $$
根据最大的信息增益选择划分属性"纹理", 纹理值未缺失样本以权重1划分入各自的子结点, 样本8.10以权重7/15, 5/15, 3/15划分入清晰, 稍糊, 模糊.
4.5 多变量决策树
多变量决策树=斜决策树
轴平行决策树
属性视为坐标轴,d属性样本对应d维空间点,分类即寻找不同类样本之间的分类边界. 决策树形成的分类边界特点: 轴平行(axis- parallel) ,即分类边界由若干与坐标轴平行的分段组成.
西瓜数据集3.0α
编号, 密度, 含糖率,好瓜 1, 0.697, 0.460, 是 2, 0.774, 0.376, 是 3, 0.634, 0.264, 是 4, 0.608, 0.318, 是 5, 0.556, 0.215, 是 6, 0.403, 0.237, 是 7, 0.481, 0.149, 是 8, 0.437, 0.211, 是 |
9, 0.666, 0.091, 否 10, 0.243, 0.267, 否 11, 0.245, 0.057, 否 12, 0.343, 0.099, 否 13, 0.639, 0.161, 否 14, 0.657, 0.198, 否 15, 0.360, 0.370, 否 16, 0.593, 0.042, 否 17, 0.719, 0.103, 否 |
西瓜数据集3.0α作为训练集得决策树:
决策树对应的四次分类过程:
斜决策树
坐标轴平行的分类边界可解释性好,因直接对应属性取值. 但在学习任务的真实分类边界复杂时,使用很多段划分才能获得较好的近似.
"多变量决策树" (multivariate decision tree)用斜的划分边界(红色线段) 简化模型, 此类决策树中,非叶结点不仅对某个属性,而是对属性的线性组合进行测试; 即形如Σwa=t 的线性分类器,其中w是属性a的权重,w和t由样本集学得. 学习过程中,不是为非叶结点寻找最优划分属性,而是建立合适的线性分类器. 如下图的斜决策树与分类边界: