【机器学习系列】掌握随机森林:从基础原理到参数优化的全面指南

您所在的位置:网站首页 将文本数据导入随机森林中的方法 【机器学习系列】掌握随机森林:从基础原理到参数优化的全面指南

【机器学习系列】掌握随机森林:从基础原理到参数优化的全面指南

2024-07-14 01:22| 来源: 网络整理| 查看: 265

n_estimators:数值型取值     含义:森林中决策树的个数,默认是10     criterion:字符型取值     含义:采用何种方法度量分裂质量,信息熵或者基尼指数,默认是基尼指数

max_features: 通常情况下取值为int型, float型。     含义:用于控制在构建每棵决策树时从原始特征集中随机选择的特征子集的大小。     int:表示在构建每棵决策树时从全部特征中随机选择的特征数。例如,如果 max_features=4,则每棵决策树在构建时从全部特征中随机选择 4 个特征。     float:表示在构建每棵决策树时从全部特征中随机选择的特征数的比例。例如,如果 max_features=0.5,则每棵决策树在构建时从全部特征中随机选择 50% 的特征。

max_depth:int型取值或者None,默认为None     含义:树的最大深度

min_samples_split:int型取值,float型取值,默认为2     含义:分割内部节点所需的最少样本数量     int:如果是int值,则就是这个int值     float:如果是float值,则为min_samples_split * n_samples

min_samples_leaf:int取值,float取值,默认为1

    含义:叶子节点上包含的样本最小值     int:就是这个int值     float:min_samples_leaf * n_samples

min_weight_fraction_leaf : float,default=0.     含义:能成为叶子节点的条件是:该节点对应的实例数和总样本数的比值,至少大于这个min_weight_fraction_leaf值

max_leaf_nodes:int类型,或者None(默认None)     含义:最大叶子节点数

min_impurity_split:float取值      含义:它用于控制决策树的早停规则。具体来说,这个参数定义了一个节点在分裂之前必须达到的最小不纯度阈值。

在决策树的构建过程中,如果一个节点的信息增益(或基尼不纯度减少)小于 min_impurity_split 设定的阈值,那么这个节点将不再进行分裂,而是被视为一个叶节点。这样做的目的是为了防止树的过度生长,从而减少过拟合的风险。

需要注意的是,在较新的 scikit-learn 版本中,min_impurity_split 参数已经被弃用,取而代之的是 min_impurity_decrease 参数。min_impurity_decrease 的工作原理与 min_impurity_split 类似,但它考虑了分裂后每个子节点的样本数,提供了更精细的控制。

min_impurity_decrease:float取值,默认0.     含义:这个参数定义了一个节点在分裂之前必须达到的最小不纯度减少量。

bootstrap:布尔类型取值,默认True     含义:是否采用有放回式的抽样方式

oob_score:布尔类型取值,默认False     含义:是否使用袋外样本来估计该模型大概的准确率

它在随机森林模型训练时启用或禁用一种称为“袋外(Out-of-Bag,OOB)估计”的特性。

当 oob_score=True 时,随机森林在构建过程中,每次建立树时都会随机抽取一部分样本(通常为样本总数的一定比例,如 1/3)作为验证集,剩下的样本用于训练。这样,每个决策树都会有一部分样本(即“袋外”样本)在训练过程中未被使用。在每个决策树训练完成后,可以使用袋外样本来评估该树的性能,比如计算准确率、精确率、召回率等。

通过所有决策树的袋外样本评估,我们可以得到一个整体的模型性能估计,即 oob_score。这对于评估模型的泛化能力、选择合适的参数,以及防止过拟合非常有帮助。oob_score 是一种无监督的模型评估方法,因为它不需要额外的验证集。

请注意,oob_score 可能会消耗额外的计算资源,尤其是在数据集很大或者树的数量很多时。如果计算资源有限,可能需要权衡是否开启这个参数。

也就是说

OOB(Out-of-Bag)评估方法不需要额外的数据集来评估模型的性能。

在训练一些机器学习模型时,我们通常需要将数据集分成训练集和验证集(或测试集)。训练集用于训练模型,而验证集用于评估模型的性能。这种方法被称为监督式学习(supervised learning),因为我们需要事先知道输入和输出之间的关系。

然而,OOB评估方法不需要额外的数据集,因为它在训练过程中自动地将一部分数据抽出作为袋外样本。这些袋外样本在训练过程中没有被使用,因此可以用作评估模型性能。这种评估方法不需要额外的数据集,也不需要事先知道输入和输出之间的关系,因此被称为无监督的(unsupervised)。

总之,OOB评估方法是一种在训练过程中自动生成袋外样本的方法,可以用来评估随机森林模型的性能,而无需额外的数据集。

n_jobs:int类型取值,默认1     含义:拟合和预测过程中并行运用的作业数量。如果为-1,则作业数设置为处理器的core数。

n_jobs 是随机森林模型中的一个参数,用于控制并行计算的数量。

在训练随机森林模型时,会构建多个决策树。如果 n_jobs 的取值大于 1,则会尝试使用多个 CPU 核心来并行构建这些决策树,从而加速训练过程。具体来说,n_jobs 参数指定了可以并发执行的 CPU 核心数量。

如果 n_jobs 的取值为 -1,则表示使用所有可用的 CPU 核心。如果 n_jobs 的取值为 1,则表示不使用并行计算,只使用一个 CPU 核心来训练模型。

需要注意的是,如果 n_jobs 的取值大于 1,则可能会增加内存使用量,因为每个 CPU 核心都需要保留一份模型的副本。因此,如果内存有限,可以尝试降低 n_jobs 的取值,以减少内存使用量。

重要:

class_weight:dict, list or dicts, "balanced"     含义:class_weight 是一个用于处理不平衡数据集的参数。它用于指定分类任务中各个类别的权重,从而帮助模型更好地学习不平衡数据集中的信息。

在不平衡数据集中,某些类别的样本数量可能远远少于其他类别,这可能导致模型在训练过程中更倾向于预测样本数量较多的类别,而忽略样本数量较少的类别。为了解决这个问题,可以使用 class_weight 参数来为不同类别分配不同的权重,使得模型在训练过程中更加关注样本数量较少的类别。

class_weight 参数的取值可以是一个字典,其中键是类别标签,值是对应的权重。例如,如果数据集中有两个类别,类别标签分别为 0 和 1,可以使用以下方式指定权重:

class_weight = {0: 1, 1: 2}

如果没有给定这个值,那么所有类别都应该是权重1     对于多分类问题,可以按照分类结果y的可能取值的顺序给出一个list或者dict值,用来指明各类的权重。

class_weight 参数允许用户为不同的类别设置不同的权重,以此来调整模型对各个类别的关注度。当 class_weight 被设置为 'balanced' 时,模型会自动调整权重,使得权重与每个类别的样本数成反比。具体来说,如果类别 i 的样本数为 n_i,那么类别 i 的权重 w_i 将按照以下公式计算:

w_i = n_samples / (n_classes * n_i) 其中 n_samples 是总样本数,n_classes 是类别总数。

"balanced_subsample"模式和"balanced"模式类似,只是它计算使用的是有放回式的取样中取得样本数,而不是总样本数 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3