Czy konieczne jest próbkowanie warstwowe (losowy las, Python)?

14

Używam Pythona do uruchamiania losowego modelu lasu w moim niezrównoważonym zbiorze danych (zmienną docelową była klasa binarna). Podczas dzielenia zestawu danych szkoleniowych i testowych zastanawiałem się, czy zastosować próbkowanie warstwowe (jak pokazano w kodzie), czy nie. Do tej pory zauważyłem w moim projekcie, że rozwarstwiony przypadek doprowadziłby do wyższej wydajności modelu. Ale myślę, że jeśli użyję mojego modelu do przewidzenia nowych przypadków, które prawdopodobnie będą się różnić w rozkładzie klasy docelowej w moim obecnym zestawie danych. Skłoniłem się więc do rozluźnienia tego ograniczenia i skorzystania z niestratyfikowanego podziału. Czy ktoś może doradzić, aby wyjaśnić tę kwestię?

train,test=train_test_split(myDataset, test_size=0.25, stratify=y)
LUSAQX
źródło

Odpowiedzi:

13

Jeśli liczba wartości należących do każdej klasy jest niezrównoważona, dobrym rozwiązaniem jest zastosowanie warstwowego próbkowania. Zasadniczo pytasz model, aby wziął zestaw szkoleniowy i testowy, tak aby proporcje klas były takie same jak dla całego zestawu danych, co jest słuszne . Jeśli twoje klasy są zrównoważone, przetasowanie (tutaj nie jest potrzebne stratyfikacja) może zasadniczo zagwarantować uczciwy test i podział pociągu.

Teraz twój model będzie zdolny lub przynajmniej wystarczająco wyposażony, aby przewidzieć przewagę liczebną klasy (klasa z mniejszą liczbą punktów). Dlatego zamiast tylko obliczać Dokładność, otrzymałeś inne wskaźniki, takie jak Czułość i Swoistość . Pilnujcie tych, to są strażnicy.

Mam nadzieję że to pomoże.

Kiritee Gak
źródło