Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



25.10.2019

Skalowalna infrastruktura

Red Hat OpenStack Platform 15
25.10.2019

Cienki klient 2.0

Windows Virtual Desktop
25.10.2019

Nowy sprzęt Microsoftu

Rodzina Surface się powiększa
24.10.2019

Serwery ARM

Oracle stawia na Ampere Computing
24.10.2019

Wszechstronny i elegancki

Dell XPS 15
10.10.2019

CYBERSEC EXPO - największe w...

Bezpieczeństwo cyfrowe nie jest problemem dotyczącym jedynie działów IT. Obecnie stanowi...
30.09.2019

Nowości w wirtualizacji

VMware World 2019
30.09.2019

Bezpieczeństwo mobile-first

Android 10

Automatyczne uczenie maszynowe z usługą Azure ML

Data publikacji: 26-09-2019 Autor: Marcin Szeliga
Rys. 1. Podstawowa...

W trakcie powstawania poprzednich części cyklu artykułów o Azure ML firma Microsoft udostępniła testową wersję narzędzia do automatycznego budowania modeli predykcyjnych przy użyciu interfejsu graficznego. W trzeciej, ostatniej już części użyjemy tego narzędzia do przeprowadzenia eksperymentu mającego na celu zbudowanie klasyfikatora oceniającego ryzyko kredytowe.

 

Gdybyśmy mieli kryształową kulę, pożyczalibyśmy pieniądze tylko tym, którzy nam je zwrócą. Firmy finansowe mogą natomiast korzystać z analizy predykcyjnej, aby ograniczyć liczbę pożyczek oferowanych kredytobiorcom, którzy najprawdopodobniej ich nie spłacą. Naszym zadaniem będzie zbudowanie modelu, który oceni kredyt jako dobry (spłacany w terminie) lub zły, czyli taki, który nie zostanie spłacony lub należność będzie uregulowana po terminie. Ponieważ pracować będziemy z dużym zbiorem danych, liczącym około dwustu tysięcy przykładów opisanych ponad setką zmiennych, do wykonania eksperymentów będą potrzebne odpowiednie zasoby obliczeniowe.

> DANE TRENINGOWE

Użyte w eksperymencie dane pochodzą ze strony lendingclub.com/info/download-data.action. Zawierają one informacje o pożyczkach udzielonych w latach 2017–2019. Po pobraniu plików tekstowych zostały one scalone w jeden plik. Na etapie przygotowywania danych:

 

  • brakujące wartości zmiennych mths_since_last_delinq, mths_since_last_record i mths_since_last_major_derog zostały zastąpione zerami,
  • niestandardowo sformatowane daty, takie jak zmienne issue_d i earliest_cr_line zostały skonwertowane na daty w formacie rok-miesiąc-dzień,
  • zmienne zawierające wartości procentowe zapisane ze znakiem %, takie jak int_rate czy revol_util, zostały skonwertowane na liczby.


Zmienna wyjściowa loan_status przyjmuje siedem stanów, z których dwa (Current i Fully Paid) występują znacznie częściej niż pozostałe. Każdy z pięciu stanów wskazujących na problemy ze spłatą kredytu występuje na tyle rzadko, że przewidzenie poszczególnych stanów będzie co najmniej kłopotliwe, jeśli nie niemożliwe. Dlatego zastąpimy siedem stanów zmiennej wyjściowej dwoma, z których jeden będzie reprezentował dobre, a drugi złe kredyty. W ten sposób uprościmy problem do klasyfikacji binarnej.

Takie dane nadal jednak są silnie niezrównoważone, bo prawie 95% przykładów dotyczy dobrych, tj. spłacanych na czas, kredytów. Jeżeli jeden stan zmiennej wyjściowej występuje znacznie rzadziej niż drugi, dane treningowe należy zrównoważyć. Ponieważ dysponujemy wystarczającą liczbą przykładów reprezentujących klasę mniejszościową, czyli złe kredyty, to usuwamy 85% przykładów większościowych.

Przygotowanie danych ograniczamy do powyższych operacji. Nie była analizowana przydatność poszczególnych zmiennych, nie usuwano ze zbioru treningowego nieprzydatnych zmiennych (takich jak numer pożyczki), a zmienne w żaden sposób nie były przekształcane. Takie operacje przeprowadzane są automatycznie – usługa Azure ML sprawdzi, która ze standardowych metod przekształcania danych da najlepsze wyniki. Na liście sprawdzanych przekształceń znajdują się:

 

  • standaryzacja zmiennej (StandardScale­Wrapper) – czyli sprowadzenie jej do rozkładu normalnego,
  • skalowanie metodą Min-Max (MinMax­Scalar) – czyli sprowadzanie zmiennej do zakresu od 0 do 1 (lub od -1 do 1, jeśli występują wartości ujemne), zachowując oryginalny rozkład danych,
  • skalowanie IQR (RobustScalar) – które tym różni się od skalowania metodą Min-Max, że wartość najmniejsza zostaje zastąpiona pierwszym kwartylem, a zakres wartości rozstępem ćwiartkowym,
  • skalowanie absolutną wartością bezwzględną (MaxAbsScaler) – polega na zastąpieniu maksymalnych bezwzględnych wartości zmiennych jedynką,
  • analiza składowych głównych (PCA) – składowe główne wylicza się jako wektory własne macierzy kowariancji oryginalnych danych. Analiza PCA przebiega w czterech krokach:


– policzenie średniej i macierzy kowariancji zmiennych – macierzy zawierającej współczynnik wariancji wszystkich zmiennych,

– znalezienie wektorów własnych i ich własności własnych; wektor własny (eigenvector) reprezentuje kierunek w macierzy o największej wariancji; własność własna (eigenvalue) jest skalą wektora i pozwala mierzyć jego zmienność,

– wybór znalezionych wektorów własnych – wybiera się kolejne wektory o największych własnościach własnych,

– projekcja oryginalnych punktów do przestrzeni wyznaczonej przez wybrane wektory własne.

> ZASOBY OBLICZENIOWE

Chociaż eksperymenty mogą być przeprowadzane lokalnie, tj. na komputerze lub maszynie wirtualnej, na której działa notatnik Jupyter, usługa Azure ML pozwala uczyć modele na dynamicznie skalowalnych klastrach. Modele mogą być uczone na dedykowanych klastrach maszyn wirtualnych lub przy użyciu usług: HDInsight, Data Lake Analytics, Databricks lub Kubernetes. Żeby utworzyć taki klaster, należy podać typ używanych w nim maszyn wirtualnych oraz określić mechanizm jego skalowania – w najprostszym wypadku maksymalną liczbę maszyn wirtualnych klastra.

Wszystkie wchodzące w skład klastra maszyny wirtualne muszą być tego samego typu. Na przykład na potrzeby głębokiego uczenia maszynowego można utworzyć klaster maszyn wyposażonych w akceleratory GPU, takich jak maszyny typu STANDARD_NC6. Listę wszystkich dostępnych w naszej przestrzeni roboczej typów maszyn wirtualnych poznamy, wykonując instrukcje (zmienna ws musi zostać wcześniej ustawiona na przestrzeń roboczą usługi Azure ML, co zostało wyjaśnione we wcześniejszych częściach artykułu):

from azureml.core.compute import ComputeTarget, AmlCompute
print(AmlCompute.supported_vmsizes(workspace=ws))

Tworząc klaster obliczeniowy, musimy podać minimalną i maksymalną liczbę jego węzłów. Jeżeli minimalną liczbę węzłów ustalimy na 0, uruchamianie klastra będzie wolniejsze, ale nie będziemy płacili za czas jego nieaktywności. Z drugiej strony jeżeli przynajmniej jedna maszyna wirtualna będzie zawsze aktywna, na klastrze będziemy mogli przeprowadzić eksperyment profilowania danych. Możliwe jest też określenie sekund nieaktywności, czyli czasu, po upłynięciu którego dodatkowe węzły klastra zostaną automatycznie wyłączone.

Raz zdefiniowane zasoby obliczeniowe mogą być używane w wielu eksperymentach, wystarczy odwołać się w nich do nazwy zasobu. Zasobami obliczeniowymi możemy zarządzać z poziomu portalu Azure lub programowo. Utworzenie zasobu obliczeniowego na portalu Azure sprowadza się do zaznaczenia sekcji Compute, kliknięcia przycisku Add Compute i podania wymaganych parametrów. Programowe dodanie zasobu obliczeniowego jest równie łatwe. Poniższe instrukcje tworzą (jeżeli nie istniał zasób obliczeniowy o takiej nazwie) klaster zawierający do ośmiu maszyn wirtualnych typu STANDARD_D2_V2:

 

 

 

[...]

 

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. 

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"