Najlepsze sposoby na agregację i analizę danych

13

Niedawno zacząłem uczyć się uczenia maszynowego i analizy danych. Uderzam w ścianę z powodu potrzeby tworzenia i wyszukiwania dużych zestawów danych. Chciałbym pobrać dane, które gromadzę w życiu zawodowym i osobistym, i przeanalizować je, ale nie jestem pewien, jak najlepiej wykonać następujące czynności:

  1. Jak powinienem przechowywać te dane? Przewyższać? SQL? ??

  2. W jaki sposób początkujący może zacząć analizować te dane? Jestem profesjonalnym programistą komputerowym, więc złożoność nie polega na pisaniu programów, ale jest mniej lub bardziej specyficzna dla dziedziny analizy danych.

EDYCJA: Przepraszam za moją niejasność, kiedy zaczynasz się uczyć o czymś, trudno jest wiedzieć, czego nie wiesz, wiesz? ;)

Powiedziawszy to, moim celem jest zastosowanie tego do dwóch głównych tematów:

  1. Wskaźniki zespołu oprogramowania (przemyśl prędkość Agile, oszacuj ryzyko, prawdopodobieństwo udanej iteracji, biorąc pod uwagę liczbę punktów historii)

  2. Uczenie maszynowe (np. W danym zestawie modułów wystąpiły wyjątki systemowe), jakie jest prawdopodobieństwo, że moduł zgłosi wyjątek w tej dziedzinie, ile to będzie kosztowało, co dane mogą mi powiedzieć o kluczowych modułach do ulepszenia, które uzyskają mi najlepszy huk dla mojej złotówki, przewiduj, z jakiej części systemu użytkownik będzie chciał następnie skorzystać, aby rozpocząć ładowanie danych itp.).

Justin Bozonier
źródło
Wydaje mi się to bardzo niejasne. Jakie dane i jakie analizy? Powinno to być także wiki społeczności, jeśli jest subiektywne.
Shane

Odpowiedzi:

19

Jeśli masz duże zestawy danych - takie, które powodują, że Excel lub Notatnik ładują się powoli, to baza danych jest dobrym sposobem. Postgres to oprogramowanie typu open source i bardzo dobrze wykonane, a także łatwe do połączenia z JMP, SPSS i innymi programami. W takim przypadku możesz spróbować. Nie musisz normalizować danych w bazie danych. W przeciwnym razie CSV jest przyjazny dla udostępniania.

Zastanów się nad gałęzią Apache, jeśli masz ponad 100 milionów wierszy.

Jeśli chodzi o analizę, oto kilka punktów wyjścia:

Opisz jedną zmienną:

  • Histogram
  • Statystyki podsumowujące (średnia, zakres, odchylenie standardowe, min., Maks. Itp.)
  • Czy są jakieś wartości odstające? (większy niż 1,5-krotny zakres międzykwartylowy)
  • Jakiego rodzaju dystrybucja następuje? (normalne itp.)

Opisz zależność między zmiennymi:

  • Wykres punktowy
  • Korelacja
  • Wartości odstające? sprawdź odległość Mahalanobis

  • Mozaika na kategorię

  • Tabela awaryjna dla kategorii

Prognozuj liczbę rzeczywistą (np. Cenę): regresję

  • Regresja OLS lub techniki regresji uczenia maszynowego

  • gdy technika stosowana do przewidywania jest zrozumiała dla ludzi, nazywa się to modelowaniem. Na przykład sieć neuronowa może przewidywać, ale ogólnie nie jest zrozumiała. Za pomocą regresji można także znaleźć kluczowe wskaźniki wydajności.

Przewiduj członkostwo w klasie lub prawdopodobieństwo członkostwa w klasie (np. Zaliczone / nieudane): klasyfikacja

  • regresja logistyczna lub techniki uczenia maszynowego, takie jak SVM

Podziel obserwacje na „naturalne” grupy: grupowanie

  • Generalnie można znaleźć „podobne” obserwacje, obliczając odległość między nimi.

Umieść atrybuty w „naturalnych” grupach: faktoring

  • I inne operacje matrycowe, takie jak PCA, NMF

Kwantyfikacja ryzyka = odchylenie standardowe lub odsetek przypadków, gdy zdarzają się „złe rzeczy” x ich waga

Prawdopodobieństwo pomyślnego ukończenia iteracji przy x liczbie punktów opowieści = regresja logistyczna

Powodzenia!

Neil McGuigan
źródło
To było niesamowite. Dziękuję bardzo za tę odpowiedź. Dałeś mi świetny punkt odskoczni. Wszelkie książki, które polecasz, bo wydajesz się, że „docierasz” tam, gdzie jestem.
Justin Bozonier
nie ma za co. książki: Na początek statystyki w języku angielskim. Następnie analiza danych na wielu odmianach według włosów. Są to dobre zasoby internetowe: itl.nist.gov/div898/handbook , statsoft.com/textbook
Neil McGuigan
4

Jeśli patrzysz na awarie systemu, być może zainteresuje Cię następujący artykuł wykorzystujący techniki uczenia maszynowego do diagnozowania błędów w serwisie eBay. Może dać ci wyobrażenie o tym, jakie dane należy gromadzić lub w jaki sposób jeden zespół podszedł do konkretnego problemu w podobnej domenie.

Jeśli dopiero zaczynasz, coś takiego jak RapidMiner lub Orange może być dobrym systemem oprogramowania, aby szybko zacząć grać z danymi. Oba mają dostęp do danych w różnych formatach (między innymi plik csv, baza danych).

ars
źródło
3

Twoje pytanie jest tak szerokie, że odpowiedź brzmi: to zależy. Jednak, aby udzielić bardziej użytecznej odpowiedzi, wskażę, co moim zdaniem jest wspólne w badaniach.

Przechowywanie danych bardzo często odbywa się w plikach tekstowych. Podczas wykonywania analiz statystycznych przeważnie pracujesz z kolekcją jednego rodzaju wektorów. Można to uznać za tabelę i napisane w formacie csv. Powodem, dla którego cienkie są często przechowywane w postaci zwykłego tekstu, jest to, że po prostu każde narzędzie może je odczytać i łatwo je przekształcić.

Jeśli chodzi o analizę, trudniej jest sprecyzować. Jeśli jest dwuwymiarowy, wykonaj wykres rozrzutu. Jeśli jest wielowymiarowy, wykonaj PCA i zobacz, gdzie istnieją pierwsze główne składniki, aby odkryć ważne zmienne. Jeśli masz dane dotyczące czasu, wykreśl je. To wszystko jest tak ogólne, że aby być użytecznym, musisz naprawdę lepiej wskazać swoje dane.

Peter Smit
źródło
Peter, pobiłeś mnie na pięści! Całkowicie zgadzam się z przechowywaniem danych jako tekstu, choć w zależności od rozmiaru (setki milionów obs) może być konieczne przejście do bazy danych z możliwością redukcji map (np. Pig, Cassandra lub jednej z opcji NoSQL).
DrewConway,
Och, ok ciekawe! Więc po prostu weź dane dla każdej zmiennej i ułóż ją w formacie wiersza-kolumny i przejdź do łamania liczb, co? Czy są jakieś narzędzia, na które powinienem patrzeć, czy powinienem coś programować?
Justin Bozonier
R jest bardzo rozbudowanym (i bezpłatnym) zestawem narzędzi / językiem programowania / biblioteką do statystyk. Moim ulubionym do większości rzeczy jest jednak Python z SciPy / NumPy
Peter Smit
0

Jedna rzecz ROOT jest naprawdę dobry jest przechowywanie sa ogromne ilości danych. ROOT to biblioteka C ++ używana w fizyce cząstek; zawiera również powiązania Ruby i Python, dzięki czemu można używać pakietów w tych językach (np. NumPy lub Scipy) do analizowania danych, gdy okaże się, że ROOT oferuje kilka możliwości gotowych do użycia.

Format pliku ROOT może przechowywać drzewa lub krotki, a wpisy można odczytywać sekwencyjnie, więc nie trzeba jednocześnie przechowywać wszystkich danych w pamięci. Pozwala to analizować petabajty danych, czego nie chciałbyś wypróbować za pomocą Excela lub R.

Dokumentacja ROOT I / O jest dostępna tutaj .

Benjamin Bannier
źródło