繁体   English   中英

sklearn中RepeatedStratifiedKFold和StratifiedKFold的区别

[英]Differences between RepeatedStratifiedKFold and StratifiedKFold in sklearn

我试图阅读RepeatedStratifiedKFoldStratifiedKFold的文档,但无法分辨这两种方法之间的区别,除了RepeatedStratifiedKFold重复StratifiedKFold n,每次重复时随机化不同。

我的问题是:这两种方法返回相同的结果吗? 在执行GridSearchCV时,我应该使用哪一个来拆分不平衡的数据集?选择该方法的理由是什么?

StratifiedKFoldRepeatedStratifiedKFold在用于严重 class 不平衡的分类问题时都非常有效。 他们都是按class label对抽样进行分层 也就是说,他们以这样一种方式拆分数据集,即在每个子集/折叠中保留与原始数据集中大致相同的 class 分布(即,每个类别的样本百分比相同)。 但是,单次运行StratifiedKFold可能会导致对模型性能的估计有噪声,因为数据的不同拆分可能会导致非常不同的结果。 这就是RepeatedStratifiedKFold发挥作用的地方。

RepeatedStratifiedKFold允许提高机器学习的估计性能 model,通过多次重复 交叉验证过程(根据n_repeats值),并报告所有运行的所有折叠的平均结果。 平均结果有望更准确地估计模型的性能(请参阅本文)。

因此——回答你的问题——,这两种方法不会提供相同的结果。 使用RepeatedStratifiedKFold意味着每次运行该过程都会导致将数据集不同地拆分为分层k折叠,因此,性能结果会有所不同。

RepeatedStratifiedKFold的好处是可以以拟合和评估更多模型为代价提高估计模型的性能。 例如,如果使用 10 折交叉验证的 5 次重复(即n_repeats=5 )来估计模型的性能,则意味着需要拟合(训练)和评估 50 个不同的模型——这可能是计算上的昂贵,取决于数据集的大小、机器学习算法的类型、设备规格等。但是, RepeatedStratifiedKFold过程可以在不同的内核或不同的机器上执行,这可以显着加快过程。 例如,设置n_jobs=-1将使用系统上所有可用的核心(请看这里)。

在进行评估时,请确保使用适当的指标,如本答案中所述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM