决策树是一类基本的分类与回归方法。
学习时,利用训练数据,根据损失函数最小化原则建立决策树模型。预测时,对新的数据,根据决策树模型进行分类。
决策树学习通常包含3个步骤:特征选择、决策树的生成、决策树的剪枝。
决策树模型
定义: 决策树是对实例进行分类的树形结构。由节点node和有向边edge组成。节点分为内部节点和叶节点。内部节点表示一个特征,叶节点表示一个类。
从根节点开始,对实例的某一个特征进行测试,根据测试结果,将实例分配到其子节点。这时子节点对应该特征的一个取值,递归进行测试并分配,直到叶节点,最后分到叶节点的类中。
决策树学习
给定训练集
D={(x1,y1),(x2,y2),...,(xN,yN)}D=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}D={(x1,y1),(x2,y2),...,(xN,yN)},其中xi=(xi1,xi2,...,xin)x_i=(x_i^1,x_i^2,...,x_i^n)xi=(xi1,xi2,...,xin)为输入实例(特征个数)。y为类别。
学习的目标是根据训练数据简历一个决策树模型,能够对实例进行正确分类。
决策树本质是从训练数据集中归纳出一组分类规则。我们需要的是一个与训练集矛盾较小,又能具有很好的泛化能力。
决策树的损失函数通常是正则化的极大似然函数。
决策树可能出现过拟合情况,需要进行剪枝
1.特征选择
特征选择在于选择对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。通常特征选择的准则是信息增益或信息增益比。
信息增益
熵是表示随机变量不确定性的度量。
设X是表示取有限个值的离散随机变量,其概率分布为p(X=xi)=pip(X=x_i)=p_ip(X=xi)=pi
则随机变量X的熵定义为
H(X)=−∑i=1npilogpiH(X)=- \sum _{i=1}^{n} p_i \log p_iH(X)=−∑i=1npilogpi
熵越大,随机变量的不确定性就越大。
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。
H(Y∣X)=−∑i=1npiH(Y∣X=xi)H(Y|X)=- \sum _{i=1}^{n} p_i H(Y|X=x_i)H(Y∣X)=−∑i=1npiH(Y∣X=xi)
信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度
定义 (信息增益): 特征A对于训练集D的信息增益g(D,A)为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵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)
根据信息增益准则的特征选择方法是:对训练集D,计算其每个特征的信息增益,比较其大小,选择信息增益最大的特征
信息增益比
在使用信息增益的时候,经验熵较大的话,信息增益值会偏大。使用信息增益比可以对这一问题进行校正。类似于标准化的思想。
定义 (信息增益比): 特征A对于训练集D的信息增益比gR(D,A)g_R(D,A)gR(D,A)为其信息增益g(D,A)与训练集的经验熵H(D)之比,即
gR(D,A)=g(D,A)H(D)g_R(D,A)=\frac{g(D,A)}{H(D)}gR(D,A)=H(D)g(D,A)
2.决策树的生成
首先介绍ID3的生成算法,再介绍C4.5的生成算法。这些都是经典算法
ID3算法
ID3算法的核心是在决策树各个节点上使用信息增益来选择特征,递归构建决策树。
具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息特征最大的特征作为节点的特征,由给节点的不同取值建立子节点。再对子节点递归地使用上面的方法来建立决策树。直到所有特征的信息增益都很小或者没有特征可以选择为止,最后得到一个决策树。
ID3算法相当于用极大似然法进行概率模型的选择。
算法
输入:训练集D,特征集A,阈值ϵ\epsilonϵ
输出:决策树T
- 若D中所有实例属于同一类CkC_kCk,则T为单节点树,把类CkC_kCk作为该节点的类标记,返回T
- 若A为∅\varnothing∅,则T为单节点树,把D中实例树最多的类CkC_kCk作为该节点的类标记,返回T
- 否则,计算A中各特征对D的信息增益,选择信息增益最大的特征AgA_gAg
- 如果AgA_gAg的信息增益小于阈值ϵ\epsilonϵ,则T为单节点树,把D中实例树最多的类CkC_kCk作为该节点的类标记,返回T
- 否则,对AgA_gAg的每一个取值aia_iai,依Ag=aiA_g=a_iAg=ai将D划分为若干非空子集DiD_iDi,把DiD_iDi中实例树最多的类作为标记,构建子节点,返回树T
- 对第i个子节点,以DiD_iDi为训练集,以A−AgA-A_gA−Ag为特征集,递归调用1-5,得到子树TiT_iTi,返回TiT_iTi
ID3算法只有树的生成,容易过拟合
C4.5算法
C4.5对ID3算法进行了改进,在生成的过程中,选用信息增益比来选择特征。
3.决策树的剪枝
决策树的生成过程可能出现过拟合现象,构建过于复杂的树,降低泛化能力。
解决方法是考虑降低决策树的复杂度,对已生成的树进行简化,称为剪枝。
决策树的剪枝往往是通过极小化决策树模型整体的损失函数(loss function)来实现。
损失函数
设树T的叶节点个数为∣T∣|T|∣T∣,t是树T的叶节点,该叶节点有NtN_tNt个样本点,其中k类有NtkN_{tk}Ntk个,Ht(T)H_t(T)Ht(T)为叶节点T上的经验熵,α⩾0\alpha\geqslant0α⩾0为参数,用来调节模型复杂度。
则决策树的损失函数定义为:
Cα(T)=∑t=1∣T∣NtHt(T)+α∣T∣C_{\alpha}(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T|Cα(T)=∑t=1∣T∣NtHt(T)+α∣T∣
其中第一项表示表示对训练集的拟合程度,第二项用于控制模型复杂度。α\alphaα较大倾向于选择简单的模型,α\alphaα较大倾向于选择复杂的模型
下面介绍剪枝算法
算法
输入:生成算法产生的整个树T,参数α\alphaα
输出:修剪后的子树TαT_{\alpha}Tα
- 计算每个节点的经验熵
- 递归地从树的叶节点向上回缩 设一组叶节点回缩到其父节点前后的的整体树分别为TBT_BTB和TAT_ATA,其对应的损失函数分别为Cα(TB)C_{\alpha}(T_B)Cα(TB)与Cα(TA)C_{\alpha}(T_A)Cα(TA),若Cα(TA)⩽Cα(TB)C_{\alpha}(T_A)\leqslant C_{\alpha}(T_B)Cα(TA)⩽Cα(TB),则进行剪枝,即将父节点变为新的叶节点
- 返回2 知道不能继续为止 得到损失函数最小的子树TαT_{\alpha}Tα
CART算法
需要补充 暂时先不写