Python 中的随机森林超参数调优

2024 年 8 月 28 日 | 阅读 6 分钟

引言

随机森林是一种强大的集成学习方法,在机器学习中经常用于分类和回归应用。为了发挥作用,它在训练期间构建了许多决策树。对于分类任务,这会产生类的众数,对于回归任务,则产生平均预测。为了确保稳健性和多样性,前端的每棵树都使用训练数据的子集和特征的随机子集构建。随机森林通过聚合多棵树的预测来提高泛化性能并最大限度地减少过拟合。随机森林以其卓越的精度、可扩展性和管理复杂数据集的能力而闻名,在金融、医疗保健和图像识别等多个行业中广受欢迎。

超参数调优的重要性

在优化机器学习模型时,超参数调整是必要的,以确保其性能符合某些目标。适当的调整将为现实和准确的预测找到完美的平衡,防止过拟合或欠拟合。通过修改具有不同属性和分布的数据,可以提高模型的鲁棒性。调整可以用于通过提高效率和提高模型的可解释性来减少计算资源。将超参数与业务目标和特定需求(包括减少关键应用程序中的错误)相匹配至关重要。总而言之,超参数调优是机器学习开发中最关键的步骤之一,它最大限度地提高了模型的弹性​​和有效性,同时还确保其符合实际需求。

理解随机森林中的超参数

在随机森林中,超参数是外部设置,控制训练期间计算的行为方式。与从数据中学习到的参数不同,超参数是预先确定的,并作为增长经验的指南。优化任意森林中的模型性能需要理解关键超参数。以下是几个关键点:

  • n_estimators(估计器数量)

在 AI 模型中,森林中的树木数量由 n_estimators 参数表示。通过获取多方面的信息模式,增加其值通常可以提高模型性能。但是,这种改进是以牺牲计算要求为代价的,从而使过程更加资源密集。在选择适当的树木数量时,必须找到某种平衡,因为过高的值可能会导致收益递减和计算资源失败。为了获得最理想的性能和计算效率,需要仔细协商。

示例

输出

n_estimators = 50, Accuracy = 0.9722
n_estimators = 100, Accuracy = 0.9750
n_estimators = 150, Accuracy = 0.9750
  • max_depth(最大深度)

随机森林中的最大深度限制了每棵树可以达到的最佳感知。它在控制单个树的复杂性方面扮演着专制角色,通过限制强大设计的意义来对抗过拟合。

示例

输出

max_depth = None, Accuracy = 0.9639
max_depth = 10, Accuracy = 0.9583
max_depth = 20, Accuracy = 0.9583
max_depth = 30, Accuracy = 0.9583
  • min_samples_split(最小样本分割)

min_samples_split 规定了分割内部节点所需的最小样本数量,影响分割的粒度。更好的校准通过阻止可能获得噪声而非重要模型的小分割来减轻过拟合。

示例

输出

min_samples_split = 2, Accuracy = 0.9750
min_samples_split = 5, Accuracy = 0.9694
min_samples_split = 10, Accuracy = 0.9583
  • min_samples_leaf(最小叶子样本)

min_samples_leaf 参数设置了形成叶节点所需的最小样本数量,有效控制了终端节点的大小。更高的值会导致更平滑和更大的选择边界,防止模型拟合不需要的信息。

示例

输出

min_samples_leaf = 1, Accuracy = 0.9750
min_samples_leaf = 2, Accuracy = 0.9722
min_samples_leaf = 4, Accuracy = 0.9583
  • max_features(最大特征数)

max_features 限制了用于中心分割的特征数量,协调了树之间的多样性。较低的值可以实现额外的各种树,预测对选定特征的过度依赖并促进更平衡的模型。

示例

输出

max_features = auto, Accuracy = 0.9750
max_features = sqrt, Accuracy = 0.9722
max_features = log2, Accuracy = 0.9583
max_features = None, Accuracy = 0.9583
  • bootstrap(自助采样)

在构建树时,bootstrap 参数决定是否使用自助采样(有替换采样)。它会影响每棵树的随机性,关闭它可能会导致树的多样性降低,从而可能影响模型对新数据的预测。

示例

输出

bootstrap = True, Accuracy = 0.9750
bootstrap = False, Accuracy = 0.9583

下一个主题模拟退火