[监督学习]决策树

在监督学习中,根据输出是否为概率划分为概率监督学习和非概率监督学习。前面介绍的逻辑回归属于前者,而LDA和支持向量机属于后者,接下来介绍另一种非概率监督学习——决策树。

问题

给定训练集 D={(x1,y1),(x2,y2),,(xN,yN)}D = \{(\boldsymbol{x_1},y_1),(\boldsymbol{x_2},y_2),\cdots,(\boldsymbol{x_N},y_N)\} ,其中 xi=(xi1,xi2,,xin)T\boldsymbol{x_i} = (x_i^1,x_i^2,\cdots,x_i^n)^T 为输入的特征向量,nn 为特征的个数,yi{1,2,,K}y_i \in \{ 1,2,\cdots,K\} 为类的标签,NN 为样本的数量。我们学习的目标是根据给定的训练集构成一个决策树模型,使它能够对样本进行正确的分类。

决策树模型

决策树是一个类似于流程图的数结构模型,每一个中间节点表示一个特征或属性,每个叶节点表示一个分类。针对如何选择特征作为中间节点,可以将模型分为两类:基于规则的建树和基于模型的建树。

基于规则的建树就是人为的设计选择特征的规则,例如按照特征出现的先后顺序,这种方法主观性太强;而基于模型的建树是采用信息增益这一度量作为选择特征的参考,为什么选择信息增益呢?信息增益又表示了什么呢?

其实回到特征的选择上,我们无非是想找到一个具有最好分类能力的特征,也就是说按照这个特征将训练集分割成子集,使得各个子集在当前条件下有最好的分类,而信息增益就能够很好地表示这一直觉的准则。

实际上,决策树本质上就是某一特征与结果的相关性。

信息增益

为了便于说明,先给出熵与条件熵的定义。

熵是表示随机变量不确定性的度量。若 XX 是一个取有 nn 个值的离散随机变量,其概率分布为
P(X=xi)=pi,i=1,2,,n P(X=x_i)=p_i,i=1,2,\cdots,n
则随机变量 XX 的熵定义为
H(X)=i=1npilogpi H(X) = -\sum_{i=1}^n p_i\log p_i
由此发现,熵只依赖于 XX 的分布,而与 XX 的取值无关,所以也记为 H(p)H(p) ,而且熵越大,随机变量的不确定性就越大,从定义可验证熵具有极大值 0H(p)logn0\le H(p) \le \log n

设有随机变量 (X,Y)(X,Y) ,其联合概率分布为
P(X=xi,Y=yi)=pij,i=1,2,,n;j=1,2,,m P(X=x_i,Y=y_i) = p_{ij},i=1,2,\cdots,n;j=1,2,\cdots,m
条件熵 H(YX)H(Y|X) 表示在已知随机变量 XX 的条件下随机变量 YY 的不确定性,其定义为
H(YX)=i=1npiH(YX=xi) H(Y|X) = \sum_{i=1}^n p_i H(Y|X=x_i)
()ADg(D,A)DH(D)ADH(DA)g(D,A)=H(D)H(DA)定义(信息增益):特征A对训练集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D\\的经验条件熵H(D|A)之差,即g(D,A)=H(D)-H(D|A)

示例

[监督学习]决策树

问题为例,下面根据信息增益来选择决策树中的第一个特征。

首先,由训练集 DD 关于标签的概率分布计算出经验熵 H(D)=915log915615log615H(D) = - \frac{9}{15}\log \frac{9}{15} - \frac{6}{15}\log \frac{6}{15} 。然后根据各个特征 A1(),A2(),A3(),A4()A_1(年龄),A_2(有工作),A_3(有自己的房子),A_4(信贷情况) 分别计算信息增益。

  1. A1A_1 特征对训练集 DD 的信息增益 g(D,A1)g(D,A_1)
    g(D,A1)=H(D)H(DA1)=H(D)i=13piH(DA1=xi)=H(D)[P(A1=)H(DA1=)+P(A1=)H(DA1=)+P(A1=)H(DA1=)]=H(D)[515H(DA1=)+515H(DA1=)+515H(DA1=)]=H(D)[515(35log3525log25)+515(25log2535log35)+515(45log4515log15)]=0.083 \begin{aligned} g(D,A_1) &= H(D) - H(D|A_1) \\ & = H(D)- \sum_{i=1}^3 p_i H(D|A_1=x_i) \\ & = H(D) - [P(A_1 = 青年)H(D|A_1 = 青年) + P(A_1 = 中年)H(D|A_1 = 中年) + P(A_1 = 老年)H(D|A_1 = 老年)] \\ &= H(D)- [\frac{5}{15}H(D|A_1 = 青年)+\frac{5}{15}H(D|A_1 = 中年)+\frac{5}{15}H(D|A_1 = 老年)] \\ &= H(D) - [\frac{5}{15}(-\frac{3}{5}\log \frac{3}{5}- \frac{2}{5}\log \frac{2}{5}) + \frac{5}{15}(-\frac{2}{5}\log \frac{2}{5}- \frac{3}{5}\log \frac{3}{5}) + \frac{5}{15}(-\frac{4}{5}\log \frac{4}{5}- \frac{1}{5}\log \frac{1}{5})]\\ &= 0.083 \end{aligned}

  2. A2A_2 特征对训练集 DD 的信息增益 g(D,A2)g(D,A_2)

g(D,A2)=H(D)H(DA2)=H(D)i=12piH(DA2=xi)=H(D)[P(A2=)H(DA2=)+P(A2=)H(DA2=)]=H(D)[515H(DA2=)+1015H(DA2=)]=H(D)[515(0log01log1)+1015(610log610410log410)]=0.324 \begin{aligned} g(D,A_2) &= H(D) - H(D|A_2) \\ &= H(D) - \sum_{i=1}^2 p_i H(D|A_2 = x_i)\\ &= H(D)- [P(A_2 = 是)H(D|A_2=是)+P(A_2 = 否)H(D|A_2=否)] \\ &= H(D) - [\frac{5}{15}H(D|A_2=是) + \frac{10}{15}H(D|A_2=否)] \\ &= H(D)- [\frac{5}{15}(-0\log 0 - 1 \log 1) + \frac{10}{15}(-\frac{6}{10}\log \frac{6}{10} - \frac{4}{10} \log \frac{4}{10})] \\ &= 0.324 \end{aligned}

  1. A3A_3 特征对训练集 DD 的信息增益 g(D,A3)g(D,A_3)

g(D,A3)=H(D)H(DA3)=H(D)i=12piH(DA3=xi)=H(D)[P(A3=)H(DA3=)+P(A3=)H(DA3=)]=H(D)[615(0log01log1)+915(69log6939log39)]=0.420 \begin{aligned} g(D,A_3) &= H(D) - H(D|A_3)\\ &= H(D) - \sum_{i=1}^2 p_iH(D|A_3=x_i) \\ &= H(D) - [P(A_3=是)H(D|A_3=是)+P(A_3=否)H(D|A_3=否)]\\ &= H(D) - [\frac{6}{15}(-0\log 0-1\log1)+\frac{9}{15}(-\frac{6}{9} \log \frac{6}{9} - \frac{3}{9}\log \frac{3}{9})] \\ &= 0.420 \end{aligned}

  1. A4A_4 特征对训练集 DD 的信息增益 g(D,A4)g(D,A_4)

g(D,A4)=H(D)H(DA4)=H(D)i=13piH(DA4=xi)=H(D)[P(A4=)H(DA4=)+P(A4=)H(DA4=)+P(A4=)H(DA4=)]=H(D)[415(0log01log1)+615(26log2646log46)+515(45log4515log15)]=0.363 \begin{aligned} g(D,A_4) &= H(D) - H(D|A_4)\\ &= H(D) - \sum_{i=1}^3 p_iH(D|A_4=x_i) \\ &= H(D) - [P(A_4=非常好)H(D|A_4=非常好)+P(A_4=好)H(D|A_4=好)+P(A_4=一般)H(D|A_4=一般)]\\ &= H(D) - [\frac{4}{15}(-0\log 0-1\log1)+\frac{6}{15}(-\frac{2}{6} \log \frac{2}{6} - \frac{4}{6}\log \frac{4}{6}) + \frac{5}{15}(-\frac{4}{5} \log \frac{4}{5} - \frac{1}{5}\log \frac{1}{5})] \\ &= 0.363 \end{aligned}

通过比较各个特征的信息增益,可以发现第一个节点的最优特征是 A3()A_3(有自己的房子)

ID3算法

ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征,递归地构建决策树。具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归地调用以上方法,构成决策树,直至所有的特征的信息增益均很小或没有特征可以选择为止。