机器学习-决策树

最优划分属性

      一般而言,随着划分过程不断进行,希望决策树的分支结点所包含的样本尽可能属于同一个类别,即结点的“纯度”越来越高。

信息熵及信息增益

      “信息熵”是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为(k=1,2,...,||),则D的信息熵定义为:

      

      Ent(D)的值越小,则D的纯度越高。例如当样本集合D中的样本只可能属于两个分类时,若D中样本全部属于分类,则D的Ent(D)为0,如果D中样本各有一半属于不同分类,此时D的Ent(D)为1,达到最大。推广到||个分类时,样本集合D的信息熵最小值为0,最大值为。(*由此可以看出分类越多,则信息熵可能越大)

机器学习-决策树_第1张图片

      假定离散属性a有V个可能的取值{,,...,},若使用a来对样本集合D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为的样本,记为。由此可以计算出的信息熵。

      不同分支结点所包含的样本数不同,给分支结点赋予权重||/|D|,即样本数越多的分支结点的影响越大,于是可计算出用属性a对样本集D进行划分所获得的“信息增益”:

      

      一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。因此可用信息增益来进行决策树的划分属性选择,即选择属性a使得信息增益Gain(D,a)最大。

增益率

      信息增益对可取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,可以使用“增益率”来选择最优划分属性,增益率定义为:

      

其中

      

称为属性a的“固有值”。属性a的可能取值数目越多(即V越大),则IV(a)的值通常会越大(*原理同信息熵)。

      *信息增益对可取值数目较多的属性有所偏好,而增益率则对可取值数目较少的属性有所偏好,因此即不直接选择信息增益最大的候选划分属性,也不直接选择增益率最大的候选划分属性,而是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

基尼指数

      除了信息增益和增益率外,还可以使用“基尼指数”来选择划分属性,数据集D的纯度可用基尼指数来度量:

      

                  

      直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此,Gini(D)越小,则数据集D的纯度越高。

      假定离散属性a有V个可能的取值{,,...,},若使用a来对样本集合D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为的样本,记为。由此可以计算出属性a的基尼指数:

      

      于是,在候选属性集合A中,选择那个使得划分后基尼指数最小的属性作为最优划分属性。即选择属性a使得基尼指数Giniindex(D,a)最小。

剪枝处理

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

      决策树剪枝的基本策略主要有两种:

      1.“预剪枝”

      2.“后剪枝”

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

连续属性处理

      由于连续属性的可取值数目不再有限,因此,不能直接根据连续属性的可取值来对结点进行划分。此时,需要对连续属性进行离散化处理。最简单的策略是采用二分法。

      给定样本集D和连续属性a,假定a在D上出现了n了不同的取值,将这些值从小到大进行排序,记为{,,...,}。基于划分点t可将D分为子集,其中包含了在属性a上取值大于t的样本,包含了在属性a上取值不大于t的样本。显然,对相邻的属性取值来说,t在区间[,)中取任意值所产生的划分结果相同。因此,对连续属性a,可考察包含n-1个元素的候选划分点集合:

      

      即把区间[,)的中位点作为候选划分点。然后,就可以像离散属性值一样来考察这些划分点,选取最优的划分点来进行样本集合的划分。即:

      

                         

      其中Gain(D,a,t)是样本集D基于划分点t二分后的信息增益。找到使其取最大值的划分点t,此时的信息增益即为该连续属性a的信息增益。

含缺失值属性处理

      现实任务中常会遇到不完整样本,即样本的某些属性值缺失。尤其是在属性数目较多的情况下,往往会有大量样本出现缺失值。如果简单地放弃不完整样本,仅使用无缺失值的样本来进行学习,显然是对数据信息极大的浪费。

      此时需要解决两个问题:

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

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

对于问题1:

      给定训练集D和属性a,令表示D中在属性a上没有缺失值的样本子集。可以根据来判断属性a的优劣。假定属性a有V个可取值{,,...,},令来表示中在属性a上取值为的样本子集,表示中属于第k类(k=1,2,...,)的样本子集。假定每个样本x赋予一个权重并定义:

      

        (1k)

        (1vV)

      在决策树开始阶段,D中各样本的权重初始化为1.直观地看,对属性a,表示无缺失值样本所占的比例,表示无缺失值样本中第k类所占的比例,则表示无缺失值样本中在属性a上取值为的样本所占的比例。

基于上述定义,可将信息增益推广为:

 (*由于该属性含有缺失值,所以其信息增益相对变小了)

其中:

      此时,选择信息增益最大的属性a作为样本集合D的最优划分属性。

对于问题2:

      若样本x在划分属性a上的取值已知,则将x划入与其取值对应的子结点,且样本权值在子结点中保持为。若样本x在划分属性a上的取值未知,则将x同时划入所有子结点,且样本权值在属性对应的子结点中调整为*。直观地看,这就是让同一样本以不同的概率划入到不同的子结点中去。

你可能感兴趣的:(机器学习,决策树,算法)