Talvez você possa pensar dessa maneira. Digamos que você tenha um conjunto de dados em que haja 100 amostras, 90 na classe 'A' e 10 na classe 'B'. Nesse projeto muito desequilibrado, se você criar grupos aleatórios normais, poderá criar modelos em muito poucos (ou até NENHUM!) Da classe 'B'. Se você está construindo um modelo que é treinado em dados em que há tão poucos, ou mesmo nenhum, da outra classe, como você espera que ele preveja efetivamente o grupo mais raro? A validação cruzada estratificada permite a randomização, mas também garante que esses conjuntos de dados desequilibrados possuam algumas das duas classes.
Para pacificar as preocupações sobre o uso de CV estratificado com conjuntos de dados mais 'equilibrados', vejamos um exemplo usando o código R.
require(mlbench)
require(caret)
require(cvTools)
# using the Sonar dataset (208 samples)
data(Sonar)
# see the distribution of classes are very well balanced
prop.table(table(Sonar$Class))
> prop.table(table(Sonar$Class))
M R
0.5336538 0.4663462
# stratified
# set seed for consistency
# caret::createFolds does stratified folds by default
set.seed(123)
strat <- createFolds(Sonar$Class, k=10)
# non-stratified using cvTools
set.seed(123)
folds <- cvFolds(nrow(Sonar), K=10, type="random")
df <- data.frame(fold = folds$which, index = folds$subsets)
non_strat <- lapply(split(df, df$fold), FUN=function(x) x$index)
# calculate the average class distribution of the folds
strat_dist <- colMeans(do.call("rbind", lapply(strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
non_strat_dist <- colMeans(do.call("rbind", lapply(non_strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
strat_dist
> strat_dist
M R
0.5338312 0.4661688
non_strat_dist
> non_strat_dist
M R
0.5328571 0.4671429
Como você pode ver, em um conjunto de dados bem equilibrado, as dobras terão uma distribuição semelhante por acaso. Portanto, o CV estratificado é simplesmente uma medida de garantia nessas circunstâncias. No entanto, para lidar com a variação, é necessário examinar as distribuições de cada dobra. Em algumas circunstâncias (mesmo começando de 50 a 50), você pode ter dobras com divisões de 30 a 70 por acaso (você pode executar o código acima e ver isso realmente acontecendo!). Isso pode levar a um modelo com pior desempenho, pois não possui classe suficiente para prever com precisão, aumentando assim a variação geral do CV. Obviamente, isso é mais importante quando você tem amostras "limitadas", nas quais é mais provável que haja diferenças muito extremas na distribuição.
Agora, com conjuntos de dados muito grandes, a estratificação pode não ser necessária porque as dobras serão grandes o suficiente para provavelmente ainda conter pelo menos uma boa proporção da classe 'mais rara'. No entanto, não há realmente perda computacional e nenhuma razão real para renunciar à estratificação se suas amostras estiverem desequilibradas não importa quantos dados você tenha na minha opinião pessoal.