揭秘随机森林算法:分类与回归中的明星技术,详解参数设置与优化技巧
随机森林算法参数阐述及优化
本文详尽阐述了随机森林类参数及其优化过程。随机森林属于基于bagging架构的决策树模型,包括RF架构参数和决策树参数。RF架构主要参数有n_estimators(决策树数量)、bootstrap(是否采用有放回抽样)、oob_score(是否采用袋外样本评估)。n_estimators选取适度值,bootstrap和oob_score通常设置为默认值。决策树参数包括max_features(最大考虑特征数)、max_depth(最大深度)、min_samples_leaf(叶子节点最少样本数)、min_samples_split(节点最小样本数)、max_leaf_nodes(最大叶子节点数)和min_impurity_decrease(节点划分最小不纯度)。criterion(划分标准)使用默认的Gini指数或熵。
RF参数优化分为两步:优化RF架构参数(如n_estimators),然后优化决策树参数(如max_features)。优化时,先保持其他参数不变,逐步调整目标参数,如通过交叉验证确定最佳值。例如,首先调整n_estimators,使用1到101的值,步长为10,以找到最佳值。然后优化max_features,使用1到11的值,步长为1。通过多次实验和交叉验证,最终确定最佳参数组合。
优化过程包括下载训练数据集、训练模型、查看模型准确率、优化参数、计算泛化误差等步骤。通过优化,模型准确率可以显著提升,泛化能力增强。
概括,随机森林模型优化主要关注n_estimators和max_features的选择。优化顺序为先增加n_estimators以提升拟合能力,随后调整max_features以进一步提高模型性能。通过系统地调整参数并使用交叉验证,可以找到最佳的参数组合,提高模型的预测准确性和泛化能力。
随机森林
重点先行
GBDT与随机森林虽然都是决策树的组合算法,但它们的训练过程却大相径庭。
GBDT训练是每次一棵,一棵接着一棵(串行),因此与随机森林并行计算多棵树相比,会需要更长的训练时间。
在GBDT中,相对于随机森林而言(随机森林中的树可以不做很多的剪枝),一般会选择更浅(depth更小)的树,这样运算时间会减少。
随机森林更不容易过拟合,而且森林中包含越多的树似乎越不会出现过拟合。用统计学的语言来讲,就是说越多的树包含进来,会降低预测结果的方差(多次预测结果会更加稳定)。但是GBDT则恰好相反,包含预测的树(即迭代的次数越多),反而会更倾向于过拟合,用统计学的语言来将,就是GBDT迭代次数的增加减少的是偏差(预测结果和训练数据label之间的差异)。(偏差和方差这两个概念是不同的概念,见后面的图)
随机森林参数相对更容易调试一些,这是由于随着所包含的决策树的个数增加,其预测效果一般是单调的向好的方向变。而GBDT则不同,一开始预测表现会随着树的数目增大而变好,但是到一定程度之后,反而会随着树的数目增加而变差。
随机森林算法
随机森林是一种有监督学习算法。正如你所看到的它的名字一样,它创建了一个森林,并使它拥有某种方式随机性。所构建的“森林”是决策树的集成,大部分时候都是用“bagging”方法训练的。 bagging方法,即bootstrap aggregating,采用的是随机有放回的选择训练数据然后构造分类器,最后组合学习到的模型来增加整体的效果。
简而言之:随机森林建立了多个决策树,并将它们合并在一起以获得更准确和稳定的预测。随机森林的一大优势在于它既可用于分类,也可用于回归问题,这两类问题恰好构成了当前的大多数机器学习系统所需要面对的。
除了少数例外,随机森林分类器使用所有的决策树分类器以及bagging分类器的超参数来控制整体结构。与其先构建bagging分类器,并将其传递给决策树分类器,您可以直接使用随机森林分类器类,这样对于决策树而言,更加方便和优化。要注意的是,回归问题同样有一个随机森林回归器与之相对应。
随机森林算法中树的增长会给模型带来额外的随机性。与决策树不同的是,每个节点被分割成最小化误差的最佳特征,在随机森林中我们选择随机选择的特征来构建最佳分割。因此,当您在随机森林中,仅考虑用于分割节点的随机子集,甚至可以通过在每个特征上使用随机阈值来使树更加随机,而不是如正常的决策树一样搜索最佳阈值。这个过程产生了广泛的多样性,通常可以得到更好的模型。
机器学习算法之随机森林算法的特征的重要性
随机森林算法的另一个优点是可以很容易地测量每个特征对预测的相对重要性。 Sklearn为此提供了一个很好的工具,它通过查看使用该特征减少了森林中所有树多少的不纯度,来衡量特征的重要性。它在训练后自动计算每个特征的得分,并对结果进行标准化,以使所有特征的重要性总和等于1。
决策树与随机森林的异同
随机森林是决策树的集合,但仍有一些区别。
如果您将带有特征和标签的训练数据集输入到决策树中,它将制定一些规则集,用于预测。
例如,如果您想预测某人是否会点击在线广告,可以收集该广告的过去点击人员以及能够描述其做决定的特征。一旦你将这些特征和标签放入决策树中,它会生成节点和一些规则,然后你就可以预测广告是否会被点击。但决策树通常通过计算信息增益和基尼指数来生成节点和规则时,相比之下,随机森林则是随机的。
另一个区别是“深度”决策树往往会遭遇过拟合问题。而随机森林则可以通过创建随机的特征子集并使用这些子集构建较小的树,随后组成子树,这种方法可以防止大部分情况的过拟合。要注意的是,这同时会使得计算速度变慢,并取决于随机森林构建的树数。
另一不同之处在于,“深度”决策树常常面临过拟合的困扰。而随机森林则通过构建随机的特征子集,并利用这些子集构建较小的树,然后组合成子树,以此方法有效避免大多数情况下的过拟合。但需注意,这同时会降低计算效率,且与随机森林构建的树的数量相关。
关于随机森林算法的重要超参数
随机森林中的参数要么用于提升模型的预测效能,要么使模型运行更高效。以下将探讨sklearn内置的随机森林函数中的超参数。
提升模型预测准确度
首先,“n_estimators”超参数表示算法在执行最大投票或平均预测前所建立的树的数量。通常情况下,树的数量越多,性能越佳,预测也越稳定,但这也会减缓计算速度。
另一个关键的超参数是“max_features”,它表示随机森林在每棵树中可以拥有的最大特征数量。Sklearn提供了多种选项,其文档中有详细说明:
最后一个关键的超参数是“min_sample_leaf”,正如其名所示,它决定了叶子的数量。
提升模型计算效率
“n_jobs”超参数表示引擎允许使用的处理器数量。若值为1,则仅使用一个处理器。值为-1则表示无限制。
“random_state”表示随机数种子,确保模型的输出具有可复现性。当赋予一个特定值,且模型训练具有相同的参数和相同的训练数据时,该模型将始终产生相同的结果。
最后,还有一个“oob_score”(也称为oob采样),它是一种随机森林交叉验证方法。在这个抽样中,大约三分之一的数据不用于模型训练,而是用于评估模型的性能。这些样本被称为袋外样本。它与留一法交叉验证方法非常相似,但几乎没有额外的计算负担。
优缺点分析
正如我之前所述,随机森林的一个优点是它可以用于回归和分类任务,并且很容易查看模型的输入特征的相对重要性。
随机森林同时被认为是一种非常便捷且易于使用的算法,因为默认的超参数通常会产生一个很好的预测结果。超参数的数量也不是很多,而且它们所代表的含义直观易懂。
机器学习中的一个重大问题是过拟合,但大多数情况下这对于随机森林分类器而言不会那么容易发生。因为只要森林中有足够多的树,分类器就不会过度拟合模型。
随机森林的主要限制在于使用大量的树会使算法变得很慢,并且无法实现实时预测。一般而言,这些算法训练速度很快,预测速度较慢。越准确的预测需要越多的树,这将导致模型越慢。在大多数现实世界的应用中,随机森林算法已经足够快,但肯定会遇到实时性要求很高的情况,那就只能首选其他方法。
当然,随机森林是一种预测性建模工具,而不是一种描述性工具。也就是说,如果您正在寻找关于数据中关系的描述,那建议首选其他方法。
适用范围
随机森林算法可被应用于众多不同的领域,如银行、股票市场、医药和电子商务。在银行领域,它通常被用于识别那些比普通人更频繁使用银行服务的客户,并及时偿还他们的债务。同时,它也会被用于识别那些企图诈骗银行的客户。在金融领域,它可用于预测未来股票的趋势。在医疗保健领域,它可用于识别药品成分的正确组合,分析患者的病史以识别疾病。除此之外,在电子商务领域中,随机森林可以被用来确定客户是否真的喜欢某个产品。