1 介绍与定义
- 输入:训练数据T={ (x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)},其中xi=(xi(1),xi(2),...,xi(n))x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})xi=(xi(1),xi(2),...,xi(n)),nnn是属性个数,yi∈{ 1,2,...,K}y_i\in \{1,2,...,K\}yi∈{ 1,2,...,K};。
- 输出:构建决策树模型,正确对实例xxx进行分类。
决策树基于树的结构进行决策,决策树的起始点为根节点,中间决策流程为“内部节点”,分类结果为“叶节点”。
-
“内部结点”:有根结点和中间结点,在某个属性上进行决策;
-
分支:该测试的可能结果,属性有多少个取值,就有多少个分支;
-
“叶节点”:分类结果。
决策树的基本流程
- 首先从开始位置,将所有数据划分到一个节点,即根节点。
- 然后经历橙色的两个步骤,橙色的表示判断条件:
- 若数据为空集,跳出循环。如果该节点是根节点,返回null;如果该节点是中间节点,将该节点标记为训练数据中类别最多的类;
- 若样本都属于同一类,跳出循环,节点标记为该类别;
- 如果经过橙色标记的判断条件都没有跳出循环,则对该节点选择当前条件下的最优属性进行划分。
- 经历上步骤划分后,生成新的节点,然后循环判断条件,不断生成新的分支节点,直到所有节点都跳出循环。
- 结束,生成一棵决策树。
2 特征选择
特征选择——选择当前条件下的最优属性
2.1 信息增益
在信息论与概率统计中,熵(entropy) 是表示随机变量不确定性的度量。设 XXX 是一个取有限个值的离散随机变量,其概率分布为
P(X=xi)=pi,i=1,2,...,n P(X=x_i)=p_i,i=1,2,...,n P(X=xi)=pi,i=1,2,...,n
则随机变量 XXX 的熵定义为
H(X)=−∑i=1npilogpi H(X)=-\sum_{i=1}^np_i\log p_i H(X)=−i=1∑npilogpi
由定义可知,熵只依赖于 XXX 的分布,而与 XXX 的取值无关,所以也可将 XXX 的熵记作 H(p)H(p)H(p) ,即
H(p)=−∑i=1npilogpi H(p)=-\sum_{i=1}^np_i\log p_i H(p)=−i=1∑npilogpi
熵越大,随机变量的不确定性就越大。从定义可验证0≤H(p)≤logn0 \leq H(p) \leq \log n0≤H(p)≤logn。
下图是一个只有2个取值的随机变量,假如取值只有000和111,则P(X=0)=p,P(X=1)=1−pP(X=0)=p,P(X=1)=1-pP(X=0)=p,P(X=1)=1−p。信息熵为H(p)=−plogp−(1−p)log(1−p)H(p)=-p\log p-(1-p)\log (1-p)H(p)=−plogp−(1−p)log(1−p),我们画一个ppp在0-1的变过过程,H(p)H(p)H(p)随着变化的曲线:
由上图可以看出,当p=0.5p=0.5p=0.5的时候,H(p)H(p)H(p)达到最大值。因为p=0p=0p=0或p=1p=1p=1的时候,XXX只有一种可能性,也就是XXX是确定的,因此熵最小,而随着ppp接近0.50.50.5的过程中,变量XXX的不确定性就越来越大,我们计算出来的熵也是越来越大,与实际相符。
信息增益:特征 AAA 对训练数据集 DDD 的信息增益 g(D,A)g(D,A)g(D,A) , 定义为集合 DDD 的经验熵 H(D)H(D)H(D) 与给定条件特征 AAA 下 DDD 的经验条件熵H(D∣A)H(D|A)H(D∣A) 之差,即
g(D,A)=H(D)−H(D∣A) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
一般地,熵 H(Y)H(Y)H(Y) 与条件熵 H(Y∣X)H(Y|X)H(Y∣X) 之差称为互信息 (mutual information) 。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
根据信息增益准则的特征选择方法是:对训练数据集(或子集) DDD , 计算其每个特征的信息增益,井比较它们的大小,选择信息增益最大的特征。
设训练数据为DDD,∣D∣|D|∣D∣ 表示其样本容量,即样本个数 。 设有 KKK 个类 CkC_kCk, k=1,2,...,Kk =1,2,.. . ,Kk=1,2,...,K , ∣Ck∣|C_k|∣Ck∣为属于类 CkC_kCk 的样本个数,∑k=1K∣Ck∣=∣D∣\sum_{k=1}^K |C_k| = |D|∑k=1K∣Ck∣=∣D∣ 。设特征 AAA 有 mmm 个不同的取值 { a1,a2,…,am}\{a_1,a_2,…,a_m\}{ a1,a2,…,am},根据特征 AAA 的取值将 DDD 划分为 mmm 个子集 D1,D2,…,DmD_1,D_2,…, D_mD1,D2,…,Dm,∣Di∣|D_i|∣Di∣为 DiD_iDi 的样本个数,∑i=1m∣Di∣=∣D∣\sum_{i=1}^m |D_i| = |D|∑i=1m∣Di∣=∣D∣ 。记子集 DiD_iDi 中属于类 CkC_k