Jest to ogólnie pytanie, które nie jest specyficzne dla żadnej metody ani zestawu danych. Jak radzimy sobie z problemem nierównowagi klas w uczeniu maszynowym nadzorowanym, w którym liczba 0 wynosi około 90%, a liczba 1 wynosi około 10% w zbiorze danych. Jak optymalnie szkolimy klasyfikatora.
Jednym ze sposobów, które stosuję, jest próbkowanie w celu zrównoważenia zestawu danych, a następnie szkolenie klasyfikatora i powtórzenie tego dla wielu próbek.
Wydaje mi się, że jest to przypadkowe. Czy istnieją ramy pozwalające podejść do tego rodzaju problemów?
Zależy to w dużej mierze od metody uczenia się. Większość podejść ogólnego przeznaczenia ma jeden (lub kilka) sposobów radzenia sobie z tym. Powszechnym rozwiązaniem jest nałożenie wyższej kary za błędne klasyfikowanie na klasę mniejszości, zmuszając klasyfikatora do ich rozpoznania (SVM, regresja logistyczna, sieci neuronowe, ...).
Zmiana próbkowania to również możliwość, o której wspomniałeś. W takim przypadku nadpróbkowanie klasy mniejszościowej jest zwykle lepszym rozwiązaniem niż niedopróbowanie klasy większościowej.
Niektóre metody, takie jak losowe lasy, nie wymagają żadnych modyfikacji.
źródło
Często problemem nie jest częstotliwość, lecz bezwzględna liczba przypadków w klasie mniejszości. Jeśli nie masz wystarczającej zmienności w celu w porównaniu do zmienności funkcji, może to oznaczać, że algorytm nie może bardzo dokładnie klasyfikować rzeczy.
Jedną rzeczą jest to, że kara za błędną klasyfikację może być stosowana na etapie klasyfikacji, a nie na etapie szacowania parametrów, jeśli taka istnieje. Niektóre metody nie mają pojęcia parametru, po prostu generują absolutne etykiety klasy lub prawdopodobieństwa klasy.
Jeśli posiadasz estymator probabilistyczny, możesz podjąć decyzję w sprawie klasyfikacji na podstawie teoretycznych informacji lub kombinacji wartości biznesowej.
źródło
Dodaj dwie sztuczki: 1. użyj CDF, policz częstotliwość w danych treningowych lub użyj bardzo dużej walidacji (jeśli zestaw testowy się nie zmieni, ale zestaw walidacyjny musi mieć taki sam rozkład z zestawem treningowym), następnie posortuj swoje prognozy i uzyskaj pierwsze X% (zliczasz częstotliwość wcześniej) dla jednej klasy, a pozostałe to ważona próbka else / 2. model będzie miał tendencję do ważonej klasy próbki, możesz użyć wariancji próbki v. np. waga = 1/2 (1- (vmax - vi) / vmax)
źródło