决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。
决策树将算法组织成一颗树的形式。其实这就是将平时所说的if-then语句构建成了树的形式。这个决策树主要包括三个部分:内部节点、叶节点和边。内部节点是划分的属性,边代表划分的条件,叶节点表示类别。构建决策树就是一个递归地选择内部节点,计算划分条件的边,最后到达叶子节点的过程。
图9-1决策树结构决策树算法有以下7个特点:
(1) 决策树是从训练数据中学习得出一个树状结构的模型,通过做出一系列决策(选择)来对数据进行划分,这类似于针对一系列问题进行选择。
(2) 决策树属于判别模型。
(3) 决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果。
(4) 决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新数据进行预测。
(5) 决策树算法属于监督学习方法。
(6) 决策树归纳的基本算法是贪心算法,自顶向下来构建决策树。(贪心算法:在每一步选择中都采取在当前状态下最好优的选择。)
(7) 在决策树的生成过程中,分割方法即属性选择的度量是关键。
决策树的算法思想如下:
输入:训练数据集,特征集,阈值。
其中:数据集,特征,是数据集的熵,是中特征取第个值的样本子集,是数据集的熵,是数据集对特征的条件熵,是中属于第类的样本子集。是特征取值的个数,是类的个数。
输出:决策树。
(1) 如果中所有实例属于同一类,则置为单结点树,并将作为该结点的类,返回。
(2) 如果,则置为单结点树,并将中最多的类作为该节点的类,返回。
否则,根据相应公式计算中各个特征对的信息增益、信息增益率和基尼指数,选择最合适的特征。
(3) 如果的得分小于,则置为单结点树,并将作为该结点的类,返回。
否则,根据特征取值,对数据进行划分,继续递归构造决策树,返回。
建立决策树的关键,即在当前状态下选择哪个属性作为分类依据。
根据不同的目标函数,建立决策树主要有一下三种算法:ID3(Iterative Dichotomiser)、C4.5、CART(Classification And Regression Tree)。
ID3(Iterative Dichotomiser)算法最早是由罗斯昆(J. Ross Quinlan)于1975年提出的一种决策树构建算法,算法的核心是“信息熵”,期望信息越小,信息熵越大,从而样本纯度越低。ID3 算法是以信息论为基础,以信息增益为衡量标准,从而实现对数据的归纳分类。
算法是参考了奥卡姆剃刀(用较少的东西,同样可以做好事情)的原则:越是小型的决策树越优于大的决策树。
ID3 算法的核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。算法采用自顶向下的贪婪搜索遍历可能的决策树空间(C4.5 也是贪婪搜索)。
其大致步骤为:
(1) 初始化特征集合和数据集合。
(2) 计算数据集合信息熵和所有特征的条件熵,选择信息增益最大的特征作为当前决策节点。
(3) 更新数据集合和特征集合(删除上一步使用的特征,并按照特征值来划分不同分支的数据集合)。
(4) 重复 2,3 两步,若子集值包含单一特征,则为分支叶子节点。
ID3 使用的分类标准是信息增益,它表示得知特征的信息而使得样本集合不确定性减少的程度。
信息增益越大表示使用特征来划分所获得的“纯度提升越大”。对信息增益率进行计算,会使用到信息熵、条件熵和信息增益等概念。
信息熵
信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,随机变量的不确定性就越大信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。信息熵的公式如下:
表9-1训练数据序号 | 年龄 | 有工作 | 有自己的房子 | 信贷情况 | 类别 |
---|---|---|---|---|---|
0 | 青年 | 否 | 否 | 一般 | 否 |
1 | 青年 | 否 | 否 | 好 | 否 |
2 | 青年 | 是 | 否 | 好 | 是 |
3 | 青年 | 是 | 是 | 一般 | 是 |
4 | 青年 | 否 | 否 | 一般 | 否 |
5 | 中年 | 否 | 否 | 一般 | 否 |
6 | 中年 | 否 | 否 | 好 | 否 |
7 | 中年 | 是 | 是 | 好 | 是 |
8 | 中年 | 否 | 是 | 非常好 | 是 |
9 | 中年 | 否 | 是 | 非常好 | 是 |
10 | 老年 | 否 | 是 | 非常好 | 是 |
11 | 老年 | 否 | 是 | 好 | 是 |
12 | 老年 | 是 | 否 | 好 | 是 |
13 | 老年 | 是 | 否 | 非常好 | 是 |
14 | 老年 | 否 | 否 | 一般 | 否 |
以表9-1的数据为例,特征为::“年龄”、:“有工作”、:“有自己的房子”、:“信贷情况”;标签为“类别”,这里只有“是、否”两类,因此代表类别,本训练数据总共有15个样本,因此,类别1有9个样本(类别为“是”),类别2有6个样本(类别为“否”),根据信息熵的公式,得到:
条件熵
针对某个特征,对于数据集的条件熵为:
是特征,是特征取值。
表9-1的训练数据按年龄特征划分:可以得到表9-2的结果:
表9-2按年龄划分的统计信息年龄 | 数量 | 是 | 否 |
---|---|---|---|
青年 | 5 | 2 | 3 |
中年 | 5 | 3 | 2 |
老年 | 5 | 4 | 1 |
根据表9-2计算得到的条件熵:
青年
中年
老年
年龄
信息增益
信息增益表示得知特征的信息条件下,信息不确定性减少的程度。
信息增益 = 信息熵 - 条件熵:
老年老年
同理可以求出其它特征的信息增益,选择信息增益最大的特征进行分裂。
ID3 算法的核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。ID3算法有以下缺点:
(1) ID3 没有剪枝策略,容易过拟合。
(2) 信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于1。
(3) 只能用于处理离散分布的特征。
(4) 没有考虑缺失值。
C4.5 算法是对 ID3 算法的改进,主要改进点如下:
(1) ID3选择属性用的是子树的信息增益, C4.5 算法最大的特点是克服了 ID3 对特征数目的偏重这一缺点,引入信息增益率来作为分类标准。
(2) 在决策树构造过程中进行剪枝,引入悲观剪枝策略进行后剪枝。
(3) 对非离散数据也能处理。
(4) 能够对不完整数据进行处理。通过将连续特征离散化,假设个样本的连续特征有个取值,C4.5 将其排序并取相邻两样本值的平均数,个取值总共个划分点,分别计算以该划分点作为二元分类点时的信息增益,并选择信息增益最大的点作为该连续特征的二元离散分类点。
对于缺失值的处理可以分为两个子问题:
(1) 在特征值缺失的情况下进行划分特征的选择?即,如何计算特征的信息增益率?C4.5 的做法是:对于具有缺失值特征,用没有缺失的样本子集所占比重来折算。
(2) 选定该划分特征,对于缺失该特征值的样本如何处理?即,到底把这个样本划分到哪个结点里?C4.5 的做法是:将样本同时划分到所有子节点,不过要调整样本的权重值,其实也就是以不同概率划分到不同节点中。
C4.5用的是信息增益率作为划分标准,利用信息增益率可以克服信息增益的缺点,其公式为:
称为特征的固有值,是特征的取值个数。
继续使用表9-1的训练数据,综合利用信息熵和信息增益的公式,计算可得:
老年老年
则:
老年老年
这里需要注意,信息增益率对可取值较少的特征有所偏好(分母越小,整体越大),因此 C4.5 并不是直接用增益率最大的特征进行划分,而是使用一个启发式方法:先从候选划分特征中找到信息增益高于平均值的特征,再从中选择增益率最高的。
剪枝(Pruning)是决策树学习算法应对过拟合的主要手段。
在决策树学习中,为了尽可能正确分类训练样本,节点划分过程将不断地重复,有时候会造成决策树的分支过多,这时就可能因训练样本学的太好了,以至于把训练样本自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,需要主动去掉一些分支来降低过拟合的风险。
剪枝策略
决策树剪枝的基本策略有预剪枝(Pre-Pruning)和后剪枝(Post-Pruning):
(1) 预剪枝是指在决策树生成的过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化能力的提升,则停止划分并将当前节点标记为叶节点。预剪枝不仅可以降低过拟合的风险而且还可以减少训练时间,但另一方面它是基于“贪心”策略,会带来欠拟合风险。
(2) 后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能的提升,则将该子树替换为叶节点。
剪枝案例
对于判断性能是否得到了提升,我们可以将数据集划分成两部分,一部分用于训练,另一部分用于验证,对性能进行评估。如我们对上面的西瓜数据集随机分成两部分,表9-3 是训练集,表9-4 是验证集:
表9-3 西瓜数据训练集编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 好瓜 |
---|---|---|---|---|---|---|---|
1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
6 | 青绿 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 是 |
7 | 乌黑 | 稍蜷 | 浊响 | 稍糊 | 稍凹 | 软粘 | 是 |
10 | 青绿 | 硬挺 | 清脆 | 清晰 | 平坦 | 软粘 | 否 |
14 | 浅白 | 稍蜷 | 沉闷 | 稍糊 | 凹陷 | 硬滑 | 否 |
15 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 否 |
16 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 硬滑 | 否 |
17 | 青绿 | 蜷缩 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 好瓜 |
---|---|---|---|---|---|---|---|
4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
8 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 硬滑 | 是 |
9 | 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
11 | 浅白 | 硬挺 | 清脆 | 模糊 | 平坦 | 硬滑 | 否 |
12 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 软粘 | 否 |
13 | 青绿 | 稍蜷 | 浊响 | 稍糊 | 凹陷 | 硬滑 | 否 |
预剪枝
预剪枝在节点划分前来确定是否继续增长,及早停止增长的主要方法有:
(1) 节点内数据样本低于某一阈值;
(2) 所有节点特征都已分裂;
(3) 节点划分前准确率比划分后准确率高。
假设我们按照信息增益的原则来进行属性的划分,可以得到如下的决策树:
图9-2 基于表生成未剪枝的决策树首先,基于信息增益我们会选择“脐部”进行划分,产生 3 个分支,如上图的①。是否进行这个划分呢,这时候就需要对划分前后的性能进行评估。
在划分前所有的样本集中在根节点。若不进行划分,根据算法该节点被标记为叶节点,类别标记为训练样本数最多的类别(最多的样本的类不唯一时,可以任选其中一类)。假设我们将这个叶节点标记为好瓜(上表训练集中的正例与负例一样多,选择其中好瓜作为标签),用上表中的测试集对这个单点决策树进行评估,那么编号{4,5,8}的样本被正确分类,另外四个样本被错误分类,于是验证集的精度为$。
图9-3 基于表生成预剪枝的决策树在使用属性“脐部”划分之后,上图的②③④三个节点被标记为“好瓜”、“好瓜”、“坏瓜”。此时验证集中编号为{4,5,8,11,12}的样本被正确的分类,验证集的精度为。因此,可以选择用“脐部”对瓜进行有效的划分。
然后决策算法要对节点②进行划分,基于信息增益的原则选出属性“色泽”进行划分,可以看到青绿和乌黑的样本被划分为正例,浅白的样本被划分为负例。然而使用色泽进行划分之后,验证集中编号为{4,8,11,12}的样本被正确分类,可以看到与上面的相比,验证集编号为{5}的样本的分类结果由正确变成了错误,使得样本集的精度下降为57.1% 。因此,预剪枝策略禁止在②节点处划分。
对节点③我们使用“根蒂”进行划分,划分后验证集的精度不改变,没有能提升验证集的精度,因此,根据预剪枝的策略,禁止在③几点处进行划分。
对于节点④,所有的训练样本已经属于同一类别,因此不需要进行划分。
因此最终生成的决策树就是上图,验证集的精度为 71.4% 。这是一棵仅有一层的决策树,亦成为决策树桩(Decision Dtump)。
预剪枝的优点:对比剪枝前与剪枝后可以发现,预剪枝是的决策树的很多分支都没有“展开”,这不仅降低了过拟合的风险,还显著的降低了训练的时间开销和测试时间开销。
缺点:有些分支的当前划分虽然不能提升泛化性能、甚至是导致泛化性能的下降,但在其基础上进行后续的划分却有可能导致性能显著提高;预剪枝是基于贪心本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险。
后剪枝
后剪枝在已经生成的决策树上进行剪枝,从而得到简化版的剪枝决策树。
C4.5 采用的悲观剪枝方法,用递归的方式从低往上针对每一个非叶子节点,评估用一个最佳叶子节点去代替这课子树是否有益。如果剪枝后与剪枝前相比其错误率是保持或者下降,则这棵子树就可以被替换掉。C4.5 通过训练数据集上的错误分类数量来估算未知样本上的错误率。
后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但同时其训练时间会大的多。
后剪枝先从训练一棵完整的决策树,如上图的未剪枝的决策树,可以知道此时的验证集精度为 42.9%。
图9-4基于表生成未剪枝的决策树后剪枝策略首先考察上图的⑥节点。将其领衔的分支剪除,相当于把节点⑥标记为叶节点。替换后的叶节点包含编号为{7,15}的训练样本,于是该节点被标记为“好瓜”,此时决策树验证集的精度提升到了57.1%,于是节点⑥进行后剪枝。如下图所示:
图9-5 基于表生成后剪枝的决策树然后考察节点⑤,将其领衔的子树替换为叶节点,替换后的节点包含{6,7,15}的训练样例,叶节点类别标记为好瓜,此时验证集的精度为57.1%,因此不进行剪枝。
对节点②,将其领衔的子树替换为叶节点,则替换后的叶节点包含编号为{1,2,3,14}的训练样本,叶节点被标记为“好瓜”。此时验证集的精度为71.4%,因此,记性剪枝的操作。
对于节点③和①,若将其领衔的子树替换为叶节点,获得验证集精度分别为71.4%和42.9%,均没有提高,因此不进行剪枝。
最终得到的结果就是上图,验证集的精度为 71.4%。
对比预剪枝和后剪枝可以看出,后剪枝决策树通常比预剪枝决策树保留了更多的分支。
剪枝总结
一般情况下,后剪枝的欠拟合风险更小,泛化性能往往优于预剪枝决策树。但后剪枝决策过程是在生产完全决策树之后进行的,并且要自底向上的对树种的所有非叶子节点进行逐一考察,因此训练时间开销比未剪枝决策树和预剪枝决策树都要打很多。
C4.5算法的核心思想就是以信息增益率来度量特征选择,选择信息增益率最大的特征进行分裂。C4.5算法有以下缺点:
(1) C4.5剪枝策略可以再优化。
(2) C4.5用的是多叉树,用二叉树效率更高。
(3) C4.5 只能用于分类。
(4) C4.5 使用的熵模型拥有大量耗时的对数运算,连续值还有排序运算。
(5) C4.5 在构造树的过程中,对数值属性值需要按照其大小进行排序,从中选择一个分割点,所以只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法运行。
CART(Classification and Regression Tree,分类回归树),CART算法既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree)。回归树算法上与分类树相似,在分类和回归时,其算法流程大致相同,但是其特征划分、输出预测结果等步骤是不同的。
CART分类时候用基尼指数来选择属性,CART回归时候用均方差来选择属性。
如果目标变量是离散的,称为分类树。
如果目标变量是连续的,称为回归树。
CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能是“是”或者“否”,即使一个特征有多个取值,也是把数据分为两部分。
CART分类树输出的是样本的类别,属性选择的标准度量方法是基尼指数。
当基尼指数越小的时候,说明样本之间的差异性小,不确定程度低。基尼指数最小为根节点,逐节分裂。
ID3中使用了信息增益选择特征,增益大优先选择。C4.5中,采用信息增益率选择特征,减少因特征值多导致信息增益大的问题。CART分类树算法使用基尼指数来代替信息增益率,基尼指数代表了模型的不纯度,基尼指数越小,不纯度越低,特征越好。这和信息增益(比)相反。
对于决策树建立后做预测的方式,CART分类树采用叶子节点里概率最大的类别作为当前节点的预测类别。
基尼指数
基尼指数也称为基尼系数,表示在样本集合中一个随机选中的样本被分错的概率。
假设一个数据集中有个类别,第个类别的概率为,则基尼指数的表达式为:
上面的公式中,表示第个类别出现的概率,那么显然就是当前数据集中,除了第个类别以外的其他所有类别出现的概率,所以两者相乘就是当前数据集中,第个类别和其他所有类别都出现的概率,这个概率越高,数据集越不纯。
设代表特征集,样本集合的基尼指数:假设集合中有个类别,每个类别的概率是,其中表示类别的样本类别个数,表示样本总数,第个类别的数量为,则样本的基尼指数表达式为:
对于样本,如果根据特征集的某个值,把分成、到部分,则在特征集的条件下,的基尼指数表达式为:
2.离散值划分决策树的例子
根据表9-1的数据,应用CART算法,使用基尼指数划分,生成决策树:
根据公式:
青年
中年
老年
由于青年和老年相等,都为,且最小,所以青年和老年都可以选a作的最优切分点。
求特征和的基尼指数:
是
是
由于和只有一个切分点,所以它们就是最优切分点。
求特征的基尼指数:
非常好
好
一般
一般最小,所以一般为的最优切分点。
在、、、几个特征中,是最小,所以选择特征为最优特征,是为其最优切分点。于是根结点生成两个子结点,一个是叶结点。对另一个结点继续使用以上方法在、、中选择最优特征及其最优切分点,结果是是。依此计算得知,所得结点都是叶结点。
离散值处理
CART分类树算法对离散值的处理,采用的思路:不停地二分离散特征。
在ID3、C4.5,特征被选取建立决策树节点,如果它有多个类别我们会在决策树上建立一个多叉点,这样决策树是多叉树。CART采用的是不停的二分,决策树为二叉树。
假设特征有个离散值。分类标准是:每一次将其中一个特征分为一类,其他非该特征分为另一类。依照这个标准遍历所有分类情况,计算每个分类下的基尼指数,最后选择最小的作为最终的特征划分。
如图9-6,第1次取为类别1,那么剩下的特征 ,,……, 为类别2,由此遍历,第次取为类别1,那么剩下的特征为类别2。
CART的特征会多次参与节点的建立,而在ID3或C4.5的一颗子树中,离散特征只会参与一次节点的建立。
图9-6 CART算法对离散值的划分 4.连续值处理具体思路:个样本的连续特征有个,从小到大排列,CART取相邻两样本值的平均数做划分点,一共取个,其中第个划分点表示为:。分别计算以这个点作为二元分类点时的基尼指数。选择基尼数最小的点为该连续特征的二元离散分类点。
比如取到的基尼指数最小的点为,则小于的值为类别1,大于的值为类别2,这样就做到了连续特征的离散化,接着采用基尼指数的大小来度量特征的各个划分点。
划分例子见图9-7。
图9-7 CART算法对连续值的划分回归树:输出的是一个数值,特征选择采用均方差。
CART(Classification and Regression Tree,分类回归树),从名字就可以看出其不仅可以用于分类,也可以应用于回归。其回归树的建立算法上与分类树部分相似,这里简单介绍下不同之处。
在回归模型中,我们使用常见的均方差度量方式,对于任意划分特征,对应的任意划分点
两边划分成的数据集 和 ,求出使 和 各自集合的均方差最小,同时 和 的均方差之和最小所对应的特征和特征值划分点。表达式为:其中,为数据集的样本输出均值,为数据集的样本输出均值。
相比ID3,CART遍历所有的特征和特征值,然后使用二元切分法划分数据子集,也就是每个节点都只会分裂2个分支。接着计算数据子集的总方差来度量数据子集的混乱程度,总方差越小数据子集越纯,最后选择总方差最小的划分方式对应的特征和特征值,而二元切分的依据就是将小于等于这个特征值和大于这个特征值的数据划分为两块。这里说的总方差一般就是通过数据子集的样本输出值的均方差乘以数据子集的样本个数来计算。最后的输出结果是取各叶子节点数据的中位数或均值。
CART算法采用一种“基于代价复杂度的剪枝”方法进行后剪枝,这种方法会生成一系列树,每个树都是通过将前面的树的某个或某些子树替换成一个叶节点而得到的,这一系列树中的最后一棵树仅含一个用来预测类别的叶节点。然后用一种成本复杂度的度量准则来判断哪棵子树应该被一个预测类别值的叶节点所代替。
这种方法需要使用一个单独的测试数据集来评估所有的树,根据它们在测试数据集熵的分类性能选出最佳的树。
核心思想:
(1) 计算每一个结点的条件熵。
(2) 递归的从叶子节点开始往上遍历,减掉叶子节点,然后判断损失函数的值是否减少,如果减少,则将父节点作为新的叶子节点。
(3) 重复第二步,直到完全不能剪枝。
CART算法既可以用于分类,也可以用于回归。在分类和回归时,其算法流程大致相同,但是其特征划分、树结构、使用数据和剪枝等方面是不同的。
1.特征划分
CART算法用基尼指数来选择属性(分类),或用均方差来选择属性(回归)。
2.树结构
CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。
3.使用数据
CART算法既可以使用连续型的数据,也可以使用离散型的数据,同时支持特征的多次使用。
4.剪枝
CART算法支持剪枝操作,采用一种“基于代价复杂度的剪枝”方法进行后剪枝。
建立决策树主要有一下三种算法:ID3、C4.5 和 CART,总结对比下三者之间的差异。ID3、C4.5、CART这三种算法划分的基本标准、剪枝策略,总结如表9-5:
表9-5三种决策树算法的差异算法 | 支持模型 | 树结构 | 特征选择 | 连续值处理 | 缺失值处理 | 剪枝 | 特征属性多次使用 |
---|---|---|---|---|---|---|---|
ID3 | 分类 | 多叉树 | 信息增益 | 不支持 | 不支持 | 不支持 | 不支持 |
C4.5 | 分类 | 多叉树 | 信息增益率 | 支持 | 支持 | 支持 | 不支持 |
CART | 分类 回归 | 二叉树 | 基尼指数 均方差 | 支持 | 支持 | 支持 | 支持 |
1.优点
(1) 便于理解和解释。计算简单,树的结构可视化,可解释性强。
(2) 训练需要的数据少,不需要数据规范化。
(3) 能够处理连续型数据和离散型数据。
(4) 可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。
(5) 比较适合处理有缺失属性的样本。
2.缺点
(1) 容易造成过拟合,需要采用剪枝操作。
(2) 忽略了数据之间的相关性。
(3) 对于各类别样本数量不一致的数据,信息增益会偏向于那些更多数值的特征。
(4) 对新增加的样本,需要重新调整树结构。
[1] QUINLAN J R . Introduction of decision trees[J]. Machine Learning, 1986, 1(1):81-106.
[2] QUINLAN J R. C4. 5: programs for machine learning[M]. Boston: Morgan Kaufmann,1993.
[3] BREIMAN L, FRIEDMAN J H, OLSHEN R A, et al. Classification and regression trees[M]. New York: Chapman and Hall/CRC,1984
[4] 李航. 统计学习方法[M]. 北京: 清华大学出版社,2019.
[5] 周志华. 机器学习[M]. 北京: 清华大学出版社,2016.
[6] Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning[M]. New York: Springer,2001.
[7] Peter Harrington.机器学习实战[M]. 北京:人民邮电出版社,2013.
[8] CHRISTOPHER M. BISHOP. Pattern Recognition and Machine Learning[M]. New York: Springer,2006.
本文节选自《机器学习入门基础(微课版)》一书,作者:黄海广,徐震,张笑钦。