【问题标题】:How do I specify and search for optimal row and column sampling ratios in scikit learn? [closed]如何在 scikit learn 中指定和搜索最佳行和列采样率? [关闭]
【发布时间】:2021-03-17 20:01:49
【问题描述】:

在学习随机森林时,我遇到了以下几点:

  • 原始数据集 D 包含 d 列和 n 行
  • 每个自举数据集 Di 包含 d' 列和 m 行
  • 降低列采样率 d'/d 以减少方差
  • 降低行采样率 m/n 以减少方差

我想知道如何在 scikit learn 中做到这一点。

Q1.如果我将这两个比率都视为超参数,那么我该如何对它们进行随机搜索?比如说使用 RandomizedSearchedCV 之类的东西或任何其他 API?

Q2。我还检查了RandomForestClassifier。它有一个属性max_sample。在其描述中,文档说the number of samples to draw from X to train each base estimator。但是后来我很困惑为什么它使用max这个词?我们不能在任何地方指定固定的样本量吗?这个参数真的是行采样率吗?

Q3.“随机”列抽样有意义吗?还是 PCA 更有意义?另外,如果我必须进行“随机”列采样(例如,如果 PCA 不可能),我该怎么做?有没有相同的API?

【问题讨论】:

    标签: python machine-learning scikit-learn random-forest


    【解决方案1】:

    决策树的问题在于它们在学习它的训练集上有一个高方差

    例如如果训练集发生变化,从相同的分布中采样,那么这棵树可能与之前的不同,例如决策树容易过拟合

    为了解决这个问题,随机森林派上用场了,它除了自举(特别是自举装袋)外,还引入了特征的随机抽样

    随机森林的基本原理是使用 bootstrap bagging 结合每棵树的特征采样来减少方差。因为如果子模型不相关或充其量是弱相关,集成模型效果会更好(有关于该主题的数学证明)

    如果我们使用相同的一组特征,它们会以某种方式相互关联。因此,为了减少模型之间的方差和相关性,我们使用了 boostrap bagging 和随机特征采样

    关于实际问题:

    Q1:这些比例基本上是

    • 要从数据集中提取并替换的实例数(引导程序)= m
    • 要为每棵树提取的随机特征子集= d'

    当然,您可以将这些设置为超参数并在网格搜索算法中使用它们。如下:

    • n_estimators 集成中要构建多少棵树

    • max_samples 从 X 中抽取的样本数以训练每个基本估计器(关于 m/n 比率)

    • max_features 关于 d'/d 比率

       GridSearchCV(cv=5,
                    estimator=RandomForestClassifier(...),
                    param_grid={'n_estimators': [...], 
                                'max_samples': [...],
                                'max_features': [...]})
      

    您也可以使用 RandomizedSearchCV,但您需要指定参数的分布,而不是尝试组合的固定值。

    https://scikit-learn.org/stable/auto_examples/model_selection/plot_randomized_search.html#sphx-glr-auto-examples-model-selection-plot-randomized-search-py

    Q2:是的,它是实例(或行)的采样。不知道为什么里面有max这个词。

    旁注:直到 0.22 版本这个超参数 was not present 。因此,在进行 bootstrap bagging 时,它会使用替换进行采样,创建与原始输入 X 大小相同的数据集。

    Q3:随机性用于确保树之间没有相关性(如前所述)。 PCA 是完全不同的东西。 PCA 用于降低训练集的维数。而在 PCA 中,特征被构造为其他特征的线性组合。

    这种随机性已经在 RandomForestClassifier 实现中。可能它只是从特征集中以概率 1/d(均匀分布)进行采样

    【讨论】:

      猜你喜欢
      • 2015-05-26
      • 2015-07-04
      • 2014-06-20
      • 2018-01-24
      • 2022-12-17
      • 2016-05-08
      • 2012-05-21
      • 2014-02-25
      • 2018-09-08
      相关资源
      最近更新 更多