随机决策森林 Random Decision Forests(译自Tin Kam Ho)

本文介绍了TinKamHo提出的随机决策森林算法,通过在随机选择的特征子空间中构建多棵决策树,以提高分类器的泛化能力。传统的决策树容易过拟合,而随机决策森林通过集成多个树,能够在保持训练数据100%准确率的同时提升未知数据的分类精度。实验在手写数字识别任务上展示了这种方法的有效性,随着树的增加,分类准确率近乎单调上升,且未显示出饱和迹象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机决策森林 Random Decision Forests(译自Tin Kam Ho)

下载英文原文

作者

Tin Kam Ho(何天琴)是一位华裔的计算机科学家,因1995年引入随机决策森林以及她在集成学习和数据复杂性分析方面的开创性工作而闻名。Tin Kam Ho于1984年在香港中文大学完成本科教育,1992年获得纽约州立大学布法罗分校的计算机科学博士学位,领导了贝尔实验室的统计和学习研究部,从2014年开始在IBM从事人工智能方面的研究,主要研究为自然语言处理和语义分析、机器学习和数据挖掘,以及为IBM Watson Health提供分类方法的技术支持。

摘要

决策树由于其高执行速度而成为有吸引力的分类器。但是,用传统方法得出的树往往不能增长到任意的复杂度,因为在未见过的数据上可能会损失泛化的准确性。对复杂性的限制通常意味着训练数据的次优精度。遵循随机建模的原则,我们提出了一种方法来构建基于树的分类器,其容量可以任意扩展,以提高训练和未见数据的准确性。该方法的实质是在随机选择的特征空间的子空间中建立多个树。不同子空间的树以互补的方式概括其分类,它们的组合分类可以单调地改进。该方法的有效性通过对手写数字的识别实验得到了证明。

1 介绍

决策树分类器因其训练过程直接和分类速度非常快而吸引着人们,在过去的20年里被广泛地研究并在实际应用中得到大量使用,先前的研究包括许多树的构建方法,以及最近与其他分类器如HMM方法和多层感知器的关系。

许多研究提出了构建树的启发式方法,以达到最佳的分类精度同时最小化其规模。然而,用固定训练数据构建的树很容易发生过拟合现象。修剪一棵完全生长树可能会提高在测试数据上的泛化准确性,而这往往会导致训练数据的准确性下降。允许通过具有不同置信度的多个分支下降的概率方法也不能保证优化训练集的准确性。

显然,树形分类器的不应该太复杂,否则会导致过拟合现象。但还没有一种方法可以使树增长到任意的复杂性,并同时提高训练和测试集的准确性。

我们的研究表明上述并不是树形分类器所固有的。在本文中,我们描述了一种克服这一明显限制的方法。我们将使用便于优化训练集准确性的斜向决策树来说明上述问题。我们首先描述了斜向决策树及其构造,然后介绍了通过系统地创建和使用多棵树来提高泛化精度的方法。之后,我们介绍并讨论了在手写数字上的实验结果。

2 倾斜决策树

先前文献中研究的二元决策树通常在每个非终端(决策)节点使用一个特征。一个测试点根据其特征值被分配到左边或右边的分支。从几何上看,这相当于将点分配到与特征空间的一个轴平行的超平面的一边。

倾斜决策树更具一般性,因为超平面不一定与任何轴平行。每个超平面都由特征成分的线性函数表示。使用斜向超平面通常会产生一个较小的树,可以将数据完全分割成包含单一类别的叶片。超平面的选择方式导致树的大小可能会有很大的不同。

树生长算法的主要先进性在于试图最小化树的大小,但在泛化精度上却没有什么进展。我们没有研究这些算法,而是把注意力集中在提高泛化精度的一般方法上。因此,我们从两种简单的树形构造方法开始,不涉及任何复杂的优化程序。

由于不想损失任何的准确率,所以我们不考虑任何剪枝的方法。两种树生长算法的停止规则都是直到所有的叶节点都包含单一类别的点,或者直到不能进行下一步分割(原则上发生在两个或更多类别中存在相同的样本,或者在实践中由于超平面搜索算法的限制,例如搜索空间的粒度较粗)。

中心轴投影法

第一种树形生长的方法是在垂直于两个数据簇的连线的方向上找到一个分割超平面,它可以在每个非终端节点上至少分离出两个类别。

假设在任何非终端节点上(包括根节点)都有两个或多个类的训练点,我们首先找出使用欧氏距离计算出来的平均值相距最远的两个类,然后用一条直线将这两个类的样本平均数连接起来(我们称这条直线为中心轴),并将所有的数据点投射到这条直线上。然后,我们以固定的步长沿着两个平均值之间的线段进行搜索,并在停止点和垂直于该线的每个超平面上评估一个误差函数。对于每个类别,误差函数计算不在与该类大多数点所在的超平面同一侧的点的数量。将能够最小化误差函数计数之和的超平面选择为该非叶结点的分割平面。

这个方法只需要执行一遍而且速度非常快,除了搜索步数的大小或重复样本造成的小问题外,它总能在所有的叶子包含一个单一的类时停止,而缺点在于粗略的优化会导致一个非常大的决策树。

感知机训练法

第二种树的生长方法使用固定增量的感知器训练算法来选择每个非终端结点的超平面。

与第一种方法一样,在每个非终端节点找到相距最远的两个类,并选择其平均值作为锚点。用这两个类别分别初始化两个集合 S 1 S_1 S1 S 2 S_2 S2,然后按照锚点的欧氏距离将其它类别放入邻近的集合,该方法将搜索一个能够分割 S 1 S_1 S1 S 2 S_2 S2 的超平面,使得落在错的一边的点的数量最少。

当错误数减少到零时算法停止,然而,由于没有对 S 1 S_1 S1 S 2 S_2 S2 的线性可分离性进行测试,所以不能保证算法的收敛性。因此,该算法也被迫在一个固定的迭代次数后终止。如果这样得到的感知器不能将任何类别的点从其他类别中分离出来,该方法将继续切换到中心轴投影。

虽然这两个集合的选取有些随意,但迭代优化使得树的大小大幅度减小,训练代价虽然更高,但只需要很少的存储空间,而且对新的样本进行分类的速度更快。

3 系统地创建多棵树

这两种树生长方法都能生长出复杂的树,对训练数据进行完美分类。然而,由于选择超平面的特定方式存在偏差,泛化的准确性很少那么好。退回到不完全展开的树将意味着在训练数据上失去100%的准确性,同时也无法有信心说这能够提高未知数据上的泛华能力。

在其他情况下的经验表明,使用多个分类器往往可以弥补单个分类器的偏差。同理,我们将研究使用多棵树(森林)来克服泛化的偏差。

为了成功利用多棵树,我们需要一种方法来创建独立泛化的树,同时还需要一个判别函数,将各个树给出的分类结合起来,并保持准确性。

我们如何利用同一组数据系统地创建多个决策树?有很多方法可以构建不同的树,但任意引入的差异不一定能得到我们需要的在训练数据上100%准确的树,同时拥有不同的泛化误差的树。例如,使用训练数据的不同子集构建树可能使得这些树不会对全部训练集进行完美分类。

随机化作为在分类器中引入差异的有力工具,之前被用来随机初始化具有不同参数配置的训练算法,最终产生具有差异的分类器。

我们创建多棵树的方法是在随机选择的特征空间的子空间中构建树。对于一个给定的 m m m 维的特征空间,有 2 m 2^m 2m 子空间可供构建决策树。在选择特征向量的分量时使用随机化只是一种探索可能性的方便方法。

使用整个训练集和上一节给出的算法在每个选定的子空间构建一棵决策树,这些树对训练数据的分类都是100%正确的。然而,对于那些只在未选择的维度上与训练点不同的点,决策树会给出不变的分类结果,这使得每棵树都能按照自己的方式泛华。高维特征空间中提供的子空间数量远超我们的所需。

据此可以提出许多有趣的理论问题。我们必须使用多少个子空间才能达到一定的分类准确性?如果我们使用所有可能的子空间会发生什么?如果我们仅使用具有某些特定属性的子空间会有什么影响?

随机建模理论解决了上述的部分问题,一些学者研究了不同的特征空间划分方式的组合。理论上,分类精度与组合函数的统计属性有关,并且在使用所有可能的组合之前,就可以达到非常高的准确率。

4 判别函数

给定 t t t 个从随机子空间创建的决策树, 需要构造一个判别函数来整合这些树的分类结果。 这里我们使用【T.K Ho,1993】中提出的函数。

对于一个测试点 x x x ,设 v j ( x ) v_j(x) vj(x)是沿着决策树 T j ( j = 1 , 2 , . . . , t ) T_j(j=1,2,...,t) Tjj=1,2,...,t 下降到的叶节点。令 P ( c ∣ v j ( x ) ) P(c|v_j(x)) P(cvj(x)) x x x 属于类别 c ( c = 1 , 2 , . . . , n ) c(c=1,2,...,n) cc=1,2,...,n 的后验概率。
P ( c ∣ v j ( x ) ) = P ( c ∣ v j ( x ) ) ∑ l = 1 n P ( c l , v j ( x ) ) P(c|v_j(x))= \frac{P(c|v_j(x))}{\sum_{l=1}^{n}{P(c_l,v_j(x))}} P(cvj(x))=l=1nP(cl,vj(x))P(cvj(x))
上述后验概率可以用类别 c c c 的训练点落入叶节点 v j ( x ) v_j(x) vj(x) 的比例估计。我们注意到因为这些树都是完全展开的,大部分叶结点仅包含一个类别(除非没有正常终止训练),因此估计的后验概率 P ^ ( c ∣ v j ( x ) ) \widehat{P}(c|v_j(x)) P (cvj(x)) 几乎总是1。

判别函数如下:
g c ( x ) = 1 t ∑ j = 1 t P ^ ( c ∣ v j ( x ) ) g_c(x) = \frac{1}{t}\sum_{j=1}^{t}{\widehat{P}(c|v_j(x))} gc(x)=t1j=1tP (cvj(x))
最终的决策规则就是把 x x x 指派给使得 g c ( x ) g_c(x) gc(x) 最大的那个类别。

显然,该判别函数能够保持训练集上 100% 的准确率。 对于未知数据点, g ( x ) g(x) g(x) 平均了落入某个叶节点的后验概率。从几何意义上看,每个叶节点定义了子空间中的一个邻域(决策区域),邻域包含了落入该节点的样本点。 通过对落入邻域的后验概率取平均值,判别函数近似拟合了数据点 x x x 在原始特征空间中落入某个类别的后验概率。这与其他基于核函数的后验概率估计方法是相似的,不同之处是这里的核函数具有不规则的尺寸和形状。

在【T.K Ho,1993】中,判别函数用来组合多个通过学习量化向量得到的分类器, 实验显示增加分类器数量 t t t 可以提高准确率。【Berlind,1994】研究了判别函数的一些变体和分析特性。

5 手写数字识别实验

我们现在用一个手写数字识别问题来展示该方法的有效性。在实验之前,无论是算法还是特征都没有专门针对这些数据进行调整。类似的实验已经在机器打印的符号上进行过,结果基本相同。该方法因为存在更多的子空间,所以对涉及高维数据的问题最为有效。

数据

实验是在10个类别的手写数字上进行的。图像来自1992年的NIST(美国国家标准与技术研究所)竞赛。竞赛的训练集和测试集是混合的,从混合集中抽取60,000个样本组成训练集TR,抽取10,000个样本组成测试集TE。图像为20 x 20像素的二进制图像,在训练集和测试集中,每个类别的样本数量大致相同。

特征

我们首先使用二进制、归一化图像的原始像素图作为输入特征向量。为方便起见,我们称之为像素向量 f ( 1 ) f(1) f(1) ,它的维数为400(20*20)。为了观察简单的领域知识能够如何帮助分类过程, 我们构造了另外一个特征向量, 构造过程利用了像素的相邻关系,这些特征与构造二次多项式判别式使用的特征相似。他们是对相邻像素在不同方向上做合取和析取。对于第 i i i j j j 列的像素 I ( i , j ) I(i,j) I(i,j),我们取
H ( i , j ) = I ( i , j ) ⋀ I ( i , j + 2 ) 横 向 相 邻 V ( i , j ) = I ( i , j ) ⋀ I ( i + 2 , j ) 纵 向 相 邻 N ( i , j ) = I ( i , j ) ⋀ I ( i + 2 , j + 2 ) 左 上 到 右 下 对 角 相 邻 S ( i , j ) = I ( i , j ) ⋀ I ( i + 2 , j − 2 ) 左 下 到 右 上 对 角 相 邻 H ′ ( i , j ) = H ( i , j ) ⋁ H ( i + 1 , j ) ⋁ H ( i + 2 , j ) ⋁ H ( i + 3 , j ) V ′ ( i , j ) = V ( i , j ) ⋁ V ( i , j + 1 ) ⋁ H ( i , j + 2 ) ⋁ V ( i , j + 3 ) N ′ ( i , j ) = N ( i , j ) ⋁ N ( i + 1 , j − 1 ) ⋁ N ( i + 2 , j − 2 ) ⋁ N ( i + 3 , j − 3 ) S ′ ( i , j ) = S ( i , j ) ⋁ S ( i + 1 , j + 1 ) ⋁ S ( i + 2 , j + 2 ) ⋁ S ( i + 3 , j + 3 ) 其 中 , ⋀ 表 示 二 进 制 与 运 算 , ⋁ 表 示 二 进 制 或 运 算 。 第 二 个 特 征 向 量 f ( 2 ) 是 由 第 一 个 向 量 f ( 1 ) 连 接 上 在 所 有 ( i , j ) 上 有 良 好 定 义 的 H ′ ( i , j ) , V ′ ( i , j ) , N ′ ( i , j ) 和 S ′ ( i , j ) 。 这 样 一 个 20 ∗ 20 图 像 的 f ( 2 ) 向 量 有 852 维 。 H(i, j) = I(i, j) \bigwedge I(i, j+2)\qquad 横向相邻\\ V(i, j) = I(i, j) \bigwedge I(i+2, j)\qquad 纵向相邻\\ N(i, j) = I(i, j) \bigwedge I(i+2, j+2)\qquad 左上到右下对角相邻\\ S(i, j) = I(i, j) \bigwedge I(i+2, j-2)\qquad 左下到右上对角相邻\\ H'(i ,j) = H(i, j) \bigvee H(i+1, j) \bigvee H(i+2, j) \bigvee H(i+3, j)\\ V'(i ,j) = V(i, j) \bigvee V(i, j+1) \bigvee H(i, j+2) \bigvee V(i, j+3)\\ N'(i ,j) = N(i, j) \bigvee N(i+1, j-1) \bigvee N(i+2, j-2) \bigvee N(i+3, j-3)\\ S'(i ,j) = S(i, j) \bigvee S(i+1, j+1) \bigvee S(i+2, j+2) \bigvee S(i+3, j+3)\\ 其中,\bigwedge表示二进制与运算,\bigvee表示二进制或运算。第二个特征向量f(2)是由第一个向量f(1)连接上在\\所有(i,j)上有良好定义 的H'(i,j),V'(i,j),N'(i,j)和S'(i,j)。这样一个20*20图像的f(2)向量有852维。 H(i,j)=I(i,j)I(i,j+2)V(i,j)=I(i,j)I(i+2,j)N(i,j)=I(i,j)I(i+2,j+2)S(i,j)=I(i,j)I(i+2,j2)H(i,j)=H(i,j)H(i+1,j)H(i+2,j)H(i+3,j)V(i,j)=V(i,j)V(i,j+1)H(i,j+2)V(i,j+3)N(i,j)=N(i,j)N(i+1,j1)N(i+2,j2)N(i+3,j3)S(i,j)=S(i,j)S(i+1,j+1)S(i+2,j+2)S(i+3,j+3)f(2)f(1)(i,j)H(i,j),V(i,j),N(i,j)S(i,j)2020f(2)852

单棵决策树的结果

首先,我们观察利用传统的方法即在完整的特征空间中构造单棵决策树的结果,我们测试了 f 1 f_1 f1 f 2 f_2 f2 以及两种树的生长方法。

使用中心轴投影法(缩写为CAP)和特征 f 1 f_1 f1 得到的树有3949个结点(包括终端结点和非终端结点),当时用 f 2 f_2 f2 时树略小,有3255个结点。使用感知机训练法(缩写为PER)和特征 f 1 f_1 f1 得到的树只有307个结点,使用 f 2 f_2 f2 生成的树只有87个结点。这是分布的复杂性和推导判别超平面的算法之间相互作用的结果。这些树的大小的巨大差异显示了树的生长算法对分类效率的重要性。表1显示了每个类别所需的终端节点的数量和相应的在测试集TE的分类准确率。
在这里插入图片描述

有趣的是,尽管树的大小不同,但两种树的生长算法在分类准确率上并无大的差别。一个低效的生长算法可能会导致相同的结构沿着不同的分支重复,其影响是不可预测的,并且取决于类别在特征空间中的分布。

然而,当一个类被分配到同一棵树的更多的终端节点时,分类准确率的下降要明显得多。例如,0和1类始终比其他类更容易正确,而且每棵树上代表0和1的终端节点始终较少。这些树中的每一棵都能正确地对TR中的所有训练点进行分类,TE上某些类的表现不佳无疑是泛化性能不好的结果。可以理解的是,当更多的终端节点即更多的特定的超平面被用来适应一个类时,泛华性能会更差。

多棵决策树的结果

现在我们看多棵决策树怎样解决泛化能力下降的问题,同样我们使用 f 1 f_1 f1 f 2 f_2 f2 两种特征及两种树生长算法,结果显示在图一和图二中。
在这里插入图片描述

我们展示了当新的树被添加到分类器中时整体分类正确率的变化。每一棵额外的树都是在一个没有使用过的随机特征子空间中构建的。在实验中,子空间被限制为100或200个维度,由此产生的分类准确率的差异从图中可以看出。

因为中心轴投影法的训练速度更快, 我们可以容易地把该算法扩展到20棵树为止, 采用感知机训练法则停止在了最多10棵树。 如果计算力允许,我们可以创建更多的树, 我们这里的停止点是任意选择的。

在每幅图上都可以看到正确率在2棵树的位置有下探, 这是由于整合决策时的奇异导致的 (两个类具有相同的 g c ( x ) g_c(x) gc(x)因此都被拒绝)。 这可以通过用一个辅助训练集调整概率估计来解决。

从图中可以看出,准确率随着新树的增加而增加,而且这种增加几乎是单调的。尽管运行的细节有很多不同:不同的特征向量、不同的子空间维数和不同的树生长算法,但趋势是相同的。随着森林的增长,上升速度减慢,但没有任何迹象表明将收敛于某个上限。在一次测试中,直到创建了40棵树,正确率的增长仍然没有停止。这与其他许多分类器设计形成鲜明对比,在这些设计中,分类器复杂性的增加几乎总是导致过度训练。我们已经展示了一种增加分类器复杂性而不牺牲泛化准确性的方法。

通过比较不同特征和不同类别的结果, 我们很有希望利用一些工程手段(更好的特征设计和训练数据选取) 构建性能极为优秀的分类器, 而且在计算力允许的范围内, 分类器的准确度可以根据需要任意提升。

考虑到大量可能的子空间,我们在实验中的探索范围是相当有限的。例如,为了方便实现,我们用维度相同的随机子空间来构造决策树进行组合,这其实不是必须的。事实上,同一棵树的非叶节点也并不一定要选择相同的子空间。该方法也不拘泥于任何特定的树生长算法,甚至也不拘泥于二叉树结构,对于其他复杂的树生长算法和各种树结构仍有探索的空间。

6 结论

我们提出了一种方法来提高基于决策树的分类器的泛化性能,而不需要牺牲训练数据的精度。在手写数字上的实验证明了模型的有效性,并指出了许多进一步改进的空间。

我们所采用的方法是一种随机建模方法的变体, 【Berlind 1994;T.K.Ho 1993;E.M Kleinberg 1990;E.M Kleinberg 1996; E.M Kleinberg and T.K Ho 1993】 对随机建模进行了理论和实验研究。 本文的方法与【T.K Ho 1993)】所研究的基于学习向量量化的分类器最为相似, 两者都(一定程度上采用随机方法)整合了不同的特征空间划分方式。 这些划分确定的决策区域就是 【Berlind 1995;E.M Kleinberg,1996】所研究的随机模型。 理论研究的主要结论之一是优化训练集上的准确率保持泛化准确度之间的矛盾并不是天然存在的。 我们给出了这一结论的又一实证证据, 同时展示了将随机建模思想与传统方法结合起来构造分类器的巨大潜力。

致谢

作者感谢Eugene Kleinberg和Roger Berlind分享了他们在随机建模方面的工作; Henry Baird, David Ittner, Dz-Mou Jung, George Nagy参与了讨论;Yann le Cun提供了NIST数据集。

链接引用

原文的引用并未列出,如需可查看原文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值