![](/img/trans.png)
[英]difference between StratifiedKFold and StratifiedShuffleSplit in sklearn
[英]Differences between RepeatedStratifiedKFold and StratifiedKFold in sklearn
我试图阅读RepeatedStratifiedKFold和StratifiedKFold的文档,但无法分辨这两种方法之间的区别,除了RepeatedStratifiedKFold
重复StratifiedKFold
n次,每次重复时随机化不同。
我的问题是:这两种方法返回相同的结果吗? 在执行GridSearchCV
时,我应该使用哪一个来拆分不平衡的数据集?选择该方法的理由是什么?
StratifiedKFold
和RepeatedStratifiedKFold
在用于严重 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.