机器学习(二)---决策树算法总结

1. 综述

       决策树就是通过一系列规则对数据进行分类的一种算法,可以分为分类树和回归树两类,分类树处理离散变量的,回归树是处理连续变量。

       样本一般都有很多个特征,有的特征对分类起很大的作用,有的特征对分类作用很小,甚至没有作用。如决定是否对一个人提供贷款时,这个人的信用记录、收入等就是主要的判断依据,而性别、婚姻状况等等就是次要的判断依据。决策树构建的过程,就是根据特征的决定性程度,先使用决定性程度高的特征分类,再使用决定性程度低的特征分类,这样构建出一棵倒立的树,就是我们需要的决策树模型,可以用来对数据进行分类。决策树学习的过程可以分为三个步骤:

       1)特征选择,即从众多特征中选择出一个作为当前节点的分类标准;

       2)决策树生成,从上到下构建节点;

       3)剪枝,为了预防和消除过拟合,需要对决策树剪枝。

2.评价

优点:

1:理解和解释起来简单,且决策树模型可以想象,对中间值的缺失不敏感,可以处理不相关特征数据;
2
:需要准备的数据量不大,而其他的技术往往需要很大的数据集,需要创建虚拟变量,去除不完整的数据,但是该算法对于丢失的数据不能进行准确的预测
3
:决策树算法的时间复杂度(即预测数据)是用于训练决策树的数据点的对数
4
:能够处理数字和数据的类别(需要做相应的转变),而其他算法分析的数据集往往是只有一种类型的变量
5
:能够处理多输出的问题
6
:使用白盒模型,如果给定的情况是在一个模型中观察到的,该条件的解释很容易解释的布尔逻辑,相比之下,在一个黑盒子模型(例如人工神经网络),结果可能更难以解释
7
:可能使用统计检验来验证模型,这是为了验证模型的可靠性
8
:从数据结果来看,它执行的效果很好,虽然它的假设有点违反真实模型

缺点:

1:决策树算法学习者可以创建复杂的树,但是没有推广依据,这就是所谓的过拟合,为了避免这种问题,出现了剪枝的概念,即设置一个叶子结点所需要的最小数目或者设置树的最大深度
2
:决策树的结果可能是不稳定的,因为在数据中一个很小的变化可能导致生成一个完全不同的树,这个问题可以通过使用集成决策树来解决
3
:众所周知,学习最佳决策树的问题是已知的NP完全下最优的几个方面,甚至简单的概念——因此,实际决策树学习算法是基于启发式算法,如贪婪算法,寻求在每个节点上的局部最优决策。这样的算法不能保证返回全局最优决策树。这可以减轻训练多棵树的合奏学习者,在那里的功能和样本随机抽样更换。
4
:这里有一些概念是很难的理解的,因为决策树本身并不难很轻易的表达它们,比如说异或校验或复用的问题。

5:决策树学习者很可能在某些类占主导地位时创建有有偏异的树,因此建议用平衡的数据训练决策树

6 处理连续变量不好;类别较多时,错误增加的比较快;可规模性一般。

适用数据类型:数值型和标称型。

3.工作原理

主要的决策树算法包括ID3C4.5CART

       ID3把信息增益作为选择特征的标准。由于取值较多的特征(如学号)的信息增益比较大,这种算法会偏向于取值较多的特征。而且该算法只能用于离散型的数据,优点是不需要剪枝。C4.5ID3比较类似,区别在于使用信息增益比替代信息增益作为选择特征的标准,因此比ID3更加科学,并且可以用于连续型的数据,但是需要剪枝。

       CART(Classification And Regression Tree)采用的是Gini作为选择的标准。Gini越大,说明不纯度越大,这个特征就越不好。

       什么是决策树/判定树(decision tree):判定树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。

算法流程:

·        树以代表训练样本的单个结点开始(步骤1)。

·        如果样本都在同一个类,则该结点成为树叶,并用该类标号(步骤2 3)。

·        否则,算法使用称为信息增益的基于熵的度量作为启发信息,选择能够最好地将样本分类的属性(步骤6)。该属性成为该          结点的测试判定属性(步骤7)。在算法的该版本中,

·        所有的属性都是分类的,即离散值。连续属性必须离散化(根据阈值)。

·        对测试属性的每个已知的值,创建一个分枝,并据此划分样本(步骤8-10)。

·        算法使用同样的过程,递归地形成每个划分上的样本判定树。一旦一个属性出现在一个结点上,就不必该结点的任何后代             上考虑它(步骤13)。

·        递归划分步骤仅当下列条件之一成立停止:

·        (a) 给定结点的所有样本属于同一类(步骤2 3)。

·        (b) 没有剩余属性可以用来进一步划分样本(步骤4)。在此情况下,使用多数表决(步骤5)。

·        这涉及将给定的结点转换成树叶,并用样本中的多数所在的类标记它。替换地,可以存放结

·        点样本的类分布。

·        (c) 分枝

·        test_attribute = a i 没有样本(步骤11)。在这种情况下,以 samples 中的多数类

·        创建一个树叶(步骤12

                                             机器学习(二)---决策树算法总结_第1张图片

                                                 机器学习(二)---决策树算法总结_第2张图片

4. 熵(entropy)概念:

       决策树学习的关键是如何选择最优划分属性。划分属性时,我们希望决策树的分支结点所包含的样本尽可能的属于同一类别,即结点的“纯度”越来越高。

       1948年,香农提出了信息熵(entropy)“的概念一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者是我们一无所知的事情,需要了解大量信息==>信息量的度量就等于不确定性的多少,变量的不确定性越大,熵也就越大。信息熵是度量样本集合纯度最常用的一种指标。信息熵越小,样本集合纯度越高。

       (1)信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。ID3决策树算法以信息增益为准则来选择划分属性。

       (2)信息增益准则对可取值数目较多的属性(比如编号,数目最多,每个编号仅对应一个样本)有所偏好,为减少这种偏好带来的不利影响,C4.5算法使用“增益率”来选择最优划分属性,但需要注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

       (3)CART决策树使用“基尼系数”来选择属性数据集D的纯度可用基尼值Gini(D)来度量。Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此,Gini(D)越小,数据集D的纯度越高。

5. 树剪枝叶(避免overfitting)

       剪枝是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确的分类训练样本,节点划分过程将不断重复,有时会造成决策树分支太多,这时就有可能训练样本学的“太好”了,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险。

       决策树剪枝的基本策略有“预剪枝”和“后剪枝”。预剪枝是指在决策树生成过程中,对每个节点在划分前后进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶节点;后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能的优化,则将该子树替换为叶结点。

6. 连续与缺失值

6.1连续值处理

       由于连续属性的可取数目不再有限,因此,不能直接根据属性的可取值来对结点进行划分。此时可使用属性离散化,最简单的策略是采用二分法对连续值进行处理,这也是C4.5算法采用的机制。可根据公式计算。需要注意的是,与离散变量不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。如父结点“密度<0.381,子结点还可以使用“密度<0.294

6.2缺失值处理

       现实任务中常会遇到不完整的样本,即样本的某些属性值缺失给定。我们需要解决两个问题:

(1)如何在属性值缺失的情况下进行划分属性选择?

(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

7.多变量决策树

       若我们把每个属性视为坐标空间中的一个坐标轴,则d个属性描述的样本就对应了d维空间的一个数据点,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界。决策树所形成的分类边界有一个明显的特点---轴平行,即它的分类边界由若干个与坐标轴平行的分段组成。

       分类边界的每一段都是与坐标值平行的。这样的分类边界使得学习结果有较好的可解释性,因为每段划分都直接对应了某个属性取值,但在学习任务的真实分类边界比较复杂时,必须使用很多段划分才能获得较好的近似,此时的决策树会相当复杂,由于要进行大量的属性测试,预测时间开销会很大。

机器学习(二)---决策树算法总结_第3张图片

       若能使用斜的划分边界,则决策树模型将大为简化。“多变量决策树”就是能实现这样的“斜划分”甚至更复杂的决策树。以实现“斜划分”多变量决策树为例,在此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试。此时不是为每个非叶结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器。

                   机器学习(二)---决策树算法总结_第4张图片机器学习(二)---决策树算法总结_第5张图片  

8.算法应用

1、C++实现


2、Python实现

 


 

你可能感兴趣的:(★机器学习)