决策树是一种基本的分类与回归方法。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。主要优点是模型具有可读性,分类速度快。
分类决策树由结点和有向边组成。结点分为内部结点(表示一个特征或属性)和叶结点(表示一个类),决策树的路径有互斥且完备的性质。
决策树学习本质上是从训练数据集中归纳出一组分类规则,我们需要做的是一个与训练数据矛盾较小,同时具有很好的泛化能力的决策树。从所有可能的决策树中选取最优的决策树是NP问题,所以现实中常采用启发式方法近似求解。
决策树学习算法包含特征选择,决策树生成、决策树的剪枝过程。生成只考虑局部最优,剪枝则考虑全局最优。
特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。通常特征选择的准则是信息增益或信息增益比。
信息增益偏向于选择取值较多的特征。
**①熵(entropy)**是表示随机变量不确定性的度量。只依赖于变量的分布,而与变量的取值无关。熵越大,随机变量的不确定性就越大。
H ( p ) = − ∑ i = 1 n p i log p i H(p)=-\sum_{i=1}^n{p_i\log p_i} H(p)=−i=1∑npilogpi
②条件熵(conditional entropy) H ( Y ∣ X ) H(Y|X) H(Y∣X)表示在已知随机变量X的条件下随机变量Y的不确定性。
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)=\sum_{i=1}^n{p_iH(Y|X=x_i)} H(Y∣X)=i=1∑npiH(Y∣X=xi)
③信息增益(information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。定义为集合D的经验熵与特征A在给定条件下D的经验条件熵之差,也就是训练数据集中类与特征的互信息。
信息增益大的特征具有更强的分类能力。
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 ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^K{\frac{|C_k|}{|D|} log_2{|C_k| \over |D| }} H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ D H ( D i ) H(D|A)=\sum_{i=1}^n{\frac{|D_i|}{D}H(D_i)} H(D∣A)=i=1∑nD∣Di∣H(Di)
定义为其信息增益与训练数据集D关于特征A 的值的熵之比
g R ( D , A ) = g ( D , A ) H A ( D ) g_R(D,A)=\frac{g(D,A)}{H_A(D)} gR(D,A)=HA(D)g(D,A)
核心是在决策树各个结点上应用信息增益准则选择信息增益最大且大于阈值的特征,递归构建决策树。相当于用极大似然法进行概率模型的选择。
与ID3相比,改用了信息增益比选择特征。
将已生成的树简化的过程称为剪枝(pruning)。防止过拟合。
剪枝往往通过极小化决策树整体的损失函数或代价函数实现。
决策树的损失函数定义为:
C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_\alpha (T)=\sum_{t=1}^{|T|}{N_tH_t(T)}+\alpha|T| Cα(T)=t=1∑∣T∣NtHt(T)+α∣T∣
树T的叶结点个数为|T|,t是树T的叶结点,该叶结点有Nt个样本点
C α ( T ) = C ( T ) + α ∣ T ∣ C_\alpha(T)=C(T)+\alpha|T| Cα(T)=C(T)+α∣T∣
其中,C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|b表示模型的复杂度。
决策树剪枝通过优化损失函数还考虑了减小模型的复杂度。
定义损失函数的极小化等价于正则化的极大似然估计。
减去某一子结点,如果生成的新的整体树的损失函数值小于源树,则进行剪枝,具体可由动态规划实现。
CART(classification and regression tree)既可以用于分类也可以用于回归,它假设决策树是二叉树,内部结点特征的取值为是或者否,递归的构建二叉树,对回归树用平方误差最小化准备,对分类数用基尼指数最小化准则。
在训练数据集所在得输入空间中,递归地将每个区域划分为两个子区域,寻求最优切分点。称为最小二乘回归树。
假设有K个类,样本属于第K类的概率为pk,则概率的基尼指数为:
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K P k 2 Gini(p)=\sum_{k=1}^K{p_k(1-p_k)}=1-\sum_{k=1}^K{P_k^2} Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑KPk2
基尼指数表示集合的不确定性。基尼指数越大,样本集合的不确定性就越大。
再特征A条件下,集合D的基尼指数定义为
G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
集合D根据特征A是否取某一值被分为D1,D2.
从根结点开始,递归进行以下操作:设结点的训练数据集为D,对每个特征A和每个可能取的值a,计算A=a时的基尼指数,选择基尼指数最小的特征及其切分点作为最优特征及其切分点,直到停止。
Tt表示以t为根结点的子树,|Tt|是Tt的叶结点个数.可以证明当时,Tt与t有相同的损失函数值,且t的结点少,因此t比Tt更可取,对Tt进行剪枝.自下而上地对各内部结点t计算,并令a=min(g(t)),自上而下地访问内部节点t,如果有g(t)=a,进行剪枝,并对t以多数表决法决定其类,得到子树T,如此循环地生成一串子树序列,直到新生成的T是由根结点单独构成的树为止.利用交叉验证法在子树序列中选取最优子树.
如果是连续值的情况,一般用二分法作为结点来划分.
遗留问题Ⅰ:CART剪枝未看懂
遗留问题Ⅱ:CART回归树生成没看懂