Dlaczego warto stosować stratyfikację krzyżową? Dlaczego nie wpływa to na korzyści związane z wariancją?

29

Powiedziano mi, że korzystne jest stosowanie warstwowej weryfikacji krzyżowej, zwłaszcza gdy klasy odpowiedzi są niezrównoważone. Jeśli jednym z celów walidacji krzyżowej jest pomoc w rozliczeniu losowości naszej oryginalnej próbki danych treningowych, na pewno sprawienie, by każda zakładka miała taki sam rozkład klas, działałoby przeciwko temu, chyba że byłeś pewien, że twój oryginalny zestaw treningowy miał reprezentatywny rozkład klas.

Czy moja logika jest wadliwa?

EDIT Jestem zainteresowany tym, czy ta metoda szkodzi dobru CV. Rozumiem, dlaczego jest to konieczne, jeśli masz małą próbkę / bardzo niezrównoważone klasy / oba, aby uniknąć braku jednego przedstawiciela mniejszej klasy w folderze.

Artykuł „ Jabłka do jabłka w badaniach krzyżowej walidacji: pułapki w pomiarze wydajności klasyfikatora” dobrze przedstawia argumentację za rozwarstwieniem, ale wszystkie argumenty wydają się sprowadzać do „stratyfikacji zapewnia ochronę i większą spójność”, ale żadne zabezpieczenie nie byłoby wymagane, biorąc pod uwagę wystarczającą ilość dane.

Odpowiedź jest prosta: „Używamy go z konieczności, ponieważ rzadko mamy wystarczającą ilość danych”. ?

James Owers
źródło

Odpowiedzi:

18

Bootstrapping ma na celu symulację efektu pobierania nowej próbki z populacji i nie ma na celu zapewnienia odrębnych zestawów testowych (pozostałości po N z próbkowania N z wymianą).

RxK-krotnie Weryfikacja krzyżowa zapewnia K różnych fałdów testowych, ale następnie jest powtarzana razy R dla różnych losowych podziałów, aby umożliwić przyjęcie założeń niezależności dla K-CV, ale jest to tracone przy powtarzaniu.

Stratyfikowana walidacja krzyżowa narusza zasadę, że etykiety testowe nigdy nie powinny były być przeglądane przed obliczeniem statystyk, ale ogólnie uważa się, że jest to nieszkodliwe, ponieważ jedynym efektem jest zrównoważenie fałd, ale prowadzi to do utraty różnorodności ( niechciana utrata wariancji). Przechodzi jeszcze dalej od pomysłu Boostrap, aby zbudować próbkę podobną do tej, którą naturalnie wyciągnąłbyś z całej populacji. Prawdopodobnie głównym powodem stratyfikacji jest istotne zajęcie się defektami algorytmów klasyfikacji, ponieważ są one zbyt łatwo stronnicze z powodu nadmiernej lub niedostatecznej reprezentacji klas. Algorytm, który wykorzystuje techniki równoważenia (przez selekcję lub ważenie) lub optymalizuje miarę korygującą szanse (Kappa lub najlepiej Informowanie), ma na to mniejszy wpływ, chociaż nawet takie algorytmy mogą „

Zmuszanie każdego foldu do posiadania co najmniej m instancji każdej klasy, dla niektórych małych m, jest alternatywą dla stratyfikacji, która działa zarówno dla Bootstrapowania, jak i CV. Ma tendencję do wygładzania, dzięki czemu fałdy są bardziej zrównoważone, niż można by się spodziewać.

Zespoły i różnorodność: Jeśli klasyfikatory wyuczone na fałdach treningowych są używane do łączenia, nie tylko oszacowania błędu uogólnienia, rosnąca sztywność CV, warstwowego Bootstrap i warstwowego CV prowadzi do utraty różnorodności i potencjalnie odporności, w porównaniu do Bootstrap, wymuszonego Bootstrap i wymuszone CV.

David MW Powers
źródło
Czy byłoby możliwe, aby dostarczyć kilka dokumentów referencyjnych na temat tego, w jaki sposób bootstrap warstwowy „kończy się niepowodzeniem” tam, gdzie siła ładowania początkowego „jest lepsza”?
usεr11852 mówi Przywróć Monic
16

Być może możesz o tym myśleć w ten sposób. Załóżmy, że masz zestaw danych, w którym znajduje się 100 próbek, 90 w klasie „A” i 10 w klasie „B”. W tym bardzo niezrównoważonym projekcie, jeśli wykonujesz normalne losowe grupy, możesz skończyć budowaniem modeli na nielicznych (lub NAWET NIE!) Z klasy „B”. Jeśli budujesz model, który jest szkolony na danych, w których jest tak mało, a nawet nie ma, drugiej klasy, jak możesz oczekiwać, że skutecznie prognozuje rzadszą grupę? Warstwowa walidacja krzyżowa pozwala na randomizację, ale także zapewnia, że ​​te niezrównoważone zestawy danych mają niektóre z obu klas.

Aby uspokoić obawy dotyczące stosowania warstwowego CV z bardziej „zbalansowanymi” zestawami danych, spójrzmy na przykład wykorzystujący kod 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 

Jak widać, w zbiorze danych, który jest dobrze zrównoważony, fałdy będą miały podobny rozkład losowo. Dlatego warstwowe CV jest w tych okolicznościach po prostu miarą pewności. Jednak, aby rozwiązać problem wariancji, należy przyjrzeć się rozkładom poszczególnych foldów. W niektórych okolicznościach (nawet od 50-50) możesz mieć fałdy, które mają losowy podział 30-70 przez przypadek (możesz uruchomić powyższy kod i zobaczyć, jak to się naprawdę dzieje!). Może to prowadzić do gorszego modelu, ponieważ nie miał wystarczającej liczby jednej klasy, aby dokładnie przewidzieć, zwiększając tym samym ogólną wariancję CV. Jest to oczywiście ważniejsze, gdy masz „ograniczone” próbki, w przypadku których istnieje większe prawdopodobieństwo bardzo skrajnych różnic w dystrybucji.

Teraz, przy bardzo dużych zestawach danych, stratyfikacja może nie być konieczna, ponieważ fałdy będą na tyle duże, że nadal prawdopodobnie będą zawierać co najmniej dobry odsetek klasy „rzadszej”. Jednak tak naprawdę nie ma strat obliczeniowych i nie ma prawdziwego powodu, aby zrezygnować ze stratyfikacji, jeśli próbki są niezrównoważone, bez względu na to, ile danych masz według mnie.

cdeterman
źródło
Tak, to ma sens. Jest to jednak bardzo szczególny przypadek i robisz to, aby wyjaśnić brak danych. Gdybyś miał 10 000 próbek, zrobiłbyś to? Moje pytanie brzmi: idealnie i biorąc pod uwagę wystarczającą ilość danych, czy to dobry pomysł?
James Owers
1
@ kungfujam, to zależy od tego, jak niezrównoważone są twoje dane. Nawet przy ogromnej ilości danych możesz skończyć z bardzo małą liczbą innych klas (losowo). Istnieją pewne badania dotyczące tego. Chociaż Kohavi był trochę przestarzały, zgłosił to stratifcation is generally a better scheme, both in terms of bias and variance, when compared to regular cross-validation. Nie ma idealnego schematu próbkowania, ale w projektach niezrównoważonych stratyfikacja jest dobrym podejściem.
cdeterman
Dziękuję Ci za to. Właśnie znalazłem gazetę Kohavi. Stary ale jary. Widzę, że ogólnie klasy nie są idealnie zrównoważone, a dane są ograniczone => stratyfikacja jest ogólnie lepsza ... ale biorąc pod uwagę rozsądną równowagę, czuję się, jakby to było naruszenie!
James Owers
@kungfujam, jaką część uważasz za naruszenie? K-fałdy są losowe, z tym wyjątkiem, że specyficznie wymagają określonej proporcji różnych grup. Możesz myśleć o tym jako o losowym tworzeniu twoich foldów z każdej grupy i łączeniu ich razem dla jednego zagregowanego folda, zachowując w ten sposób losowość, o którą się martwisz. Biorąc pod uwagę rozsądną równowagę (np. 60% -40%), prawdopodobnie fałdy będą miały podobne proporcje z rozwarstwieniem lub bez (niektóre warianty oczywiście).
cdeterman
1
Wydaje mi się, że pokonuje to sens. Twoja oryginalna próbka jest „losowa”. Jako taki, pomyślałem, że CV powinno próbować to wyjaśnić, wytwarzając różne próbki, i doprowadzić cię do stworzenia solidniejszego modelu do wariancji poprzez karanie modeli, które zmieniają się wraz ze zmianami danych wejściowych. Jeśli ograniczysz fałdy do proporcji oryginalnej próbki, poczułem, że w pewnym sensie powstrzymujesz to przed zrobieniem tego. Możesz równie dobrze stworzyć model o mniejszym odchyleniu, ale sądzę, że miałby większą wariancję.
James Owers