
28.01.2018 | Piotr Krzeszewski – Data Scientist
Machine Learning (Uczenie Maszynowe) nie jest możliwy bez danych, które zawierają potrzebne nam informacje, pozwalają nam na zadanie pytania oraz umożliwiają znalezienie wartościowych odpowiedzi, które przekształcą się we wnioski o dużej wartości biznesowej. Jakie cechy powinny mieć dane, aby móc je efektywnie wykorzystać w procesie uczenia maszynowego? Poniżej przeanalizuję kilka cech, które charakteryzują dobre dane. W każdym przypadku postaram się uzasadnić oraz zobrazować przykładami wagę tej cechy. Jak się okaże, nawet pozornie nieznaczne niedopatrzenia mogą mieć znaczny wpływ na wynik całego projektu. Problemy z danymi mają szczególnie duży wpływ na pracę zespołu Data Science. Na koniec przedstawię metody, które pozwolą zautomatyzować obsługę danych oraz zminimalizować koszty wynikające ze złych danych.

Dane, które wykorzystujemy, powinny być kompletne na co najmniej trzech płaszczyznach głównych:
Czy wszystkie zmienne, którą mogą mieć wpływ na nasze pytanie są zawarte w zbiorze uczącym? Wyobraźmy sobie sytuację, w której duży bank chciałby znaleźć klientów gotowych zaciągnąć kredyt. Takie badanie można wykorzystać w marketingu. Niestety, ktoś uznał, że nie ma znaczenia data, a ważny jest czas jaki upłynął od ostatniego zaciągnięcia kredytu. W tej sytuacji Data Scientist miałby utrudnione zadanie, ponieważ ciężko byłoby zaobserwować m. in. grupę klientów, którzy zapożyczają się na święta. Wykorzystanie kompletnego zbioru danych pozwoliłoby na monetyzację kolejnej, cennej informacji.
Czy nasz zbiór danych obejmuje wszystkie zakresy konkretnych zmiennych? Załóżmy, że chcielibyśmy przygotować model przewidujący poziom wykorzystania anten dla operatora sieci komórkowej. Jeśli posiadalibyśmy dane tylko z jesieni oraz zimy, będzie nam ciężko poprawnie określić przewidywania stacji, które znajdują się w miejscowościach nadmorskich oraz miejscach, gdzie odbywają się znane letnie festiwale.
Czy każda obserwacja zawiera wszystkie dane, które są dostępne? Niech teraz naszym celem będzie personalizacja kampanii marketingowej dla klientów dużej sieci sklepów odzieżowych. Jeśli w przygotowanym zbiorze brakowałoby informacji o płci dla dużej części klientów, to spodziewamy się, że przygotowany model byłby zauważalnie gorszy, od modelu przygotowanego na kompletnym zestawie danych.
Zduplikowane dane zwykle stanowią poważny problem. Mogą się one pojawić w dwóch miejscach:
Dla wielu algorytmów używanych w procesach Data Science duplikaty stanowią problem. Po pierwsze wydłużają one czas działania algorytmu, ponieważ te same dane muszą być przetwarzane częściej niż raz. W niektórych przypadkach stanowi to też wyzwanie, ponieważ algorytm może mieć problem z „decyzją”, która z cech jest ważniejsza. Prowadzi to do gorszych i niestabilnych (mniej powtarzalnych) wyników. Za duplikaty uznalibyśmy przedstawienie tej samej cechy w kilku jednostkach (np. wzrost klienta w metrach i centymetrach lub wartość rachunku netto i brutto).
Rzadszym problemem są duplikaty poszczególnych obserwacji. Jeśli duplikaty będą stanowić zauważalną część danych, to mogą one przekłamać wyniki. Wyobraźmy sobie sytuację, w której szukamy informacji o młodych klientach banku, którzy zakładają lokaty. Istnieje klient mieszkający na wsi, który założył kilkadziesiąt lokat. Jeśli przeprowadzimy analizę na zbiorze z wielokrotnie zduplikowanymi danymi tego klienta, to możemy otrzymać niemający odzwierciedlenia w rzeczywistości wynik sugerujący, że klienci ze wsi zakładają wielokrotnie więcej lokat niż ich rówieśnicy z miasta.
Inną klasę problemów może spowodować używanie nieaktualnych danych. W jakich sytuacjach może mieć to negatywny wpływ na skuteczność naszego modelu?
Weźmy za przykład sieć sklepów oferujących swoim klientom karty lojalnościowe w latach 2006-2009. Zarząd chciałby przewidzieć popyt na niektóre luksusowe produkty. Mając dane za lata 2006 do połowy 2008 roku, bardzo trudne byłoby przewidzenie sprzedaży w roku 2009, kiedy to nastąpiło znaczne ograniczenie konsumpcji spowodowane kryzysem ekonomicznym. Ta sytuacja podkreśla też fakt, że Data Scientist musi znać inne czynniki, które nie są widoczne w zbiorze danych, a wpłyną na przeprowadzaną analizę.
Należy też zadbać o to, aby zbiór danych obejmował najnowsze dane, które możemy uzyskać. Niedopuszczalna byłaby sytuacja, w której Data Scientist przygotowałby model mający na celu wybranie najlepszej kampanii marketingowej dla każdego klienta i nie zostałyby mu udostępnione dane o wynikach ostatnich kampanii przrprowadzonych dla tych klientów.
Z podanych powyżej przykładów warto wyciągnąć dwa wnioski:
Dla wielu osób, które żyją w świecie Data Science, jest to najważniejsza cecha danych. Dokładność danych jest konieczna do uzyskania poprawnego wyniku. Niestety, błędy mogą się pojawiać w wielu miejscach i z różnych powodów. Kilka przykładów:
Problem z dokładnością danych może wystąpić na każdym etapie obsługi i przetwarzania danych. Niektóre z błędów będą trudne do wykrycia i praktycznie nie będzie istniała możliwość ich poprawy (w szczególności w przypadku wczytywania danych od użytkownika systemu). Obsługa danych jest podatna na błąd ludzki, dlatego warto automatyzować wszystkie procesy związane z ich dostarczaniem i przetwarzaniem.
Oprócz tego istnieją inne aspekty dbania o dokładność danych. Czy kolumny są dobrze opisane? Czy Data Scientist będzie w stanie określić znaczenie każdej zmiennej? Weźmy dla przykładu kolumnę nazwaną quarter_1_sales_sum. Choć z pozoru wydaje się ona dobrze określać dane, jakie są w niej zawarte, to cały czas pozostają zasadne pytania:
Oczywiście nie wszystkie z tych pytań będą zasadne w każdej sytuacji, a dodatkowe informacje o zbiorze danych rozwieją część wątpliwości. Jednak takie nieścisłości mogą stanowić problem, prowadzić do błędów i opóźnień. Często zdarza się, że Data Scientist musi znaleźć osoby odpowiedzialne za dane, żeby zrozumieć ich znaczenie.
Należy też wspomnieć o zwykłej niedokładności pomiarów. Jeśli prowadzimy analizę materiałową lub części metryk nie mamy dokładnie zmierzonych, to jak kształtuje się błąd dla tych zmiennych. Czy jest on stały w czasie? Czy informacje o niedokładność są precyzyjne i przekazane wraz z danymi?
Często pomijaną (i zwykle przyjętą za prawdziwą) własnością danych jest ich spójność. Podobnie jak przy poprzednich zagadnieniach złamanie tej cechy może sprowadzić problemy w różnych sytuacjach. Przygotowując się do analizy Data Science, powinniśmy znaleźć odpowiedzi na następujące pytania:
Problemy z niespójnymi danymi są znane od dawna. Można podać przykład projektu NASA, który zakończył się utratą sondy, ponieważ pomieszano jednostki imperialne z układem SI.
Ostatnią cechą, o której chcemy wspomnieć w kontekście dobrych danych jest ich ważność. Podobnie jak w poprzednich przypadkach, można ją rozpatrywać na różnych płaszczyznach.
Najpierw chciałbym się skupić na aspekcie, który nie jest bezpośrednio związany z danymi, ale kluczowy dla opłacalności całego procesu. Przed rozpoczęciem analizy danych należy zastanowić się, czy to pytanie, które zadajemy zespołowi Data Science jest rzeczywiście ważne w sensie biznesowym. Czy nie istnieją zagadnienia, które mogą wygenerować większe oszczędności lub zyski? Należy pamiętać, że zespół Data Science ma często liczne doświadczenia związane zarówno z częścią techniczną, jak i biznesową pozyskaną podczas pracy w najróżniejszych projektach. Z pewnością warto zasięgnąć opinii zespołu Data Science, który może wskazać zagadnienia, gdzie dalsze działania mogłyby okazać się najbardziej opłacalne.
Ważność należy też rozpatrywać w kontekście przygotowania i użycia danych. Czy Data Scientist otrzymał wszystkie dane, które może wykorzystać w analizie? Trzeba pamiętać, że to właśnie Data Scientists najlepiej wie, które dane warto wykorzystać, więc to właśnie oni powinni podejmować decyzję w tej kwestii. Można to zobrazować na przykładzie banku, który chciałby wybrać grono klientów, do których warto zadzwonić z nową ofertą. W takim przypadku należy rozważyć wiele różnych rodzajów danych – dane osobowe, historię kredytową, reakcję na poprzednie próby kontaktu. Jednak, co ciekawe, w jednym z podobnym projektów okazało się, że bardzo ważne jest zachowanie użytkownika na stronie internetowej. Pominięcie ważnego zbioru danych, może skazać projekt na niepowodzenie już na samym początku.
Zacząłem ten wpis od stwierdzenia, że uczenie maszynowe nie jest możliwe bez danych. Powiedziałbym jednak, że jest możliwe bez dobrych danych. Dobry Data Scientist powinien poradzić sobie z niedokładnymi, źle opisanymi danymi, które są niespójne i zawierają duplikaty. Analizę można też przeprowadzić z wykorzystaniem niekompletnych czy nieaktualnych danych (będzie to miało wpływ na otrzymany wynik).
Jednak to wszystko kosztuje czas. Często powtarzane jest stwierdzenie, że obróbka danych to około 80% procent całego procesu Data Science. Jeśli Data Scientist musi poświęcić dodatkowe godziny na wykrycie duplikatów, sprawdzenie poprawności użytych jednostek, czy dni na dokładne ustalenie znaczenia poszczególnych zmiennych, to koszt całego procesu znacznie rośnie. Co gorsze, pierwsze efekty, które pomogą ukierunkować dalszą pracę pojawią się znacznie później.
Dostarczanie złych danych do analizy ma też negatywne skutki wykraczające poza dany projekt. Data Scientist szybko straci zaufanie do danych, jeśli okaże się, że sam musi odpowiadać za jakość. Będzie niejako zmuszony do sprawdzania jakości wszystkich danych, nawet jeśli część z nich jest lepszej jakości. Po drugie może to wpływać na morale zespołu Data Science. Jeśli podczas projektu zostaje poświęcona znaczna ilość czasu na obróbkę pewnego zbioru danych i trzeba powtórzyć to przy kolejnej analizie, to zadanie staje się męczące i demotywujące.
Co w takim razie należy zrobić, żeby nasze dany były dobrej jakości?
Potrzebne są dwa elementy. Po pierwsze w organizacji muszą być wyznaczone osoby, które odpowiadają za jakość tych danych. Po drugie konieczne jest wspieranie się odpowiednimi narzędziami, żeby zapewnić poprawną obsługę danych.
W każdej organizacji dbającej o dane, należy rozważyć kilka rozwiązań:
silnik przetwarzania danych, który wesprze automatyczne operacje i zapewni aktualność danych.