Przygotowanie danych, czyli klucz do sukcesu w uczeniu maszynowym

 In Technicznie

Czy Data Scientist to czarownik, który jednym ruchem różdżki dokonuje skomplikowanych operacji na danych? To byłoby zbyt nudne, bo nie zagłębiałby się w temat danologii – a jest to płaszczyzna arcyciekawa! Nie musi rzucać zaklęciami, by sprawnie operować danymi, przecież jest w tej kwestii wirtuozem. Jak więc (bez różdżki i czarów) przygotować dane do uczenia maszynowego? Czytaj dalej, a poznasz tę tajemnicę!

Przetwarzanie danych w trzech krokach – ETL

Rozłóżmy skrót ETL na części pierwsze: Extract, Transform, Load. Jak to się ma do danych w uczeniu maszynowym? Kierując się w pierwszej kolejności zasadą Extract, należy wyciągnąć dane ze źródeł zewnętrznych. To mogą być formaty chociażby takie jak te powszechnie znane, czyli txt, PDF, html czy JPEG. Jeśli się uda, to świetnie, jednak dane zebrane z różnych źródeł nie są od razu gotowym materiałem do trenowania modeli uczenia maszynowego. Mogą być wybrakowane lub odwrotnie – pełne dodatków, których należy się pozbyć, zanim zabierzemy się za wprowadzanie ich do modelu. Czym mogą być wspomniane dodatki? Najprostszy przykład – polskie znaki.
Kolejnym krokiem jest zatem: Transform, czyli przekształcenie danych, a więc ich oczyszczanie, filtrowanie i zbieranie statystyk. W praktyce: usunięcie polskich znaków, zliczenie słów, obrócenie ich o 90 stopni. Policz przychody i szukaj nowych produktów.
Dalej: Load, czyli nic innego jak zapis danych lub załadowanie ich do bazy. Gdzie? API, print, txt, CSV. To duży skrót działań, poznajmy więc każdy krok dokładniej!

Od początku – źródła danych

Kiedy rozpoczynamy prace, najważniejsze pytanie, na które powinniśmy sobie odpowiedzieć, to: jaki materiał posiadamy i w jakim formacie? Rzeczywiste dane nie nadają się do wprowadzenia do modelu z prostego powodu: obniżyłyby jego jakość. Dlaczego? Są zbierane z różnych źródeł i mogą być niepełne – nie zawierać istotnych wartości, mogą zawierać błędy lub być niespójne. Próba trenowania algorytmów ML z tak niedostosowanym materiałem nie ma sensu, przecież chcemy uzyskiwać jak najtrafniejsze wyniki i prognozy. Nieoszlifowane dane zakłócałyby pracę maszyny. Należy więc starannie je przygotować.

Spójne dane to podstawa

Źródła są różne. Dane wyciągamy inaczej np. z API, a inaczej z bazy danych. Dążymy do uporządkowania informacji, więc na starcie: sprowadź je do jednego formatu. To może być np. CSV, json, baza danych.
Ok, ale po co? Kod dzięki temu w następnych etapach będzie uniwersalny, a my możemy zacząć prawdziwą zabawę z przygotowywaniem materiału!

Poznaj materiał, który masz

Eksploruj zebrane (i już teraz spójne) dane i prowadź, analizuj statystyki o nich. Wiedza to klucz do sprawnej pracy, dlatego dobra znajomość bazy, którą dysponujesz, pomoże Ci w późniejszym trenowaniu modelu i zrozumieniu uzyskanych wyników. Poświęć czas na wnikliwą analizę danych wejściowych. Dzięki temu będziesz w stanie wyłapać unikalne elementy w różnych kryteriach i pogrupować materiał – jak pamiętasz, dążymy do jak najdokładniejszego porządku. Ułożenie informacji to klucz do wydajności modelu i oszczędności Twojego czasu i wysiłku – a to jest przecież na wagę złota.

Gotowe do przetworzenia

Mamy zebrane dane, w ujednoliconym formacie, znamy je jak własną kieszeń – świetnie! Teraz pora wejść na kolejny level, czyli faktyczne przetwarzanie materiału. Na czym polega ten krok? Wspomnieliśmy wcześniej, że dane mogą być w jakiś sposób niedokładne – ale co właściwie można przez to rozumieć? To takie dane, które są błędne, niepełne, nieaktualne lub powielone.
To właśnie ten moment, kiedy powinniśmy zadbać o naprawienie wszelkich usterek, a zatem zabrać się za czyszczenie – na przykład z polskich znaków lub emotikonów w tekście. Może jakieś zdjęcie czy tekst są za małe? Zastanów się, czy takie dane powinieneś / powinnaś zostawić. Może warto z nich zrezygnować?
Czasami jednak potrzebne jest nie wykluczanie określonych informacji, a dodawanie ich – czasami konieczna może okazać się augumentacja danych, czyli modyfikacja prowadząca do zwiększenia ich liczby. Na tym etapie przygotowujemy również datasety, czyli zbiory danych.

Trening modelu: czas start

Wiele kroków już za nami, ale to jeszcze nie wszystko, bo prawdziwa zabawa zaczyna się właśnie teraz i kilka ważnych etapów wciąż przed nami (a my nadal nie potrzebujemy zaklęć i różdżek, by je ogarnąć!): zamieniamy dane na wektory i macierze. Pamiętasz, jak ważny jest porządek w pracy z algorytmami ML? Planowanie i organizacja to klucz, dlatego na tym etapie nie zapomnij o przygotowaniu skryptów do trenowania i skryptów do walidacji modelu. Dokładnie zaplanuj eksperymenty i opisz wnioski z nich płynące.

Do dzieła!

Data Scientist bynajmniej nie jest czarownikiem, a praca z danymi to nie czarna magia – każde zadanie ma tu jasne uzasadnienie i określony cel. To działania składające się z wielu małych elementów, które układają się w długie sekwencje zdarzeń. Droga do trenowania modelu może jest długa, ale bez odpowiedniego przygotowania nie będziemy w stanie wypracować odpowiednio reagujących algorytmów – a przecież zależy nam na dokładnych i rzetelnych wynikach, prawda?

Jeśli masz ochotę usystematyzować sobie tę ścieżkę, zobaczyć, jak ona wygląda w czytelnym schemacie, zachęcamy do zajrzenia tutaj.

Źródło grafiki w prezentacji: https://pl.wikipedia.org/wiki/Python

Recommended Posts