随机森林分类器的超参数
在本文中,我们将了解随机森林分类器中存在的不同超参数。我们已经在文章 https://www.geeksforgeeks.org/random-forest-classifier-using-scikit-learn/ 中了解了使用 scikit-learn 库实现随机森林分类器。
超参数是无法从我们提供给算法的常规数据中学习的配置,它们是算法内置的,每个算法都有自己的预定义超参数集。通常会调整超参数以提高模型精度,我们可以使用各种方法,例如 GridSearchCV、RandomizedSearchCV,如文章 https://www.geeksforgeeks.org/hyperparameter-tuning/ 中所述。
需要对超参数有深入的了解,因为它们负责决定模型可以多快地适应数据以产生准确的结果。另一方面,由于过拟合问题,未找到超参数的最佳值也会导致准确性降低。因此,我们将仔细研究随机森林分类器的超参数,以更好地理解内置超参数:
- n_estimators:我们知道随机森林只不过是一组许多决策树,n_estimator 参数控制分类器内的树的数量。我们可能认为使用许多树来拟合一个模型会帮助我们得到更普遍的结果,但情况并非总是如此。但是,它不会导致任何过拟合,但肯定会增加模型的时间复杂度。 scikit-learn 中的默认估计器数量为 100。
- max_depth:它控制森林内树木可以生长的最大高度。当涉及到提高模型的精度时,它是最重要的超参数之一,随着我们增加树的深度,模型精度会增加到一定限度,但由于模型过度拟合,它会开始逐渐下降。重要的是适当地设置它的值以避免过度拟合。默认值设置为None, None 指定树内的节点将继续增长,直到所有叶子都变纯或所有叶子包含小于min_samples_split (另一个超参数)。
- min_samples_split:它指定内部节点必须保留的最小样本量才能拆分为更多节点。如果我们的 min_samples_splits 值非常低,那么在这种情况下,我们的树将继续增长并开始过度拟合。通过增加 min_samples_splits 的值,我们可以减少拆分的总数,从而限制模型中的参数数量,从而有助于减少模型中的过度拟合。但是,该值不应保持非常大,否则许多参数会极度下降,从而导致模型欠拟合。我们通常将 min_samples_split 值保持在 2 到 6 之间。但是,默认值设置为 2。
- min_samples_leaf:指定节点分裂后必须保留的最小样本量。当我们有大量参数时,它还有助于减少过度拟合。较少的参数也会导致过度拟合,我们应该记住,将值增加到较大的数量会导致较少的参数,在这种情况下模型也会欠拟合。默认值设置为 1。
- max_features:随机森林采用随机特征子集并尝试找到最佳分割。 max_features 有助于找到要考虑的特征数量,以便进行最佳分割。它可以采用四个值“ auto ”、“ sqrt ”、“ log2 ”和None 。
- 在 auto 的情况下:考虑 max_features = sqrt(n_features)
- 在 sqrt 的情况下:考虑 max_features = sqrt(n_features),它与 auto 相同
- 在 log2 的情况下:考虑 max_features = log2(n_features)
- 在 None 的情况下:考虑 max_features = n_features
- max_leaf_nodes:它对节点的分裂设置了限制,从而有助于减少树的深度,有效地有助于减少过拟合。如果该值设置为 None,则树将继续无限增长。
- max_samples:这个超参数有助于从训练数据集中选择最大数量的样本来训练每棵树。
这些是隐式存在于随机森林分类器中的主要超参数,需要对其进行调整以提高训练模型的准确性。