【发布时间】:2014-11-23 17:30:05
【问题描述】:
我了解random_state 用于各种 sklearn 算法,以打破具有相同度量值的不同预测变量(树)之间的联系(例如在 GradientBoosting 中)。但是文档没有对此进行澄清或详细说明。喜欢
1) 这些种子还用于随机数生成的什么地方?比如说RandomForestClassifier,随机数可以用来找到一组随机特征来构建一个预测器。使用子采样的算法可以使用随机数来获得不同的子样本。同一种子 (random_state) 能否/是否在多个随机数生成中发挥作用?
我主要关心的是
2) 这个 random_state 变量的影响有多远。 ?该值能否对预测(分类或回归)产生很大影响。如果是,我应该更关心什么样的数据集?还是更注重稳定性而不是结果质量?
3) 如果它可以产生很大的不同,那么如何最好地选择 random_state?在没有直觉的情况下进行 GridSearch 是一件很困难的事情。特别是如果数据集是这样的,一份简历可能需要一个小时。
4) 如果动机是只对我的模型进行稳定的结果/评估并在重复运行中交叉验证分数,如果我在使用任何算法之前设置random.seed(X)(并使用@ 987654326@ 无)。
5) 假设我在 GradientBoosted 分类器上使用 random_state 值,并且我正在交叉验证以找到我的模型的优点(每次都在验证集上评分)。一旦满意,我将在整个训练集上训练我的模型,然后再将其应用于测试集。现在,在交叉验证中,完整的训练集比较小的训练集有更多的实例。因此,与 cv 循环中发生的情况相比,random_state 值现在可以导致完全不同的行为(特征和单个预测变量的选择)。类似地,最小样本叶等也可能导致模型较差,因为设置与 CV 中的实例数有关,而实际实例数更多。这是正确的理解吗?有什么方法可以防止这种情况发生?
【问题讨论】:
标签: machine-learning scikit-learn random-forest