非参数方法——决策树实现的判别式

介绍
第一部分 参数方法——类密度模型参数估计
第二部分 监督学习——分类(基于似然的方法)
第三部分 监督学习——分类(基于判别式的方法)(参数方法——判别式参数估计)
第四部分 监督学习——回归
第五部分 监督学习——关联规则
第六部分 维度规约(特征的提取和组合)
第七部分 半参数方法
第八部分 非监督学习——聚类
第九部分 非参数方法——密度估计
第十部分 非参数方法——决策树实现的判别式
第十一部分 多层感知器——非参数估计器
第十二部分 局部模型
第十三部分 支持向量机与核机器
第十四部分 隐马尔科夫模型
第十五部分 参数的贝叶斯估计
第十六部分 集成学习——组合多学习器
第十七部分 增强学习
第十八部分 机器学习实验
第十九部分 特征工程与数据预处理

通过参数方法,半参数方法,非参数方法估计先验密度和类似然。然后通过计算后验,并定义判别式函数,来进行判断。
这样的方法都是基于对似然或后验概率的估计的。绕过这些,直接估计判别式函数,而不是通过后验来定义判别式,则为基于判别式的方法。

决策树

决策树是一种实现分治策略的层次数据结构。是一种有效的非参数方法,可用于分类和回归。

对于参数估计,我们定义整个输入空间上的模型,使用所有训练数据来学习模型的参数。
对于非参数方法,在估计密度时,把输入空间划分成由距离度量定义的 局部区域。对每个输入x,使用x周边区域内的训练数据来估计对应的局部模型。

决策树是一种用于监督学习的层次模型,其局部区域通过少数几部递归分裂确定。决策树由内部决策节点和终端树叶组成,每个决策节点对输入进行一个测试,来确定输出分支。这个决策过程从根节点开始,不断递归,直到到达一个树叶节点。

决策树也是一种非参数方法,但不像“非参数方法——密度估计”一节,它不对类密度假定任何参数形式。并且不会预先确定树结构(就像预先确定密度模型)。而是随着学习,不断生长树,添加节点和树叶分支。

每个决策节点m上的都定义一个d为输入空间上的判别式,将空间划分为较小的区域。是一个简单函数,决策树去学习一个复杂函数时,就是将复杂函数分解成一系列简单的决策。

不同的决策树对假设不同的模型,不同的模型确定了判别式的形状和区域的形状。每一个树叶节点有一个输出,对于分类来说,输出就是标号,而对回归而言输出则为数值。


单变量树

在单变量输入时,每个内部节点中的测试只使用实例维度属性中的其中一维,作为输入。
通过训练数据构建树的过程叫做树归纳。但对于给定训练集,存在不止一个对其无错编码的树,我们希望找到的是其中的最小树。树的大小用树中的节点数和决策节点的复杂性度量。寻找最小树是NP完全问题,因此我们必须使用给予启发式的局部搜索过程。

分类树

在用于分类的决策树中,划分的优劣由不纯度来度量。一个划分是纯的,如果对于所有分支,划分后选择相同分支的实例都属于相同的类。对于节点m,令为到达节点m的训练实例集。对于根节点,。其中个属于类,。

如果一个实例到达m节点,那么它说与类的概率估计为。

如果m节点是纯的,那么对于所有i,有为0或1。这时,不再需要进一步划分,并可以添加一个叶子节点,用的类 i 进行标号。


  • 不纯度度量

    常用熵来度量不纯度:
    其中。在信息论中,熵是对一个实例的类代码进行编码所需要的最少位数。

    当然熵并非唯一的度量,对于两类问题,其中,,函数是非负函数,它可以用来度量不纯度,如果它满足以下条件:
    (1)对于任意,。
    (2)
    (3)当p在上时,是递增的,而p在上时,递减。
    函数包含以下几个例子:

    • Gini指数
    • 误分类误差

    对于K>2的情况,可类似地推广。上面三个度量之间并无显著差异。


如果m节点是不纯的,则应当划分实例来降低不纯度。在所有可能的划分中,我们选择最小化划分后不纯度的划分。

在节点m,经节点的决策函数,中的被划分到 j 分支。(如常见的,对离散属性有n个输出分支;对数值属性有2个输出分支)自然地有。

考虑输入为离散属性,在 j 分支中,有个属于类,。

于是对于节点m,决策函数返回输出 j,而实例属于类的概率估计为:

而划分后的总纯度为:

对于输入为数值属性,决策函数通过阈值将输入空间一分为二。在个数据点之间,存在个可能的作为阈值(个点中每两个点的中值点)。最佳的划分点总是存在于属于不同的两个相邻点之间。这样,在构建数值属性的决策树时,检查每个中值点,选择有最大纯度的作为阈值。这一步迭代在离散属性下是没有的。

构建决策树的基本思想,就是对于所有的不纯分支,迭代地、并行地构建新的分支,选择具有最小熵的划分位置,直到所有的分支都是纯的。从而实现分类和回归的目的。

一个问题是,这种划分偏向于选择许多树叶分支。因为这样会是总不纯度很小。例如选取训练样本的编号作为属性,那么就会形成每个分支都只有一个实例,不纯度均为0的决策树。这显然不合理。许多分支节点过于复杂,背离了决策树把类判别式划分成简单决策的思想

类似的,当输入实例存在噪声时,构建树直到它是最纯的,就会产生一棵非常大,并且过拟合的树。

需要通过加罚来均衡不纯度下降和分支数量这两个属性。设置某个阈值,我们不需要为0或1,只需要接近0或1就可以。


回归树

于分类树相比,只需要将适用于分类的不纯度度量,换成适用于回归的不纯度度量
对节点m,记是训练集X中到达m点的子集。定义

和其他回归方法一样,在回归树中,划分的好坏可以用估计值的均方误差度量。令为节点m中的估计值。

其中。
各节点中,用节点中训练实例的输出的均值作为估计值:

如果一个节点上的误差是可以接受的。那么久创建一个树叶节点,输出,不再进一步分裂。
如果误差不能接受,则需要对到达节点m的数据进一步划分,使分裂后的各分支的误差和最小。
令为的被划为到 j 分支的子集。定义

是节点m的分支 j 上的估计值。则划分后的误差为

和分类树一样,我们寻找最小化误差的分割阈值。

除了均方误差,还可使用最大可能误差来度量划分的好坏

这样可以保证任何实例的误差都小于给定阈值。

可接受的误差阈值复杂度参数。阈值越小,生成的树越大并且过拟合的风险越大;阈值越大,欠拟合或说过光滑的可能性越大。

类似于非参数密度估计的回归问题中,移动均值与移动直线的方法。在决策树中,也可以不适用树叶上的均值来作为估计输出,而是在叶子上做线性回归来拟合树叶上的实例:

这使得每个树叶上的输入x,根据线性回归函数有不同的输出。但这需要额外的开销来进行线性回归。


剪枝

通常,到达一个节点的训练实例数小于整个训练集的某个百分比,则无论该节点纯度(误差)如何,都不在进一步进行划分。
其基本思想是,基于过少实例的决策树(将该节点看做根节点,进一步划分相当于构建新的树)导致较大的方差,从而导致较大的泛化误差。这种在构建树时提前停止构建的做法叫做先剪枝

相对地,另一种可能的方法时后剪枝,实践中的效果比先剪枝更好。
前面所介绍的树的构建过程,都是贪心的。每一步做出最小化不纯度的选择,永不回溯修改。但后剪枝方法不同,它试图找出并剪掉不必要的子树。
在后剪枝中,先从训练数据集中抽取一部分作为剪枝集。使用去掉剪枝集后的训练集,让树增长到所有树叶都是纯的,具有零误差。对于得到的树的每一个子树,用一个被该子树覆盖的训练实例标记的树叶节点替换它。如果该树叶在剪枝集上的性能不比该子树差,则剪掉子树,因为它是过拟合的,该子树的附加复杂性是不必要的。否则保留子树。


用决策树提取特征及规则

决策树能够 提取特征。单变量树只是用必要的变量,并在树构建之后某些特征可能根本没有使用。所以可以使用决策树提取特征,将构建得的决策树所使用的特征作为其他学习方法的输入。
决策树具有较好的可解释性。因为决策树节点中的条件简单,易于理解。从树根到树叶的每条路径都是条件判断的合取。这些路径构成 IF-THEN 的规则集。


多变量树

在单变量树中,对节点进行划分时只是用一个输入维。而在多变量树种,每个决策节点都可以使用所有的输入维,这种情况更普遍。
当输入是数值属性时,节点的线性决策函数为。其定义了输入空间中的超平面,从根节点到叶子节点路径上的一步一步划分,最终叶子节点定义输入空间上的多面体
在节点上使用非线性多变量决策函数,可以更加灵活。如使用二次多项式


决策树的复杂性

实际上,对于任何分类方法,都是从假设类中选取一个假设来近似一个实际判别式。如果使用单变量输入,那么判别式近似于分段的,平行于轴的超平面。而是用多变量输入,线性组合就是任意的超平面,非线性组合可以得到曲面。
决策树的超参数包括节点的决策函数的复杂度决策节点的分支数。分支数决定了决策节点的决策判别式的个数。具有两个分支的决策节点将输入空间一分为二,而具有n个分支的决策节点将输入空间划分为n个部分。
这样,树的大小与节点复杂度和分支数之间存在相关性。使用简单节点和较小分支数的时候可以得到一颗更大的树,这样的树可解释性更好。
更复杂的节点需要更多的数据来训练,随着沿树向下,数据越来越少,更容易出现过拟合。同时,节点复杂的树比较小,也就失去了通过树将问题简化为一系列小问题的初衷。

实际上,可以在靠近树根的地方使用较复杂的节点,而随着树的向下,数据越来越少,问题越来越简单,再采用相对简单的节点。

此外,前面所讨论的决策节点都是“硬”的,依赖于决策函数,每次去一个确定的分支。在“软”决策树中,每次经过决策节点,按计算后的概率取各分支上结果的加权。


决策森林

决策森林是一系列决策树的voting或系综,属于集成学习方法。其训练的是多棵决策树,每一棵决策树在训练集的随机子集上训练,并最终组合各个决策树的结果,这就是随机森林方法的思想。其总体的准确率可以显著提高。集成学习的介绍见《集成学习——组合多学习器》


作为非参数方法的决策树

不同于基于实例的密度估计,决策树
1.每个树叶对应于一个“箱”,但决策树的箱不固定宽度,或k个近邻实例。
2.决策树中“箱”的划分不根据输入空间的相似度,而是通过熵或均方误差,来决定是否进一步拆箱。
3.由于采用树结构,只需要通过少量比较就可以找到每个实例所属的箱。不需基于实例方法一样,需要每次一一计算相似度。
4.决策树一旦构造完成,就不需要存储训练实例,而只需要存储树结构、决策节点参数和树叶节点的输出。空间复杂度更小。而基于实例的密度估计,每次重新输入一个x,都需要基于训练数据重新计算输出。

决策树就是一种基于判别式的方法,绕开了类密度估计,直接估计判别式。

你可能感兴趣的:(非参数方法——决策树实现的判别式)