这篇文章从思想的角度上看李航所表述的决策树,用简单易理解的方向去解释决策树。提出常见的三种决策树方法ID3,C4.5,同时分析他们的不同。(具体的理论部分参考原文)
一、决策树的认识: 这本书中提出的机器学习的三要素:模型、策略、算法。
1,模型: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node )和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。(简单说就是用我们熟悉的树结构去做回归和分类)
2,策略: 学习决策树的策略,也就是决策树的损失函数在原文决策树剪枝部分介绍。简单理解就是:正则化的极大似然函数,也就是模型对数据的拟合程度与模型复杂度(叶子的个数)的和。
3,算法: 决策树的学习算法分为三步:首先递归的选择特征、用选择的特征构造一个决策树、解决过拟合进行决策树剪枝。
二、特征选择:特征选择问题:特征选择在于选取对训练数据具有分类能力的特征。通常特征选择的准则是信息增益或信息增益比。
1,信息增益:
(1)信息熵与条件熵:
信息熵H(x):代表的是随机变量不确定的度量,熵是平均信息量,熵越大,不确定性越大,信息量就越大。
条件熵H(y|x):代表的是一致随机变量X的条件下随机变量y的不确定性的度量。
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵( empirical entropy)和经验条件熵(empirical conditional entropy )。
(2)信息增益:得知特征X的信息而使得类Y的信息的不确定性减少的程度,也是特诊X的信息量。特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验嫡H(D)与特征A给定条件下D的经验条件嫡H(D|A)之差,即
2,信息增益比:特征A对训练数据集D的信息增益比定义为其信息增益g(D,A)与训练数据集D的经验H(D)之比:
三、决策树的生成:
这里分别介绍了ID3,C4.5决策树的生成方法:
1,ID3:id3算法简单的说就是每次选择信息增益最大的特征进行分类,然后根据选择的特征构建整个树。
2,C4.5:c4.5与之不同的就只有每次选择特征的时候用的是信息增益比。
四、剪枝:剪枝的目的是因为在决策树的构建过程中是去尽可能的拟合数据,这样可能会导致过拟合,最极端的情况就是每一个样本一个叶子。剪枝是利用损失函数来做的,让损失函数小。
1,损失函数:损失函数的定义为数据的拟合程度与模型复杂度的和,等价于正则化的极大似然估计。
理解:它的第一项其实是是每个叶子的不确定和,第二项是叶子的个数,二者有一个正则化参数进行平衡。
2,剪枝: 剪枝其实就是当正则化参数 确定时,选择损失函数最小的模型。
也就是每次对内部节点进行移除,条件是移除可以使得我们的损失函数变小。
五、CART算法: 这是另外一个构建决策树的算法,它构建的是一个二叉决策树。模型同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。 CART算法由以下两步组成:决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;决策树剪枝:用验证数据集对己生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。
1,最小二乘回归树,CART回归树的生成: 它每次选择的是一个空间划分(j,s),j代表第j个特征,s是这个特征取的值。让后根据选择划分构建树。
2,分类树的生成: CART分类树的生成与之前ID3一样,每次选择的特征是选择的特征使得数据的不确定越小越好,只是表示的不确定性变成了基尼指数。
3,CART剪枝: CART剪枝算法由两步组成,首先从生成算法产生的决策树T0底端开始不断剪枝,直到T0的根结点,形成一个子树序列代{T0,T1,…,Tn};然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。
(1) 剪枝。 算法的剪枝同样是利用损失函数来做。对于固定的a,一定存在损失函数最小的子树;可以用递归的方法对树进行剪枝,将a从小增大,产生一系列的区间[ai,ai+1),i =0,1,…,n;剪枝得到的子树序列对应着区间[ai,ai+1),i =0,1,…,n的最优子树序列{T0, T1, … , Tn},序列中的子树是嵌套的。(简单说就是改变a,得到一系列对应的最优决策树)
(2) 选择最好的。在剪枝得到的子树序列T0, T1, … , Tn中通过交叉验证选取最优子树Ta,平方误差或基尼指数最小的决策树被认为是最优的决策树。