一种对实例进行分类的树形结构,通过多层判断区分目标所属类别、
本质:通过多层判断,从训练数据集中归纳出一组分类规则。
优点:
缺点:
定义:分类决策树模型是一种描述对实例进行分类的树形结构。
决策树由节点和有向边组成。结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点:这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分类,直至达到叶节点。
用大白话来说,就是对一个实例进行判断,直到该实例不需要进行判断的时候,停止。
例如,你是否有自己的房子,否;继续判断,你是否有工作,否…。
可以将决策树看成一个if-then规则的集合。将决策树转化成if-then规则的集合。将决策树转换成if-then规则的过程是这样的:
决策树上的路径或其对应的if-then规则集合具有一个重要的性质:互斥而且完备。每一个实例都是一条路径或者一条规则所覆盖,而且只被一条路径或一条规则所覆盖。
因为每条从根结点到各叶结点都是不同的路径,但这些路径加起来又包含了所有的选择。
假设给定训练数据集
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} D={(x1,y1),(x2,y2),...,(xN,yN)}
其中, x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( n ) ) T x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T xi=(xi(1),xi(2),...,xi(n))T为输入实例(特征向量),n为特征个数, y i ∈ { 1 , 2 , . . . , K } 为 y_i\in\{1,2,...,K\}为 yi∈{1,2,...,K}为类标记, i = 1 , 2 , . . . , N , N i=1,2,...,N,N i=1,2,...,N,N为样本容量。决策树学习的目标是根据给定的训练数据集构建一个决策树模型,使他能够对实例进行正确的分类。
但我们也可以发现决策树可以有多个,这就取决于我们怎么定义分类的顺序,不同的排列组合,但我们应该选择一个不进对训练数据与很好的拟合,而且对未知数据有很好的预测。
决策树学习用损失函数表示这一目标。决策树学习的损失函数通常是正则化的极大似然函数。决策树学习的策略是以损失函数为目标函数的最小化。
当我们确定了损失函数,决策树的学习问题就变成了损失函数下选择最优决策树的问题。因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题。这样得到的决策树是次最优化的。
NP完全问题:在超多项式时间内解决的问题是不易处理的,通俗来讲,就是以难以解决著称的问题。
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有个最好的分类的过程。这一过程对应着特征空间的划分,也对应这决策树的构建。
大概步骤为:
但是,以上方法生成的决策树可能对训练数据由很好的分类能力,但是对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。
拟合:曲线能否正确描述出样本的特性。
过拟合:太过贴近于训练数据的特征了,在训练集上表现非常优秀,但是在新的测试集上却很拉胯,不具泛化性。大白话来说,就是训练集上猛如虎,测试集上零杠五。
欠拟合:就是训练集的特征没学到,大白话来说,训练集上零杠五。
因此,我们需要对已生成的树自下而上进行剪枝,将数变得更简单,从而使它具有更好的泛化能力。具体的就是,去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点甚至更高的结点改为新的叶结点。
通过上述,我们发现决策树学习算法包括特征选择、决策树的生成与决策树的剪枝过程。
决策树的生成对应于模型的局部选择
决策树的剪枝对应于模型的全局选择
决策树学习常用的算法有ID3,C4.5与CART。
特征选择在于选取对训练数据具有分类能力的特征。如果利用一个特征进行分类的结果与随机分类的结果没有区别,则称这个特征是没有分类能力的。因此如何选择有价值的特征就显得格外重要了。通常特征选择的准则是信息增益或者信息增益比。
首先我们,介绍一下信息增益。
信息熵是度量样本集合中纯度常用的一种指标。假定当前样本集合 D D D 中第 k k k 类样本所占的比例为 p k ( k = 1 , 2 , . . . . , ∣ Y ∣ ) p_k(k=1,2,....,|Y|) pk(k=1,2,....,∣Y∣),则D的信息熵为
E n t ( D ) = ∑ k = 1 ∣ Y ∣ p k l o g 2 p k Ent(D)=\sum_{k=1}^{|Y|}{p_k}log_2{p_k} Ent(D)=k=1∑∣Y∣pklog2pk
E n t ( D ) Ent(D) Ent(D)的值越小,D的纯度越高
假定离散属性a有 V V V 个可能的取值 { a 1 , a 2 , . . . , a V } \{a^1,a^2,...,a^V\} {a1,a2,...,aV},若使用a对样本 D D D 进行划分,则产生 V V V个分支节点。其中第v个分支节点包含了D中所有在属性a上取值为 a v a^v av的样本,记为 D v D^v Dv。那么用属性a对样本D进行划分所获得的信息增益为
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^{V}{\frac{|D^v|}{|D|}Ent(D^v)} Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
一般而言,信息增益越大,意味着使用属性a来进行划分所获得的纯度提升越大。著名的ID3算法就是以信息增益来选择划分属性的。
我们通过上述公式中 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} ∣D∣∣Dv∣也可以看出样本数越多的分支,影响越大。
实际上,信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5算法采用了增益率来选择最优划分属性。增益率定义为
G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) , Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}, Gain_ratio(D,a)=IV(a)Gain(D,a),
其中
I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ IV(a)=-\sum_{v=1}^{V}{\frac{|D^v|}{|D|}log_2{\frac{|D^v|}{|D|}}} IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣称为属性a的固有值,属性a的可能取值越多, I V ( a ) IV(a) IV(a)的值通常会变大,
ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征,递归的选择决策树。具体方法是:从根节点开始,对结点计算所有可能的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点,再对子节点递归的调用以上方法,构建决策树:直到所有特征的信息增益均很小或者没有特征可以选择为止,最后得到一个决策树。
算法为:
输入:训练数据集D,特征值集A阈值 ϵ \epsilon ϵ
输出:决策树T
具体案例:
C4.5的算法 与ID3的算法类似,区别在于C4.5选择特征的依据是信息增益比。
剪枝是决策树学习算法为了解决过拟合的主要方法。在决策树学习中,为了尽可能正确分类训练样本,结果划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学习的太好了,而导致过拟合。
决策树剪枝的基本策略有预剪枝和后剪枝。
预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前的划分不能带来决策树泛化性能提升,则停止划分当前节点并标记为叶节点。后剪枝则是先从训练集生成一个完整的决策树,然后自下而上的对非叶节点进行考察,如果该节点对应的子树替换为叶节点能带来性能提升,则将该子树替换为叶节点。
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 好瓜 |
---|---|---|---|---|---|---|---|
4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
8 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 硬滑 | 是 |
9 | 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
11 | 浅白 | 硬挺 | 清脆 | 模糊 | 平坦 | 硬滑 | 否 |
12 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 软粘 | 否 |
13 | 青绿 | 稍蜷 | 浊响 | 稍糊 | 凹陷 | 硬滑 | 否 |
我们以“脐部”这个属性来演示一下预剪枝。
在划分之前,所有样例集中在根节点。我们可以发现只有编号为 { 4 , 5 , 8 } \{4,5,8\} {4,5,8}的三个样例被分类正确了,正确率只有 3 7 \frac{3}{7} 73。
但是假设用“脐部”这个属性划分:凹陷->好瓜,稍凹->好瓜,平坦->坏瓜。
我们可以发现编号为 { 4 , 5 , 8 , 11 , 12 } \{4,5,8,11,12\} {4,5,8,11,12}的样例被分类正确,正确率为 5 7 \frac{5}{7} 75。这个值是大于 3 7 \frac{3}{7} 73的,所以我们选择用这个特征进行划分。
后剪枝先从训练集生成一颗完整的决策树,然后自底向上的对树中所有的非叶节点去逐一考察,判断他的剪枝前和剪枝后准确度,如果剪枝后准确度更高,则剪枝该分支。
一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。