Zestawy danych rozumiejące najlepsze praktyki

13

Jestem studentem CS w zakresie eksploracji danych. Mój przełożony powiedział mi kiedyś, że zanim uruchomię jakiś klasyfikator lub zrobię cokolwiek z zestawem danych, muszę w pełni zrozumieć dane i upewnić się, że są czyste i poprawne.

Moje pytania:

  • Jakie są najlepsze praktyki, aby zrozumieć zestaw danych (wysokowymiarowe z atrybutami liczbowymi i nominalnymi)?

  • Praktyki, aby upewnić się, że zestaw danych jest czysty?

  • Czy chcesz się upewnić, że zbiór danych nie ma złych wartości?

Jack Twain
źródło

Odpowiedzi:

8

Istnieją podstawowe rzeczy, które możesz zrobić z dowolnym zestawem danych:

  1. Sprawdź poprawność (tolerancja długości łańcucha, typ danych, maski formatowania, wymagana obecność pola itp.)
  2. Poprawność zakresu (czy to pozornie poprawne dane mieszczą się w oczekiwanych zakresach wartości)
  3. Wstępne przetwarzanie (jeśli spróbuję przeanalizować te dane, czy mogę wykonać podstawy bez popełniania błędów)
  4. Wstępne raportowanie (uruchom raport dla zestawu danych i upewnij się, że pomyślnie przejdzie test rozsądku)
  5. Definiowanie wartości null vs. pusta vs. zero vs. False dla dowolnej kolumny danych
  6. Identyfikowanie danych, które są nie na miejscu (wartości liczbowe znacznie się różnią od innych wartości w zestawie danych, wartości ciągów, które wyglądają, jakby mogły być źle napisane itp.)
  7. Eliminowanie lub poprawianie oczywiście błędnych danych

Zrozumienie danych służących do identyfikacji błędów to zupełnie inna gra w piłkę i jest bardzo ważna.

Na przykład, możesz mieć regułę, która mówi, że numer seryjny musi być obecny w danym zestawie danych, a ten numer seryjny musi być alfanumeryczny z maksymalną długością łańcucha 255 i minimalną długością łańcucha 5.

Patrząc na dane, możesz zauważyć, że jedna konkretna wartość numeru seryjnego brzmi: "PLEASE ENTER SERIAL" Jest to całkowicie poprawne, ale błędne.

To dość oczywiste, ale powiedzmy, że przetwarzasz dane giełdowe i miałeś przedział cenowy dla 1000 akcji, który był poniżej dolara. Wiele osób nie wiedziałoby, że tak niska cena akcji jest nieważna na niektórych giełdach i doskonale obowiązuje na innych. Potrzebujesz wiedzy o swoich danych, aby zrozumieć, czy to, co widzisz, jest problematyczne, czy nie.

W prawdziwym świecie nie zawsze masz luksus zrozumienia swoich danych.

Unikam problemów, wykorzystując ludzi wokół mnie. W przypadku małych zestawów danych mogę poprosić kogoś o sprawdzenie danych w całości. W przypadku dużych, bardziej odpowiednie jest pobranie zestawu losowych próbek i poproszenie kogoś o sprawdzenie poprawności danych.

Ponadto konieczne jest kwestionowanie źródła danych i tego, na ile można zaufać temu źródłu danych. Często mam wiele sprzecznych źródeł danych i tworzymy reguły określające „źródło prawdy”. Czasami jeden zestaw danych zawiera świetne dane w danym aspekcie, ale inne zestawy danych są silniejsze w innych obszarach.

Ręcznie wprowadzane dane są zwykle najbardziej sceptyczne, ale w niektórych przypadkach są silniejsze niż wszystko, co można uzyskać dzięki automatyzacji.

Steve Kallestad
źródło
5

Bardzo podoba mi się odpowiedź @Kallestad, ale chciałbym dodać meta-krok: upewnij się, że rozumiesz, w jaki sposób gromadzono dane i jakie są ograniczenia. Myślę, że bardzo często myśli się, że nie ma żadnych nieoczywistych kroków podczas gromadzenia danych, ale tak nie jest: przez większość czasu jakiś proces lub indywidualna myśl coś z danymi, a te kroki mogą i będą wpływać na kształt danych.

Dwa przykłady: Niedawno miałem badanie, w którym dane były zbierane przez różne firmy konstruktorskie na całym świecie. Nie brałem udziału w odprawie, więc było to dla mnie nieprzejrzyste. Niestety pomiary dla niektórych części Francji zakończyły się niepowodzeniem: wszyscy lubili lody, ale spodziewaliśmy się losowego rozkładu. Nie było żadnego oczywistego powodu tej jednolitości, więc zacząłem polować na błędy. Kiedy zapytałem kontrahentów, jeden źle zrozumiał odprawę i wybrał z jego bazy danych tylko miłośników lodów.

Drugi błąd był trudniejszy: podczas analizy geograficznej zauważyłem, że wiele osób miało bardzo duże wzorce ruchów, co sugerowało, że wielu z nich podróżowało z Monachium do Hamburga w ciągu kilku minut. Kiedy rozmawiałem z ppeople upstream, znaleźli subtelny błąd w swoim oprogramowaniu do agregacji danych, czego wcześniej nie zauważono.

Wnioski:

  • Nie zakładaj, że Twoje dane zostały zebrane przez doskonałe procesy / ludzi.
  • Spróbuj zrozumieć ograniczenia swoich dostawców danych.
  • Spójrz na poszczególne wzorce / wartości i spróbuj ustalić, czy są one logiczne (łatwe do przenoszenia / dane geograficzne)
Christian Sauer
źródło
4

Zazwyczaj stosuję podejście dwuetapowe

  1. obliczyć statystyki podsumowujące dla jednej zmiennej (zmienna po zmiennej), takie jak średnia, zakres, wariancja, liczba brakujących, liczność itp. dla każdej zmiennej i poszukać osobliwości (np. zakres nie jest prawdopodobny z uwagi na znaczenie zmiennej). Wykreśl histogramy dla tych nieparzystych zmiennych.

  2. podziel dane na możliwe do zarządzania podzbiory (wybierz znaczącą zmienną i podziel dane zgodnie z nią, np. wszystkie pozytywne przykłady i wszystkie negatywne) i zbadaj je wizualnie (np. za pomocą ggobi ). Szczególnie używaj narzędzi takich jak szczotkowanie i wykresy punktowe, aby zrozumieć, w jaki sposób zmienne są ze sobą powiązane.

A kiedy zaczniesz budować modele, upewnij się, aby wykreślić resztki, szukając ekstremalnych błędów, które mogą być spowodowane wartością odstającą, lub spójrz na macierz nieporozumień i upewnij się, że jest zrównoważona. Zastosuj walidację krzyżową k-fold, aby zoptymalizować swoje modele i spójrz na wariancję błędu treningu dla każdego z nich, jeśli jedno z nich działa znacznie gorzej niż inne, może zawierać wartości odstające.

damienfrancois
źródło
4

Poniżej znajdziesz kopię mojej odpowiedzi na powiązane (jednak skoncentrowane na aspekcie czyszczenia danych) pytanie tutaj na Science Science StackExchange ( /datascience//a/722/2452 ), dostarczone w całości dla wygoda czytelników. Uważam, że częściowo odpowiada również na twoje pytanie i mam nadzieję, że będzie pomocny. Chociaż odpowiedź skupia się na Rekosystemie, podobne pakiety i / lub biblioteki można znaleźć dla innych środowisk analizy danych . Ponadto, chociaż dwa cytowane artykuły na temat przygotowania danych zawierają również przykłady w języku R, dokumenty te przedstawiają ogólny obieg pracy (ramy) i najlepsze praktyki, które mają zastosowanie do każdego środowisko analizy danych.

R zawiera kilka standardowych funkcji manipulacji danych, co może być wykorzystywane do czyszczenia danych w swojej podstawowej opakowania ( gsub, transformetc.), jak również w różnych Takie pakiety, takie jak stringr , zmiany kształtu , reshape2 i plyr . Przykłady i najlepsze praktyki użycia tych pakietów i ich funkcji opisano w następującym artykule: http://vita.had.co.nz/papers/tidy-data.pdf .

Ponadto R oferuje niektóre pakiety specjalnie ukierunkowane na czyszczenie i transformację danych:

Kompleksowe i spójne podejście do czyszczenia danych w języku R, w tym przykłady i zastosowanie editrules i deducorrect pakietów, a także opis przepływu pracy ( ramy ) czyszczenia danych w języku R, przedstawiono w następującym artykule, który gorąco polecam: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .

Aleksandr Blekh
źródło
3

Ludzie tutaj podali świetne kroki, ale myślę, że pod tym linkiem znajdują się świetne informacje, co robię, gdy otrzymuję nowy zestaw danych, jak podano za pośrednictwem tweetów , podsumowuje kroki, które ludzie tweetowali, odpowiadając na wielkie pytanie @hmason „Ludzie danych: Co jest pierwszą rzeczą, którą robisz, gdy dostajesz nowy zestaw danych? ”

Mam nadzieję, że się przyda.

Islam El Hosary
źródło
1

Dodam jeszcze jedną rzecz - jeśli to możliwe, sprawdź zasadność, porównując dane z innym źródłem. Wygląda na to, że ilekroć tego nie zrobię, przypalam się :(

JenSCDC
źródło