Podstawy

Dzisiaj prawie każda nasza czynność zostawia po sobie mnóstwo danych. Dzwonisz do babci, kupujesz świeże rogaliki, hejtuesz celebrytkę, jedziesz samochodem korzystajac z gps-a. Wszędzie zostawiamy po sobie dane. I ktoś te dane zbiera i zapisuje. Z dużą dozą prawdopodobieństwa nawet przetwarza. Przeszukuje, filtruje i grupuje. A jeśli jest "sprytny" to może nawet za pomocą tych danych spróbować przewidzieć przyszłość (nawet skuteczniej niż za pomocą metody z obrazka powyżej).
Co rozumiem przez przewidywanie przyszłości? Nie chodzi tutaj o to, jakie będą numery lotto za rok. Raczej o to czy na podstawie przeszłych "doświadczeń" zapisanych w danych możemy przewidzieć podobne rezultaty dla nowych danych. Przykładowo, którzy klienci banku mieli problemy ze spłaceniem kredytu, którzy pozytywnie odpowiedzieli na oferty reklamowe lub którzy zamknęli u nas konto (bo bombardowaliśmy ich reklamami ;-> ).
Odpowiedzi na te pytania niekoniecznie muszą wprost wynikać z danych. Jednak jest coś, co pomoże nam gdy tak nie jest. Jest to modelowanie predykcyjne.

Dane źródłowe

Aby cały proces zadziałał potrzebujemy swego rodzaju paliwa. A są nim dane źródłowe (historyczne). To gdzie je składujemy i skąd mamy nie jest już teraz tak istotne. Jednak podobnie jak w przypadku baz danych nasze dane źródłowe są często przedstawiane w formie tabel, gdzie kolumny oraz wiersze mają swoją interpretację.

dane modelu predykcyjnego

Powyżej mamy przykładową reprezentacje bardzo prostych i skróconych danych jakie możemy użyć do budowy modelu. Każdy z wierszy tej tabeli to jeden historyczny obiekt na temat którego zebraliśmy pewne dane. Z kolei poszczególne kolumny reprezentują właściwości każdego z naszych obiektów. Właściwości te zwane są też cechami, atrybutami lub zmiennymi. Czasem uda nam się dla wszystkich obiektów posiadać właściwość będącą identyfikatorem. Dodatkowo niektóre z tych zmiennych zależą od innych. Są to (znane z poprzedniego wpisu) zmienne zależne, zwane również objaśnianymi. Tutaj oznaczone jako wynik. Oczywiście pozostłe właściwoście są wtedy zmiennymi niezależnymi (objaśniającymi).
Dla powyższej tabelki wszystko wydaje się prostę. Na pewno możemy szybko znaleźć zależności między zmiennymi i zbudować model, który opisuje te zależności. Niestety przy większej ilości wierszy i kolumn (mówiąc obrazowo) nie jest tak łatwo. Musimy wtedy przejść przez nieco dłuższy proces. Jego kolejne kroki opisuje poniżej.

Wstępne przetwarzanie

Dane jakimi dysponujemy na początku procesu raczej nie będą od razu użyteczne dla nas. Będą niczym nieumyte pomidroki lub nieobrane pyrki. Musimy wstępnie je przetworzyć (dane nie warzywa ;-> ). Co z nimi robimy? Oto kilka z czynności jakie są stosowane:

  • segregacja - ustalenie, które cechy są sensowne i coś wnoszą dla naszego procesu
  • przeskalowanie - zmiana wartości cech np. aby mieściły się w zakresie od 0 do 1 (zamiast całej skali liczb rzeczywistych)
  • redukacja wymiarowości - gdy pewne cechy są skorelowane ze sobą i przez to nadmiarowe (wspominałem o niej poprzednio)
  • podział danych - dzielimy je na dwa zbiory: zbiór uczący (którym uczymy i optymalizujemy nasz model) oraz testowy, którym potem go ... oceniamy. Podział jest losowy

Trening

Gdy wstępnie przetworzyliśmy dane przechodzimy do etapu trenowania zwanego też uczeniem. Gdy przystępujemy do tego etapu nie wiemy jeszcze jaki model/algorytm jest najlepszy do naszego zadania. Głównym zadaniem tego etapu jest właśnie odpowiedź na to pytanie. Robimy to w takich podetapach. Są to:

  • podział danych - tutaj dzielimy zbiór uczący (otrzymany w poprzenim etapie) na dwa podzbiory. Będą to: podzbiór uczący oraz podzbiór walidujący
  • opracowanie metryki wydajności - czyli określenie kiedy i który model jest lepszy od innych
  • dobór modelu - ponieważ możliwiych jest kilka różnych typów algorytmów, uczymy je wszystkie za pomocą podzbioru uczącego
  • sprawdzanie modeli - porównanie modeli za pomocą metryk oraz danych walidujących w celu wybrania najlepszego
  • parametryzacja modeli - dobór dodatkowych parametrów uczenia maszynowego tak aby nasz algorytm (algorytmy) działał najsprawniej
Oczywiście różne parametry modeli mogą powodować, że "zwycięzcą" jest inny model.

Ocena modelu

Nadszedł wreszcie moment, gdy możemy użyć danych testowych odstawionych "na bok" w czasie przetwarzania wstępnego. Posłużą one nam do oceny modelu. Dokładniej za ich pomocą możemy teraz wyznaczyć błąd generalizacji. Mówiąc bardziej po ludzku to czy nasz algorym nauczył się "na pamięć" (z przykładów uczących) czy też "znalazł" jakiś wzorzec i dobrze radzi sobie również z danymi wcześniej nieznanymi (zbiorem testowym). Jeśli coś poszło nie tak możemy mieć do czynienia z tzw. przeuczeniem lub przetrenowaniem. Może to być przykładowo spowodowane zbyt małą liczbą przykładów uczących.

Prognozowanie

Gdy wszystko poszło dobrze możemy wyciągnąć karty i wróżyć. Żarcik ;-)>
Wszystko co teraz pozostaje to użycie nowych danych, które do tej pory nie były znane lub były nieoznaczone (nie znaliśmy dla nich wyniku). Nasz model może teraz dla nich wyznaczyć odpowiedź. Może ją niejako przewidzieć. Np to, że będzie burza, gdy wcześniej dla podobnych warunków wstęnych również ona była.


To by było na tyle o modelowaniu predykcyjnym. Także trzeci wpis teoretyczny. Następny wpis będzie już bardziej "mięsny", nie tylko dlatego, że dotyczyć będzie ciała człowieka. Do następnego :-)