Uczenie Maszynowe – niezbalansowane klasy decyzyjne (imbalanced classes)

W tym ćwiczeniu prowadzimy praktyczne eksperymenty z danymi, w których liczba przypadków należących do poszczególnych klas znacznie się różni. Jest to radykalnie odmienna sytuacja od tej znanej ze zbioru danych irysków (kosaćców), gdzie klasy były idealnie zbalansowane.

"Quiz" (czyli raport z tych eksperymentów) w moodle można dowolnie wiele razy edytować i zapisywać przed upłynięciem terminu.

  1. Przypomnij sobie z wykładu, jakie metody możemy zastosować żeby pomóc klasyfikatorom docenić klasy mniejszościowe, oraz jakie metryki oceny klasyfikacji są w takiej sytuacji adekwatne.
  2. Przeczytaj dokumentację pakietu imbalanced-learn, w szczególności techniki nadpróbkowania, podpróbkowania oraz metryki oceny.
  3. Przypomnij sobie możliwości GridSearchCV do dostrajania wartości hiperparametrów. Przeanalizuj fragment kodu używający GridSearchCV w tym przykładzie.
  4. Pobierz zbiór danych o nazwie odpowiadającej Twojemu numerowi albumu i przeprowadź jego wstępną eksplorację: proporcja klas, liczba i rodzaje atrybutów, ich zakresy i rozkłady wartości. Nie musisz załączać wykresów rozkładów do sprawozdania – wystarczy, że je obejrzysz i opiszesz wnioski. Alternatywnie możesz oprócz min,max użyć jakichś podstawowych statystyk charakteryzujących rozkład typu średnia, odchylenie standardowe, itp. – i analizując takie charakteryzujące parametry rozkładu pogrupować (o ile to możliwe) atrybuty pisząc np. "73 atrybuty są takie a takie, 22 atrybuty charakteryzują się tym a tym, wyjątkowy jest atrybut taki a taki", itp. Jaką trafność i jakie G-mean uzyskałby klasyfikator "Zero Rule"?
  5. Stosując wiedzę nabytą na laboratorium z transformacji przestrzeni atrybutów, zwizualizuj ten zbiór w 2D i 3D podając procent wariancji zachowany przy rzutowaniu oryginalnej przestrzeni do 2D i 3D. Na wykresach pokaż przypadki obu klas jako kropki o dwóch różnych kolorach. Czy na podstawie tej wizualizacji możesz powiedzieć coś o tym, dla których z poznanych metod klasyfikacji ten zbiór będzie trudny i dlaczego?
  6. Przejrzyj dokumentację KNeighborsClassifier, DecisionTreeClassifier, RandomForestClassifier, SVC, MLPClassifier, GaussianNB i QuadraticDiscriminantAnalysis – które z nich mają parametr class_weight? Czy te, które mają ten parametr, pozwalają ustawić wartość 'balanced'?
  7. Postaraj się uzyskać na swoim zbiorze danych jak najwyższą trafność klasyfikacji wyżej wymienionymi klasyfikatorami używając oryginalnych (niezmienionych) atrybutów. Opcjonalnie możesz do nich dołączyć dowolną z metod pakietu imbalanced-learn. Opisz dokładnie przeprowadzone próby i sposób, w jaki mierzysz jakość. Wyznaczaj wartości trzech metryk: tradycyjną trafność, G-mean oraz ROC AUC. W rozdziale 3.3.1.4 przeczytasz, jak uzyskać wartości dwóch (lub więcej) metryk podczas uruchomienia GridSearchCV. Użyj 10-fold stratified CV. Odnieś uzyskane najlepsze wyniki w trzech kategoriach do wyników, jakie uzyskałby w każdej kategorii klasyfikator ZeroRule.
  8. Powtórz cały poprzedni eksperyment (poszukiwanie najwyższej jakości) jeszcze raz, aby porównać (np. wykresy różnic) wyniki wykorzystania oryginalnych atrybutów oraz atrybutów znormalizowanych. Wybierz jedną metodę normalizacji, opcjonalnie możesz wypróbować też PowerTransformer. Zwróć uwagę, jak należy podejść do skalowania, kiedy mamy zbiór uczący i testujący, i nie wolno nam "dotykać" zbioru testowego podczas uczenia.
  9. Wybierz najbardziej obiecujący, jeden klasyfikator i dostrój jego parametry. W miarę możliwości przedstaw wyniki graficznie, np. za pomocą zestawu heatmap dla par zmieniających się parametrów (przekrojów przez 3D lub 4D – zależnie od tego ile hiperparametrów optymalizujesz używając GridSearchCV). Ile wynosi zysk z dostrojenia w porównaniu do domyślnych wartości parametrów?
  10. Które z atrybutów (ich nazwy są w pierwszym wierszu pliku danych) są najistotniejsze w klasyfikacji i na ile różnice w istotności są duże? Żeby odpowiedzieć na to pytanie, możesz użyć dowolnej z technik i algorytmów poznanych do tej pory na wykładzie i laboratorium oraz dowolnej biblioteki.
  11. Wybierz klasyfikator, który ma parametr class_weight, i przetestuj jego działanie dla pięciu bardzo różnych wartości tego parametru, włączając w to równe wagi klas, wagi odpowiadające działaniu 'balanced', oraz wagi kładące nacisk na klasę mniejszościową. Dla każdej z tych pięciu prób wyświetlaj macierz pomyłek (ze zbioru testowego uzyskanego dowolnym sposobem podziału). Czy widzisz wpływ class_weight w macierzach pomyłek? Możesz zrobić np. wykres: na osi poziomej proporcja wag, na pionowej – liczby false positive i false negative.
  12. Obejrzyj macierze pomyłek dla najlepszych uzyskanych klasyfikatorów i podsumuj wnioski: jaki był wpływ normalizacji? Jakie klasyfikatory i ich parametry dały najlepszą jakość klasyfikowania? Czy klasyfikatory umożliwiające podawanie wag klas dały lepsze wyniki na Twoim zbiorze? Wybierz najlepszy klasyfikator dla każdej z trzech metryk jakości i podaj dla niego wszystkie trzy wartości metryk; czy zwycięzcy w każdej kategorii są dobrzy także w pozostałych kategoriach? Jak duże są odchylenia standardowe wartości zwracanych przez 10-fold stratified CV i czy różnice w jakościach omawianych klasyfikatorów są istotne?