Jakie umiejętności są wymagane do wykonywania analiz statystycznych na dużą skalę?

107

Wiele prac statystycznych wymaga doświadczenia z danymi na dużą skalę. Jakie są umiejętności statystyczne i obliczeniowe, które byłyby potrzebne do pracy z dużymi zestawami danych. Na przykład, co powiesz na budowanie modeli regresji z zestawem danych z 10 milionami próbek?

pytanie bitowe
źródło
1
Kilka dobrych wskazówek tutaj .
radek
Byłoby pomocne, gdybyś podsumował te, które uważasz za najlepsze.
rolando2
Interesująca jest również powiązana dyskusja na temat testowania hipotez z dużymi zestawami danych: stats.stackexchange.com/q/2516/919
whuber

Odpowiedzi:

115

Dobre odpowiedzi już się pojawiły. Dlatego podzielę się przemyśleniami opartymi na osobistym doświadczeniu: w razie potrzeby dostosuj odpowiednie do swojej sytuacji.

Dla tła i kontekstu- abyś mógł uwzględnić wszelkie osobiste uprzedzenia, które mogłyby wkraść się w tę wiadomość - większość mojej pracy polegała na pomaganiu ludziom w podejmowaniu ważnych decyzji na podstawie stosunkowo niewielkich zbiorów danych. Są małe, ponieważ gromadzenie danych może być kosztowne (na przykład 10 000 dolarów za pierwszą próbkę studni monitorującej wody gruntowe lub kilka tysięcy dolarów za analizy nietypowych chemikaliów). Przywykłem do uzyskiwania jak największej ilości dostępnych danych, ich eksploracji na śmierć i wymyślania nowych metod ich analizy w razie potrzeby. Jednak w ciągu ostatnich kilku lat byłem zaangażowany w pracę nad dość dużymi bazami danych, takimi jak jedna z danych społeczno-ekonomicznych i inżynieryjnych obejmujących całe USA na poziomie bloku spisu powszechnego (8,5 miliona rekordów,

Przy bardzo dużych zestawach danych całe podejście i zmiana sposobu myślenia . Obecnie jest za dużo danych do analizy. Niektóre z bezpośrednich (i retrospektywnych) oczywistych implikacji (z naciskiem na modelowanie regresji) obejmują

  • Każda analiza, o której myślisz, może zająć dużo czasu i obliczeń. Konieczne będzie opracowanie metod podpróbkowania i pracy na częściowych zestawach danych, aby można było zaplanować przepływ pracy podczas obliczania całego zestawu danych. (Podpróbkowanie może być skomplikowane, ponieważ potrzebujesz reprezentatywnego podzbioru danych, który jest tak bogaty jak cały zestaw danych. I nie zapomnij o krzyżowej weryfikacji modeli z przetrzymywanymi danymi).

    • Z tego powodu poświęcisz więcej czasu na dokumentowanie tego, co robisz i pisanie skryptów wszystkiego (aby można je było powtórzyć).

    • Jak zauważył @dsimcha, przydatne są dobre umiejętności programowania . W rzeczywistości nie potrzebujesz dużo doświadczenia w środowisku programistycznym, ale potrzebujesz chęci do programowania, umiejętności rozpoznania, kiedy programowanie pomoże (na każdym etapie, naprawdę) i dobrego zrozumienia podstawowych elementów informatyka, na przykład projektowanie odpowiednich struktur danych i analiza złożoności obliczeniowej algorytmów. Jest to przydatne, aby wiedzieć z góry, czy kod, który zamierzasz napisać, będzie skalowany do pełnego zestawu danych.

    • Niektóre zestawy danych są duże, ponieważ mają wiele zmiennych (tysiące lub dziesiątki tysięcy, wszystkie inne). Spodziewaj się, że poświęcisz dużo czasu na podsumowanie i zrozumienie danych . Słownika lub słownik danych i inne formy metadanych , staje się niezbędne.

  • Większość czasu spędzasz na przenoszeniu danych i ich formatowaniu. Potrzebujesz umiejętności obsługi dużych baz danych i umiejętności podsumowywania i tworzenia wykresów dużych ilości danych. ( Tufte's Small Multiple wychodzi na pierwszy plan.)

  • Niektóre z twoich ulubionych narzędzi programowych zawiodą. Zapomnij na przykład o arkuszach kalkulacyjnych. Wiele oprogramowania open source i akademickiego po prostu nie będzie w stanie poradzić sobie z dużymi zbiorami danych: przetwarzanie potrwa wieczność lub oprogramowanie ulegnie awarii. Spodziewaj się tego i upewnij się, że masz wiele sposobów na wykonanie kluczowych zadań.

  • Prawie każdy przeprowadzony test statystyczny będzie tak potężny, że niemal na pewno zidentyfikuje „znaczący” efekt. Musisz skupić się bardziej na znaczeniu statystycznym , takim jak wielkość efektu, niż na znaczeniu.

  • Podobnie wybór modelu jest kłopotliwy, ponieważ prawie każda zmienna i każda interakcja, którą możesz wziąć pod uwagę, będzie wyglądać na znaczącą. Musisz bardziej skoncentrować się na znaczeniu zmiennych, które wybierzesz do analizy.

  • Będzie więcej niż wystarczająca ilość informacji, aby zidentyfikować odpowiednie nieliniowe transformacje zmiennych. Wiedz jak to zrobić.

  • Będziesz miał wystarczającą ilość danych, aby wykryć relacje nieliniowe, zmiany trendów, niestacjonarność, heteroscedastyczność itp.

  • Nigdy nie skończysz . Jest tyle danych, że możesz je studiować na zawsze. Dlatego ważne jest, aby od samego początku ustalić swoje cele analityczne i stale o nich pamiętać.

Skończę z krótką anegdotę , która ilustruje jedną nieoczekiwaną różnicę między modelowanie regresji z dużego zestawu danych w porównaniu do mniejszego. Pod koniec tego projektu z danymi Spisu, opracowany przeze mnie model regresji musiał zostać zaimplementowany w systemie komputerowym klienta, co oznaczało pisanie kodu SQL w relacyjnej bazie danych. Jest to rutynowy krok, ale kod wygenerowany przez programistów baz danych obejmował tysiące wierszy SQL. To prawie uniemożliwiło zagwarantowanie, że nie zawiera błędów - chociaż mogliśmy wykryć błędy (dawało różne wyniki w danych testowych), znalezienie ich było inną sprawą. (Wystarczy jeden błąd typograficzny we współczynniku ...) Częścią rozwiązania było napisanie programu, który generował polecenia SQL bezpośrednio z oszacowań modelu. Zapewniło to, że to, co wyszło z pakietu statystyk, było dokładnie tym, co trafiło do RDBMS. Jako bonus, kilka godzin spędzonych na pisaniu tego skryptu zastąpiło prawdopodobnie kilka tygodni kodowania i testowania SQL. Jest to niewielka część tego, co oznacza dla statystyki możliwość komunikowania swoich wyników.

Whuber
źródło
3
+1, podzielę się tą cudowną odpowiedzią (i wydrukuję ją, aby mieć w pobliżu ^ _ ^)
Dmitrij Celov,
1
+1, to z pewnością powtórzę moim uczniom wiele lat.
mpiktas
2
anegdota przypomniała mi czas, kiedy musiałem przenieść model z Eviews do R. Oryginalny model powstał w Eviews, wynik był około 20 równań. Musiałem przedstawić wyniki na stronie z interaktywnym interfejsem. Ponieważ model był w toku, napisałem kod tłumaczący dane wyjściowe Eviews na kod R z tym samym celem, że dokładny model został użyty zarówno w Eviews, jak i w R. R działał bardzo dobrze, nawet skończyłem na różnicowaniu przetłumaczonego kodu do obliczania gradientu analitycznego.
mpiktas
2
Jest ogólnie uważane za bardziej konstruktywne (jeśli nie zwykła uprzejmość), gdy komentarze są uzasadnione w komentarzu, chyba że istnieją oczywiste powody, aby tego nie robić (np. Niejasna odpowiedź w jednym wierszu, brak odpowiedzi na żądanie aktualizacji błędnej odpowiedzi, obraźliwe zachowanie). Przyczynia się to do poprawy jakości odpowiedzi, gdy przedstawione zostaną prawidłowe argumenty. W tym konkretnym przypadku nie widzę powodu, aby głosować negatywnie!
chl
2
+1 do automatyzacji zmniejsza błąd: „ napisz program, który wygenerował polecenia SQL bezpośrednio z oszacowań modelu ”.
Orion
18

Twoje pytanie powinno dać kilka dobrych odpowiedzi. Oto kilka punktów wyjścia.

  1. Umiejętność pracy z kompromisami między precyzją a wymaganiami dotyczącymi mocy obliczeniowej.

  2. Obiekt z technikami eksploracji danych, które można wykorzystać jako wstępne narzędzia przesiewowe przed przeprowadzeniem regresji. Np. Sieci chaid, cart lub neuronowe.

  3. Dogłębne zrozumienie związku między znaczeniem statystycznym a znaczeniem praktycznym. Szeroki repertuar metod selekcji zmiennych.

  4. Instynkt do weryfikacji krzyżowej.

rolando2
źródło
Chciałbym również połączyć # 4 i # 1: ważne jest, aby wiedzieć, jak krzyżować sprawdzanie poprawności bez przeciążania zasobów komputerowych.
Zach
1
Czy możesz wyjaśnić swój drugi punkt? Jak wykorzystałbyś CHAID / CART / sieci neuronowe jako narzędzia przesiewowe do regresji?
raegtin
2
@raegtin - Najbardziej znam CHAID, który wymyśla tak zwane „interakcje”, które często są głównymi efektami udającymi interakcje, ponieważ jest to jedyny sposób, w jaki procedura je „wpuści”. (W CHAID może być zidentyfikowany tylko 1 główny efekt, więc wszystkie inne główne efekty są wciśnięte w komórki „interakcji”). Jednak CHAID ma tę zaletę, że jest w stanie sprawdzić wiele wielu interakcji. Po zidentyfikowaniu kilku obiecujących można je włączyć do regresji lub anowy ze wszystkimi ich składnikami niższego rzędu, i można przetestować, które z nich są naprawdę przydatne.
rolando2
1
+1 Intryguje mnie możliwość wykorzystania eksploracji danych (szczególnie CHAID) do badania potencjalnych efektów. Interesujące byłoby zobaczyć aplikację, na przykład ze sztucznym (i małym) zestawem
whuber
12

Dobre umiejętności programowania są koniecznością. Musisz być w stanie napisać skuteczny kod, który poradzi sobie z ogromną ilością danych bez dławienia się, i być może być w stanie zrównoleglić ten kod, aby uruchomić go w rozsądnym czasie.

dsimcha
źródło
4
Kodowanie jest koniecznością, ale ważna jest również umiejętność pracy z systemem operacyjnym. Musisz zrozumieć, że czasami dzielenie pracy wiąże się z dodatkowymi kosztami, ponieważ dostęp do dysków i sieci wiąże się z dodatkowymi kosztami. Musisz zrozumieć różne sposoby blokowania, oczekiwania i komunikacji międzyprocesowej. Widziałem świetny kod naukowy, który spędzałby większość czasu na oczekiwaniu na zakończenie niektórych wywołań systemowych. Zaprzyjaźnij się z administratorem swojego systemu, możesz uzyskać wiele pomocy w optymalizacji swoich systemów, przynosząc im kawę;)
Marcin
2
Czasami lepiej jest napisać „Nieefektywny kod”, jeśli pomoże to w tworzeniu struktur danych, które przewidują dodatkowe pytania, które prawdopodobnie zostaną zadane.
Ralph Winters
1
@Ralph: +1, absolutnie się zgadzam i nauczyłem się tego na własnej skórze. Nie chciałem powiedzieć, że zawsze powinieneś pisać skuteczny kod, bez względu na kompromisy, tylko powinieneś wiedzieć, jak to zrobić.
dsimcha
5

Dodałbym również, że dane na dużą skalę również wprowadzają problem potencjalnej „złej jakości danych”. Nie tylko brakujące dane, ale błędy danych i niespójne definicje wprowadzone przez każdy element systemu, który kiedykolwiek dotknął danych. Tak więc, oprócz umiejętności statystycznych, musisz stać się ekspertem w dziedzinie czyszczenia danych, chyba że zrobi to za Ciebie ktoś inny.

-Ralph Winters

Ralph Winters
źródło
3
To są dobre punkty. Wartości odstające i inne problemy z danymi nękają każdy zestaw danych, bez względu na to, jak duży lub mały. Z mojego doświadczenia wynika, że ​​w rzeczywistości są one łatwiejsze do zidentyfikowania i obsługi w dużych zestawach danych, ponieważ masz moc odróżnienia ich od masy danych, a zwłaszcza jeśli używasz solidnych metod, mniej prawdopodobne jest, że wpłyną na wyniki. BTW, zawsze przeprowadzasz „czyszczenie danych” podczas każdej analizy. To nie jest coś, co można segregować i skierować do specjalisty, który zajmie się tym raz na zawsze. Wartość odstająca jest wartością odstającą tylko w kontekście określonego modelu.
whuber
2
Sprawdź Google dopracuj jako półautomatyczne narzędzie do czyszczenia danych, które pomaga uniknąć pułapek ręcznej edycji.
mindless.panda
5
  1. Opracowanie problemu w ramach mapy zmniejszania .
  2. Inżynieria strona problemu, np., Jak bardzo boli użyć mniejszą precyzję parametrów lub wybór modelu opiera się nie tylko na uogólnienia, ale koszty magazynowania i obliczeń, jak również.
wysoka przepustowość
źródło
Czy możesz podać odpowiedni link do wspomnianej struktury mapowania?
bezmyślny.
@ sugar.panda, dodano link wiki!
highBandWidth
+1 za wzmiankę o niższej precyzji, choć daleko mu do bycia inżynierią. Im niższa precyzja, tym bardziej prawdopodobne jest, że podejmiemy złe decyzje. Jest to ściśle związane z błędem typu I / II i obejmuje kilka dyscyplin, ale dotyczy to głównie statystyki, nauk decyzyjnych i ekonomii. Funkcje użytkowe należy przemyśleć z wyprzedzeniem i częścią procesu myślowego, aby znaleźć odpowiednią metodologię.
Thomas Speidel