Jestem nowy w eksploracji danych i staram się trenować drzewo decyzyjne względem zestawu danych, który jest wysoce niezrównoważony. Mam jednak problemy ze słabą dokładnością predykcyjną.
Dane obejmują studentów studiujących kursy, a zmienną klasową jest status kursu, który ma dwie wartości - Wycofany lub Bieżący.
- Wiek
- Pochodzenie etniczne
- Płeć
- Oczywiście
... - Status kursu
W zestawie danych znajduje się o wiele więcej instancji, które są aktualne niż wycofane. Wycofane wystąpienia stanowią tylko 2% wszystkich wystąpień.
Chcę być w stanie zbudować model, który może przewidzieć prawdopodobieństwo, że dana osoba wycofa się w przyszłości. Jednak podczas testowania modelu na podstawie danych treningowych dokładność modelu jest straszna.
Miałem podobne problemy z drzewami decyzyjnymi, w których dane są zdominowane przez jedną lub dwie klasy.
Jakie podejście mogę zastosować, aby rozwiązać ten problem i zbudować dokładniejszy klasyfikator?
Odpowiedzi:
Jest to interesujący i bardzo częsty problem w klasyfikacji - nie tylko w drzewach decyzyjnych, ale praktycznie we wszystkich algorytmach klasyfikacji.
Jak ustalono empirycznie, zestaw treningowy składający się z różnej liczby przedstawicieli z każdej klasy może skutkować klasyfikatorem, który jest tendencyjny do klasy większościowej. Po zastosowaniu do zestawu testowego, który jest podobnie niezrównoważony, ten klasyfikator daje optymistyczne oszacowanie dokładności. W skrajnym przypadku klasyfikator może przypisać każdy pojedynczy przypadek testowy do klasy większościowej, uzyskując w ten sposób dokładność równą proporcji przypadków testowych należących do klasy większościowej. Jest to dobrze znane zjawisko w klasyfikacji binarnej (i naturalnie rozciąga się na ustawienia wielu klas).
Jest to ważna kwestia, ponieważ niezrównoważony zestaw danych może prowadzić do zawyżonych oszacowań wydajności. To z kolei może prowadzić do fałszywych wniosków na temat znaczenia, z jakim algorytm działał lepiej niż przypadek.
Literatura na temat uczenia maszynowego na ten temat zasadniczo opracowała trzy strategie rozwiązań.
Można przywrócić równowagę na planie treningowym przez undersampling dużą klasę lub przez oversampling małą klasę, aby zapobiec powstawaniu uprzedzeń w pierwszej kolejności.
Alternatywnie możesz zmodyfikować koszty błędnej klasyfikacji, jak zauważono w poprzedniej odpowiedzi, ponownie, aby zapobiec stronniczości.
Poleciłbym rozważyć co najmniej dwa z powyższych podejść łącznie. Na przykład, możesz przelicytować swoją klasę mniejszości, aby zapobiec uzyskaniu przez twój klasyfikator uprzedzeń na korzyść klasy większościowej. Następnie, oceniając wydajność klasyfikatora, możesz zastąpić dokładność zrównoważoną dokładnością. Te dwa podejścia się uzupełniają. Zastosowane razem powinny pomóc zarówno uniknąć pierwotnego problemu, jak i uniknąć wynikających z niego fałszywych wniosków.
Z przyjemnością opublikuję dodatkowe odniesienia do literatury, jeśli zechcesz to kontynuować.
źródło
Poniższe cztery pomysły mogą pomóc rozwiązać ten problem.
Użyj parametru „wcześniejszego” w drzewach decyzyjnych, aby poinformować algorytm o wcześniejszej częstotliwości klas w zbiorze danych, tj. Czy istnieje 1000 pozytywów w zbiorze 1000,0000 zbiorów danych
prior = c(0.001, 0.999)
(w R).Użyj argumentu „wagi” w funkcji klasyfikacji, której używasz, aby surowo ukarać algorytm za błędne klasyfikacje rzadkich przypadków dodatnich
Użyj argumentu „koszt” w niektórych algorytmach klasyfikacyjnych - np.
rpart
W R -, aby zdefiniować koszty względne błędnych klasyfikacji prawdziwie pozytywnych i prawdziwie negatywnych. Oczywiście powinieneś ustawić wysoki koszt błędnej klasyfikacji rzadkiej klasy.Nie jestem zwolennikiem nadpróbkowania, ponieważ wprowadza on zależne obserwacje do zbioru danych, co narusza założenia niezależności przyjęte zarówno w statystyce, jak i uczeniu maszynowym.
źródło
Odpowiedziałem w ostatnim temacie :
Nie tylko zapewnia to bardziej stabilne podejście, ale modele są ogólnie lepsze, jeśli chodzi o środki dotyczące wzrostu.
źródło
Dodanie do odpowiedzi @Kay. Strategia pierwszego rozwiązania: Syntetyczne pomniejszanie nadpróbkowania ( SMOTE ) zwykle działa lepiej niż niedostateczne lub nadmierne próbkowanie z mojego doświadczenia, ponieważ myślę, że stanowi to pewien kompromis między nimi. Tworzy syntetyczne próbki klasy mniejszości przy użyciu punktów danych wykreślonych w przestrzeni predyktorów wielowymiarowych i w przybliżeniu przyjmuje punkty środkowe między sąsiednimi punktami w tej przestrzeni, aby tworzyć nowe punkty syntetyczne, a zatem równoważy obie wielkości klas. (nie jestem pewien co do punktów środkowych, szczegóły algorytmu tutaj
źródło