Lab 9A: Przeglądanie wyjaśnień modeli z automatycznego uczenia maszynowego
Po co jest to ćwiczenie?
Model, który dobrze przewiduje, to jeszcze nie model, któremu można zaufać. Przy przewidywaniu cukrzycy pytanie „dlaczego akurat ten pacjent?" pada natychmiast - i nie jest to ciekawość, tylko warunek dopuszczenia modelu do użycia. Podobnie dzieje się wszędzie tam, gdzie decyzja dotyczy człowieka: przy ocenie wniosku kredytowego, przy kolejności przyjęć do lekarza, przy rekrutacji.
Stąd pojęcie wyjaśnialności modelu (ang. model explainability): zestaw metod, które pokazują, na czym model opiera swoje decyzje, zamiast traktować go jak czarną skrzynkę. Najczęściej używanym narzędziem jest ważność cech (ang. feature importance) - liczba mówiąca, jak mocno każda kolumna danych wpływa na przewidywanie.
W Lab 8B automatyczne uczenie maszynowe wybrało najlepszy model za Ciebie. Tutaj zobaczysz, że przy okazji potrafi też wyjaśnić, co ten model uznał za istotne - wystarczy jedno ustawienie w konfiguracji zadania (job).
Gdzie ogląda się wyjaśnienia: wyniki trafiają na kartę Explanations (preview) w Azure Machine Learning studio. SDK nie daje sposobu, żeby wciągnąć te dane z powrotem do notatnika - dlatego w tym ćwiczeniu wyjaśnienia przegląda się w interfejsie, a nie wypisuje w Pythonie. Notatnik służy do uruchomienia zadania i wypisania linku.
Pełny Responsible AI dashboard - z analizą błędów, sprawiedliwością i analizą przyczynową - nie jest dostępny dla modeli AutoML; studio pokazuje tam komunikat „Responsible AI dashboard is currently not supported for AutoML models". Taki pulpit zbudujesz w Lab 9B, dla modelu wytrenowanego zwykłym skryptem.
Czego się nauczysz
- Co znaczy ważność cech i czym różni się od zwykłej korelacji.
- Jak włączyć generowanie wyjaśnień w zadaniu automatycznego uczenia maszynowego (
enable_model_explainability=True). - Jak otworzyć kartę Explanations (preview) najlepszego modelu i odczytać wykres ważności cech.
- Czym jest inżynieria cech (ang. feature engineering) wykonywana automatycznie przez AutoML i jak wpływa na to, co widać w wyjaśnieniach.
- Jak porównać ważność cech surowych (Raw features) z cechami wytworzonymi automatycznie (Engineered features).
Zanim zaczniesz
Upewnij się, że masz ukończone ćwiczenia Lab 1A i Lab 1B - powstaje w nich obszar roboczy Azure Machine Learning oraz pozostałe zasoby używane w tym ćwiczeniu. Przydatne będzie też Lab 8B, w którym omówione jest samo automatyczne uczenie maszynowe.
Zadanie korzysta z zasobu danych diabetes_mltable (typ mltable) oraz z klastra obliczeniowego aml-cluster.
Krok 1: Uruchomienie zadania z włączonymi wyjaśnieniami
W Azure Machine Learning studio przejdź do strony Compute swojego obszaru roboczego, a na karcie Compute instances upewnij się, że instancja obliczeniowa (
mymachine) jest uruchomiona. Jeśli nie, uruchom ją.Dlaczego to robimy: instancja obliczeniowa jest maszyną, na której działa notatnik i z której zlecasz zadanie. Samo trenowanie wykona się na klastrze
aml-cluster, więc instancja tylko wydaje polecenia.Gdy instancja obliczeniowa jest uruchomiona, kliknij przy niej link JupyterLab, aby otworzyć JupyterLab w nowej karcie przeglądarki.
W przeglądarce plików JupyterLab otwórz folder
MachineLearningCourse/materialy/azure-ml/plsklonowany w Lab 1B, a w nim notatnik 09A - Reviewing Automated Machine Learning Explanations.ipynb. Upewnij się, że korzysta on z kernela Python 3.10 - SDK v2, a następnie czytaj komentarze w notatniku, uruchamiając kolejno każdą komórkę kodu.Dlaczego kernel jest ważny: kernel decyduje, które środowisko Pythona wykonuje kod. Tylko kernel z SDK v2 ma zainstalowany pakiet
azure-ai-ml.
Krok 2: Na co zwrócić uwagę w notatniku
Jedno ustawienie, które robi całą robotę
W ustawieniach trenowania zadania AutoML pojawia się enable_model_explainability=True.
Dlaczego to robimy: bez tego ustawienia dostajesz sam model i jego metryki. Z nim Azure Machine Learning po wyłonieniu zwycięzcy uruchamia dodatkowe obliczenia, które mierzą wkład każdej cechy w przewidywanie, i zapisuje wynik na karcie Explanations (preview) tego modelu. Liczenie wyjaśnień kosztuje czas maszyn, dlatego jest opcjonalne - ale przy modelu, który ma trafić do użycia, warto je włączyć od razu, żeby nie wracać do tego później.
Mały budżet prób
Zadanie ma ograniczoną liczbę prób i limit czasu.
Dlaczego to robimy: celem tego ćwiczenia nie jest wygranie rankingu jakości, tylko obejrzenie wyjaśnień. Mały budżet skraca czekanie i rachunek, a wyjaśnienia wyglądają tak samo niezależnie od tego, czy model wybierano spośród pięciu, czy spośród pięćdziesięciu kandydatów.
Link do Studio
Ostatnia komórka każdego etapu pobiera ukończone zadanie i wypisuje adres Studio URL.
Dlaczego akurat link: to jedyna droga do wyjaśnień. Nie istnieje metoda SDK, która zwróciłaby ważność cech do zmiennej w Pythonie - dane wyjaśnień żyją w pulpicie w Studio. Jeśli spodziewasz się w notatniku tabelki z liczbami, to jej tam nie będzie i nie jest to usterka.
Krok 3: Odczytanie ważności cech w Studio
Otwórz link wypisany przez notatnik, aby przejść do zadania w Azure Machine Learning studio.
Na karcie Models + child jobs wybierz najlepszy model, a następnie otwórz jego kartę Explanations (preview). Jeśli karta jest pusta, zaznacz model i kliknij Explain model, wskazując klaster obliczeniowy - wyliczenie wyjaśnień potrwa kilka minut.
Obejrzyj wykres ważności cech: cechy są uszeregowane od najmocniej do najsłabiej wpływającej na przewidywanie.
Dlaczego to robimy: ten wykres odpowiada na pytanie, którego nie odpowie żadna metryka jakości - na czym model faktycznie opiera decyzje. Dwa modele z takim samym AUC mogą patrzeć na zupełnie różne kolumny, a to, na którą patrzą, przesądza o tym, czy będą działać poprawnie na nowych pacjentach.
Jak to czytać ostrożnie: ważność cech mówi, z czego model korzysta, a nie co jest przyczyną choroby. Cecha może być ważna, bo faktycznie niesie informację, ale też dlatego, że przypadkiem towarzyszy wynikowi w danych treningowych. Kolumna
PatientIDjest tu wzorcowym przykładem: jest identyfikatorem, nigdy nie powinna trafić do modelu jako cecha, a gdyby trafiła i wyszła na wysokiej pozycji, byłby to sygnał przecieku danych, a nie odkrycie medyczne.
Krok 4: Cechy surowe a cechy wytworzone automatycznie
Notatnik uruchamia zadanie drugi raz, tym razem z włączonym przetwarzaniem wstępnym danych (set_featurization).
Dlaczego to robimy: inżynieria cech to tworzenie nowych kolumn z już istniejących - skalowanie wartości, kodowanie kategorii, łączenie kolumn. AutoML potrafi zrobić to za Ciebie, co zwykle poprawia wynik, ale zmienia obraz w wyjaśnieniach: model uczy się już nie na oryginalnych kolumnach, tylko na tym, co z nich powstało.
Uwaga o nazewnictwie: przekształcenia wykonują potoki transformacji scikit-learn. To zupełnie co innego niż potoki (pipelines) Azure Machine Learning z ćwiczeń Lab 6A i Lab 6B - zbieżność nazw jest przypadkowa.
Otwórz drugie zadanie przez link wypisany przez notatnik i przejdź do karty Explanations.
Odszukaj przełącznik Raw features / Engineered features i porównaj oba widoki.
Dlaczego warto zobaczyć oba: widok Engineered features mówi, na czym model liczy naprawdę - to jest odpowiedź techniczna. Widok Raw features przelicza ten wkład z powrotem na oryginalne kolumny danych i jest jedynym, który da się pokazać komuś spoza zespołu. Lekarzowi nic nie powie nazwa
BMI_MeanImputer; zainteresuje go, ile znaczy sam wskaźnik BMI.
Uwaga: Jeśli zamierzasz od razu przejść do kolejnego ćwiczenia, zostaw instancję obliczeniową uruchomioną. Jeśli robisz przerwę, warto zamknąć wszystkie karty JupyterLab i zatrzymać instancję obliczeniową przyciskiem Stop, aby uniknąć niepotrzebnych kosztów.
Co dalej
Tutaj wyjaśnienia powstały same, bo tak działa AutoML z jednym włączonym ustawieniem. Model napisany własnoręcznie takiej wygody nie ma - trzeba mu wyjaśnienia dorobić. W Lab 9B zrobisz to na dwa sposoby: lokalnie, biblioteką uruchamianą wprost w notatniku, oraz jako Responsible AI dashboard zbudowany dla modelu zarejestrowanego w obszarze roboczym.