TI/Uczenie maszynowe

Z Brain-wiki

Przykład: ocena zdolności kredytowej

noframe

Przed udzieleniem kredytu bank ocenia tzw. zdolność kredytową potencjalnego kredytobiorcy. Chodzi konkretnie o prawdopodobieństwo tego, że kredyt będzie spłacany. Tradycyjnie decyzje takie podejmowali doświadczeni urzędnicy, na podstawie:

  • danych potencjalnego kredytobiorcy — na przykład takich, jak na powyższym rysunku
  • doświadczenia opartego na faktycznej spłacalności udzielanych wcześniej kredytów.

Jeśli "doświadczenie" potraktujemy jako wiedzę nabytą przez konkretnego urzędnika, decyzja będzie mniej lub bardziej subiektywna — na przykład lepsze wrażenie zrobi być może osoba w drogim garniturze, co niekoniecznie musi wpływać na faktyczną zdolność kredytową. Dlatego w szukamy coraz bardziej obiektywnych metod, opartych na konkretnych danych. Bank mógłby spisać doświadczenia wszystkich urzędników w postaci reguł typu "osoba bez stałego zatrudnienia, pomimo wysokiego stanu gotówki na kontach jest potencjalnym kłopotem, kredytu nie udzielamy".

Żeby proces był całkowicie obiektywny, możemy go zalgorytmizować, czyli przedstawić w formie algorytmu. Po przypisaniu wartości liczbowych parametrom A, B, C, D, E i F, mógłby on wyglądać na przykład tak:

  1. oblicz [math]x = w_1 A +w_2 B + w_3 C - w_4 D - w_5 E - w_6 F[/math]
  2. jeśli [math]x \geq 0[/math], przyznaj kredyt, koniec
  3. jeśli [math]x\lt 0[/math], odmów kredytu, koniec

Skąd wziąć wartości współczynników (wag) [math] w_i[/math], określających względne znaczenie poszczególnych parametrów? Oczywiście z doświadczenia. Ale jak? Tu z pomocą przychodzi statystyka.

Uczenie maszynowe

W najprostzym sformułowaniu uczenie maszynowe to zbiór metod statystycznych, które na podstawie danych uczących (doświadczenie) tworzą algorytmy pozwalające klasyfikować dane, których w zbiorze uczącym nie było. Można je próbować dobrać na podstawie posiadanych danych tak, żeby dla osób, które wcześniej nie spłacały kredytów, równanie dawało wartości ujemne, a dla spłacających regularnie — dodatnie. Nawet w tak drastycznie uproszczonym przykładzie mamy sześć zmiennych A--D — uprośćmy go jeszcze bardziej, do dwóch zmiennych "obciążenia" i "majątek". Wtedy dane każdej osoby, której bank kiedyś udzielił kredytu, można przedstawić w dwóch wymiarach, czyli na płaszczyźnie. Dane osób, które spłacały, oznaczymy zielonym, a pozostałych — czerwonym kolorem:

LDA bank2.png

Pozostaje wykreślić linię, rozdzielającą te dwie grupy. Nowy kandydat na kredytobiorcę, po wypełnieniu informacji, staje się punktem w tej przestrzeni. Jeśli punkt znajdzie się pod kreską, bank udzieli kredytu.

Jak widać na przykład na powyższym rysunku, zwykle nie da się poprowadzić linię tak, żeby wszyscy dotychczasowi(!) klienci znaleźli się "po właściwej stronie". Oczywiście można by do danych uczących dopasować łamaną lub wielomian, który rozdzielałby znane przypadki w sposób idealny.

LDA bank.003.png

...ale doskonałe rozdzielenie przypadków w zbiorze uczącym nie musi oznaczać, że nowi klienci będą klasyfikowani prawidłowo — ta cecha określana jest zdolnością do generalizacji (wiedzy, nabytej na podstawie zbioru uczącego, na nowe przypadki, których w tym zbiorze nie było). Jej optymalizacja jest głównym celem tej części statystyki. Z niektórymi technikami zapoznamy się w przyszłym roku na wykładzie z Wnioskowania Statystycznego.

"Idealna" sztuczna sieć neuronowa

LDA bank2 ANN.png

Powyższy rysunek ilustruje działanie hipotetycznej sieci neuronowej, która mogłaby realizować algorytm oceny zdolności kredytowej. W tym przypadku "w warstwie ukrytej" wyliczane są, na podstawie danych wejściowych, dwa pośrednie parametry, określające możliwości i wolę spłaty, wagi połączeń zaznaczone przy każdej strzałce odpowiadają wagom [math]w_i[/math] z początku rodziału. Dla takiej sieci możliwość spłaty byłaby wyliczana jako M = 0,9 * C + 0,75 * A + 0,2 * B - 0,15 * E - 0,13 * F.

W praktyce wynik sumowania poddajemy jeszcze działaniu wybranej (nieliniowej) funkcji f, czyli wynik, który będzie się propagował do dalszych wartsw, to f(M). Dzięki wprowadzeniu nieliniowości w funkcji f możemy uzyskać dowolną — niekoniecznie liniową — funkcję rozdzielającą grupy.

Zasadniczy problem polega na znalezieniu wag połączeń w takiej sieci — oczywiście na podstawie danych uczących, czyli historii poprzednich dłużników banku. Dla konkretnego przypadku danych dłużnika, który nie spłacał długu, możemy połączenia dopasować tak, żeby "neuron" wyjściowy odpowiadający decyzji "spłaci" miał wartość 1, a "nie spłaci" — 0. Ale jeśli przez taką sięć przepuścimy dane innego, równie solidnego, kredytobiorcy, może się okazać, że dostaniemy wynik odwrotny. Dlatego również w tej sytuacji nie oczekujemy odpowiedzi idelnie dokładnych, i po prezentacji każdego fragmentu danych uczących poprawiamy wagi połączeń tylko trochę, ale w kierunku poprawnego wyniku. Wagi modyfikujemy za pomocą algorytmu propagacji wstecznej, a siła tych modyfikacji po każdej prezentacji, ich liczba, kolejność itp. są częścią wiedzy o uczeniu sieci neuronowych — optymalne strategie i parametry mogą być w każdym wypadku inne, gdyż zależą od danych wejściowych. Do tematu wrócimy w osobnym rozdziale o sztucznych sieciach neuronowych.

LDA bank DNN.png