决策树,随机森林和PCA

本文旨在涵盖与以下方法相关的重要概念和技巧

决策树合奏学习(随机森林)维度诅咒

决策树

这些是非常通用的“非参数白盒模型”,不需要特征缩放或centering ,并且能够执行分类和回归任务。你可能听说过神经网络是黑匣子模型,因为你在学习或推理时看不到底层的东西。相比之下,白盒模型允许您准确查看每一步发生的情况,使您能够在适合您的情况下手动执行任务。决策树对于训练数据的假设很少,如果不受约束,他们会适应最有可能过度使用的数据。

Decision tree of depth 2 for iris dataset

Iris数据集作为基本机器学习的入门示例非常受欢迎。这个例子在参考文献中提到的书中得到了很好的解释,它解释了使用决策树的过程。决策树的学习算法有一个apropos名称,CART(分类和回归树),它只生成二叉树。对于非二叉树,可以使用ID3等算法。

深度为0的根节点包含训练集。基于特定特征的特定阈值,将样本分成2个子集,并且该过程递归地继续,目标是最小化子节点的加权平均杂质。这是一种贪婪的算法,它试图在最高级别或当前级别进行最佳分割,并且不考虑在较低级别具有最小杂质

Cini的基尼杂质和目标函数,K是一个特征,tk是该特征的阈值

gini属性表示节点的纯度。如果一个节点所应用的所有训练样本都属于同一类,则该节点是纯的,且gini杂质为0。我们也可以用熵来衡量纯度。当一个集合只包含一个类的实例时,它的熵将为零。Gini杂质是首选的,因为它吸引人的因素是将最常见的类隔离到树的一个单独的分支中,而且它的计算容易且速度快,因为熵产生了更平衡的树,而不是默认的选项。

分类:每个深度的决策边界

在回归的情况下,预测不是预测一个类,而是预测是与特定节点相关联的训练实例的平均值,用于得到均方误差。CART算法以使大多数训练实例尽可能接近预测值的方式分割每个区域。在这种情况下,我们最小化MSE而不是基尼的杂质。其他一切都保持不变。

回归:决策树

指定树没有任何预先确定的参数数目,并且不受许多自由度的限制。约束或规范化树的一种方法是设置最大深度约束。它们可能有几个超参数,比如max_depth或min_samples_split。通常,减少max_*和增加min_* hyper参数将使模型充分规范化。

当你在分类和回归中没有正规化时会发生什么?

不稳定性问题

找到最优树是一个NP-Complete问题,并且由于预测涉及遍历树,所以总体预测复杂度为O(log(m)/ log(2)),其是节点的数量并且这与节点的特征数量n无关。然而,CART通过比较每个节点上所有样本的所有特征和查找阈值进行训练,因此决策树的时间复杂度为O(n * m * log(m)/ log(2))

正如您可以注意到的那样,分割的决策边界是正交的(垂直于轴),决策树的主要问题是它们对训练数据的变化非常敏感。

(左)显示训练集细节的敏感度,(右)显示训练集旋转的敏感度

如果训练算法是随机的,即使基础数据相同,我们也可以得到非常不同的模型。这种不稳定性可以通过对作为随机森林核心概念的许多树进行平均预测来解决。

注:决策树桩(Decision stump)是深度为1的决策树。它有一个决策节点和两个叶节点

集成学习(ensemble learning)

在机器学习领域众所周知,使用集成学习方法可以将模型的准确性提高2-3%。

决策树的集合构成了一个随机森林。

这里的集合意味着一组预测变量(或分类器)。通过聚合一组分类器的预测(即使它们很弱,即,进行随机猜测),预测获得最多投票的类别比任何其他单独的强分类器都好得多,这被称为hard-voting分类器。这与选择统计模式(最常见的预测)相同。如果分类器可以估计类别概率,那么以最高概率预测类别,对于集合中所有单个分类器的平均值称为soft-voting分类器。当然,这比硬投票有更好的结果,因为它给予高度信任的投票更多的权重或重要性。

为了理解为什么这种方法如此有效,我们可以画一个大数定律的平行图。假设你有一枚有偏见的硬币有51%的概率是正面朝上。抛了一百次之后,我们有理由假设我们可能有51个正面和49个反面。正面多于反面。在1000次投掷中,数量的差异只会增加,因为正面比反面多20次(510-490次)。同样的道理,当我们掷得越多,正面多于反面的概率就会不断增加,确保正面的比例总是接近51%

正如常识所指出的那样,只有所有弱分类器彼此独立且充分多样化时,这才会起作用。如果所有弱分类器产生相同类型的错误,那么对预测进行聚合或投票就没有多大用处。为了提高整体的准确性,重要的是要有不相关的错误,但这非常困难,除非使用不同的方法训练分类器,因为共同点是训练集。一组决策树是一个随机森林,但是当所有的分类器都是相同的时候,随机性的来源究竟是什么,如果所有的决策树都是在相同的数据上进行训练的话,它又有多好?

一种使集成方法有效的方法是为各个分类器使用非常不同的训练算法,以便它们的预测是多样的或有不同的错误,但是由于随机森林只包含决策树,我们需要在数据本身中引入随机性。决策树对培训数据变化敏感的事实对我们的优势点起作用。

大致分为三类技术

因此,我们对所有分类器使用相同的学习方法,但将训练数据限制为随机子集。对这些数据子集进行抽样,可以使用或不替换。在统计数据中,重新抽样和替换是bootstrapping。没有替换的采样称为pasting。

Bagging

Bagging是引导聚合的简称

Bagging允许对每个预测器的训练实例进行多次采样,并引入这些子集的多样性。集成现在通过聚合单个预测来对新实例进行预测,即使每个预测器比在整个数据集上进行训练时具有更高的偏差,聚合减少了偏差和方差,因为预测器之间的相关性较小。bagging过程不需要仅限于实例。有两种方法:

随机子空间 - 仅采样特征随机Patches - 对训练实例和功能进行采样额外的树 - 极其随机的树。这些训练速度较快,因为我们为特征设置了随机阈值而不是找到它,但如果这比替代选项更好,我们无法确定。

由于Bagging多次抽样多次,所以少数情况下永远不会抽样。每个预测变量现在都有一组不可见的out of bag实例,可用作验证集,并可通过平均每个预测变量的oob评估来评估集合。

随机森林中随机性的另一个来源是,当生长树时,您可以在随机子集中搜索最佳特征,而不是优化以找到分割节点的最佳特征。在这种方法中,您交易高偏差以降低方差并获得更好的整体模型。

注意:随机森林的一个重要方面是它们可以帮助选择特征。一个特征的重要性决定于树节点使用它来平均减少杂质的程度。该平均值由与每个节点相关的样本数加权

Boosting

这是另一种形式的集成学习,在自然界中是连续的。这个想法仍然是将几个弱的学习者结合起来,形成一个强大的学习者,但是在这里,预测者是按顺序训练的,每个人都试图纠正或改进前一个预测器。自然地,这个过程不能并行化,因此不经常使用它,因为它不能像bagging 或pasting那样进行扩展。两种最流行的boosting 方法是

Adaboost(自适应增强) - 错误分类实例的相对权重增加,使用这些更新的权重对第二个预测器进行训练,并且此过程再次发生在下一个预测器上。这种顺序学习确实与SGD相似,区别在于不是调整单个预测参数,而是为整体增加一个预测因子,并逐渐使其更好。梯度提升 - 这种方法不是在每次迭代时调整实例权重,而是将新预测因子与前一个残差进行匹配。学习速率超参数将缩放每棵树或预测变量的贡献。这是一种称为收缩的正规化技术。如果将它设置为较低的值,那么您需要在整体中增加更多的树来适应训练集,从而提供更好的预测精度。另一方面,子样本超参数指定了用于训练每棵树的训练实例的比例,这被称为随机梯度提升( Stochastic Gradient Boosting)。

注意:为了找到最佳增强树数,我们使用提前停止。

Stacking

Stacking是堆叠泛化的简称。前提是,我们可以训练一个模型来执行聚合或从中学习,而不是像mode或average这样的普通函数来聚合单个的预测。这个模型被称为blender 或 meta-learner。

训练这种blender的常用方法是:

将数据拆分为2个子集,并使用第一个拆分来使用任何方法训练集合中的各个预测变量。对此进行个别预测,将其split。现在我们有一个新的数据集,其中包含单独的预测作为我们的输入,以及来自数据的初始目标值。在这个数据上训练blender

这个过程可以通过多次分割并使用多个blenders来完成。

维度诅咒

到目前为止,你无疑已经多次遇到这个词。在处理大量维度的数据时,训练算法变得困难,我们总是担心缩小维度可能会导致某些重要信息的丢失。另一方面,它使我们能够更快速地训练数据,并使数据可视化,因此这是大多数人愿意做出的妥协。高维度的数据通常意味着数据是分散或分散的。降维有两种主要方法

ProjectionManifold Learning

在现实世界的数据中,训练实例不是在所有维度上均匀分布,而且它们都可能位于较低维度的子空间上。Projection只不过是代表低维数据。

Manifold 是一个拓扑空间,在每个点附近都与欧几里得空间局部相似。

2D manifold 是一个二维的形状,可以扭曲和弯曲在更高的维度空间。大多数真实世界的高维数据集靠近低维流形。这被称为流形假设(manifold hypothesis)。

一般来说,减少维度可以缩短培训时间,但它完全取决于数据集,因此可以带来更好的解决方案。

最流行的降维算法是主成分分析(PCA)其标识与数据最接近的超平面并将数据投影到其上。这里的约束是,为了选择正确的超平面,它提供了最小的信息损失,我们需要保留我们能够达到的最大方差。主要组成部分是定义彼此正交的轴的单位向量(与数据中的维数一样多),第一部分考虑最大方差。然而,它们的方向是不稳定的,因为数据中的微小扰动可能导致一对PC指向相反方向,甚至旋转或交换。他们所定义的平面大部分都是相同的。然而,PCA假定数据是以原点为中心的,所以这种方法的一个先决条件是将数据置于中心位置。我们可以从称为矩阵分解技术中获得这些分量奇异值分解,然后选择将数据投影到由第一个d分量定义的超平面上,其中d的维数小于实际数据的维数。选择此值d取决于需要保留多少差异。然而,对于可视化,d通常是2或3。

不同的降维方法