Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.
Data publikacji: 04-07-2019 | Autor: | Marcin Szeliga |
Zbudowanie modelu uczenia maszynowego wymaga czasu. Samo przygotowanie danych treningowych zajmuje od kilku dni do wielu tygodni. Do oceny i poprawy jakości danych używa się specjalistycznych narzędzi, ale nadal równie ważna jest wiedza ekspercka. Natomiast znalezienie optymalnej architektury modelu uczenia maszynowego daje się już zautomatyzować.
Architekturę modelu określają jego hiperparametry, stąd szukanie optymalnego modelu nazywa się optymalizacją hiperparametrów. Określają one budowę modelu oraz sposób jego uczenia, np. liczbę drzew decyzyjnych, które zostaną utworzone, procent losowo wybranych zmiennych, które zostaną uwzględnione przy tworzeniu węzłów drzewa decyzyjnego, czy szybkość, z jaką model będzie się uczył. Znalezienie optymalnej w danym wypadku kombinacji wartości hiperparametrów modelu jest trudnym zadaniem. Dowiedziono matematycznie, że nie istnieje uniwersalnie najlepsza kombinacja wartości hiperparametrów, czyli model, który doskonale sprawdził się w jednym wypadku, nauczony na innych danych może okazać się bezwartościowy. Dlatego optymalizacja hiperparametrów polega na eksperymentowaniu z ich różnymi wartościami.
> OPTYMALIZACJA HIPERPARAMETRÓW
Najprostszą metodą optymalizacji hiperparametrów jest metoda przeszukiwania siatki (grid search). Polega ona na wygenerowaniu siatki równo rozłożonych możliwych wartości hiperparametrów, a następnie nauczeniu wielu modeli kandydujących na tych samych danych, ale z różnymi wartościami hiperparametrów, ich ocenie i wyborze najlepszego modelu. Jeżeli weźmiemy pod uwagę, że modele mają od kilku do kilkunastu hiperparametrów, a niektóre z tych parametrów mogą przyjąć dziesiątki czy nawet setki różnych wartości, zrozumiemy, czemu metoda ta w praktyce jest rzadko stosowana. Mało kto może sobie pozwolić na uczenie dziesiątków, jeśli nie setek czy tysięcy modeli kandydujących, z których wiele będzie miało bardzo podobną jakość.
Znacznie popularniejsza jest metoda losowego przeszukiwania (random search). Polega ona na sprawdzeniu losowo wybranych kombinacji wartości hiperparametrów. Praktyka pokazuje, że sprawdzenie 5% możliwych kombinacji daje wyniki zbliżone do przeszukania pełnej siatki.
Żadna z tych metod nie pozwala jednak wybrać najlepszego w danym wypadku algorytmu uczenia maszynowego. Rozwiązaniem tego problemu są usługi automatycznego uczenia maszynowego, które upraszczają wszystkie etapy projektu:
Ostatni punkt jest szczególnie ciekawy.
> METODY WYJAŚNIANIA PREDYKCJI
Trafność i wiarygodność predykcji są ważne, ale nie powinny być jedynymi kryteriami oceny modeli uczenia maszynowego. Ostatnimi czasy coraz większą wagę przywiązuje się do interpretowalności ich predykcji. Po pierwsze dlatego, że traktowanie modeli uczenia maszynowego jak czarnych skrzynek lub magicznych wyroczni ogranicza zaufanie użytkowników do ich wyroków. Po drugie, bo wraz z coraz powszechniejszym użyciem modeli uczenia maszynowego rośnie liczba zastosowań, w których wyjaśnienie decyzji jest równie ważne co sama decyzja. Na przykład bank ma obowiązek podać przyczynę odmowy udzielenia kredytu.
Znalezienie uniwersalnej, dającej się zastosować dla dowolnego modelu uczenia maszynowego metody wyjaśniania predykcji jest przedmiotem intensywnych, trwających od ponad 20 lat, badań. Ich efektem jest opracowanie dwóch głównych metod wyjaśniania:
Inne metody wykorzystują teorię gier do znalezienia optymalnych wartości poszczególnych zmiennych. Usługa Azure ML do wyjaśnienia predykcji modelu używa metody SHAP.
> USŁUGA AZURE ML
Skorzystanie z usługi wymaga zakupu subskrypcji Azure. Osoby, które nie posiadają takiej subskrypcji, mają możliwość wyboru bezpłatnej oferty – korzystania z usług za darmo przez 12 miesięcy (szczegóły dostępne pod adresem azure.microsoft.com/pl-pl/free). Po zalogowaniu się do portalu Azure należy utworzyć nową przestrzeń roboczą usługi Azure ML, czyli dodać zasób Machine Learning service workspace. Tworząc przestrzeń roboczą, będziemy musieli podać nazwę, wskazać subskrypcję Azure, grupę zasobów i lokalizację, w której zostanie ona utworzona. Po chwili od kliknięcia przycisku Create przestrzeń będzie dostępna oraz będzie obejmować pięć zasobów:
Nazwy wszystkich utworzonych zasobów znajdziemy w sekcji Overview przestrzeni roboczej ML.
Eksperymenty tworzone są w języku Python, za pomocą graficznego interfejsu przypominającego Azure ML Studio, albo automatycznie. Dwie ostatnie opcje dostępne są w wersjach demonstracyjnych. Usługa Azure ML jest w 100% kompatybilna z popularnymi bibliotekami, takimi jak PyTorch, TensorFlow i scikit-learn, oraz edytorami tego języka, takimi jak Jupyter notebooks. W tej części artykułu przykładowy eksperyment będziemy realizować właśnie w notatniku Jupyter.
> NOTATNIKI JUPYTER
Notatniki Jupyter można uruchomić w usłudze Azure Notebooks lub na własnym serwerze. Jeżeli planujemy użyć własnego serwera, wcześniej należy zainstalować na nim Azure ML SDK. Usługa Azure Notebooks zawiera tę bibliotekę. Azure
ML SDK wymaga wersji 3.6 języka Python.
Notatniki składają się z komórek. Klikając myszką w notatniku, uaktywnimy jedną z jego komórek. Jeżeli aktywną komórką jest komórka kodu, możemy wykonać zawarte w niej instrukcje za pomocą kombinacji klawiszy Shift+Enter lub Ctrl+Enter. Możemy też kliknąć znajdującą się w nagłówku notatnika ikonę Run. Wykonywana w danym momencie komórka oznaczona jest symbolem *. Po wykonaniu symbol gwiazdki zamieniany jest na numer. Dwukrotne kliknięcie komórki lewym przyciskiem myszy pozwala ją edytować. Dodawanie nowej komórki zaczynamy, klikając znajdującą się w nagłówku ikonę +.
[...]
Pracownik naukowy Wyższej Szkoły Bankowej w Poznaniu Wydział Zamiejscowy w Chorzowie; jest autorem książek poświęconych analizie danych i posiada tytuł Microsoft Most Valuable Professional.
Artykuł pochodzi z miesięcznika: IT Professional
Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.
Transmisje online zapewnia: StreamOnline