Pierwszy krok dla dużych zbiorów danych (

21

Załóżmy, że analizujesz ogromny zestaw danych w wysokości miliardów obserwacji dziennie, gdzie każda obserwacja ma kilka tysięcy rzadkich i prawdopodobnie zbędnych zmiennych liczbowych i kategorialnych. Powiedzmy, że istnieje jeden problem regresji, jeden niezrównoważony problem klasyfikacji binarnej i jedno zadanie „dowiedzieć się, które predyktory są najważniejsze”. Myślałem o tym, jak podejść do problemu:

Dopasuj jakiś model predykcyjny do stopniowo coraz większych (losowych) podpróbek danych, aż:

  1. Dopasowywanie i sprawdzanie poprawności modelu staje się trudne obliczeniowo (np. Nieuzasadnione spowolnienie na moim laptopie, R brakuje pamięci itp.), LUB

  2. Wartości RMSE dla treningu i testu lub wartości precyzji / przywołania stabilizują się.

Jeśli błędy szkolenia i testu nie ustabilizowały się (1.), użyj prostszego modelu i / lub zaimplementuj wersje modelu z wieloma lub wieloma węzłami i zrestartuj od początku.

Jeżeli błędy w szkoleniu i testach ustabilizowały się (2.):

  • Jeśli (tzn. Nadal mogę uruchamiać algorytmy na ponieważ nie jest on jeszcze zbyt duży), spróbuj poprawić wydajność, rozszerzając przestrzeń funkcji lub używając bardziej złożonego modelu i uruchamiając od nowa.NsubsetNXsubset

  • Jeśli jest „duży”, a dalsze analizy są kosztowne, przeanalizuj znaczenie i koniec zmiennej.Nsubset

Planuje używać pakietów, takich jak biglm, speedglm, multicorei ffna początku badań, a następnie użyć bardziej skomplikowane algorytmy i / lub na Wielonodowy (EC2), jak jest to konieczne.

Czy to brzmi jak rozsądne podejście, a jeśli tak, czy masz jakieś konkretne porady lub sugestie? Jeśli nie, co byś zamiast tego spróbował dla zestawu danych o tym rozmiarze?

zablokowane
źródło
1
To brzmi jak rozsądne podejście. Znalazłem rozmowę o podobnym podejściu: youtube.com/watch?v=X9YVSDWQokQ .
alfa
2
jmlr.csail.mit.edu/proceedings/papers/v7/miller09/miller09.pdf Może to być pomocne. Więcej informacji na temat matematyki tutaj: ms.unimelb.edu.au/~millerh/papers/gencor_JCGS.pdf
dcl
@dcl: Dzięki - pomysł jest fajną, tanią pod względem obliczeniowym, nieliniową metodą wyboru zmiennych, która będzie dobrze zrównoleglona (chociaż jest jednoznaczna). Mogę spróbować, ponieważ jest szybki i bardzo prosty do kodowania. Początkowo myślałem o użyciu tego bardzo fajnego algorytmu: code.google.com/p/rf-ace .
zablokowane
@alfa: Naprawdę podoba mi się ten pomysł! Zastosowanie testu sekwencyjnego na coraz większych podzbiorach danych w celu sekwencyjnego wyeliminowania najgorzej działających meta-parametrów. To powinno znacznie wzrosnąć. Dzięki! ps tutaj jest papierowa wersja dyskusji: biglearn.org/files/papers/biglearn2011_submission_2.pdf
zablokowane

Odpowiedzi:

2

Powinieneś sprawdzić internetowe metody regresji i klasyfikacji zestawów danych o tym rozmiarze. Podejścia te pozwoliłyby ci wykorzystać cały zestaw danych bez konieczności ładowania go do pamięci.

Możesz także sprawdzić Vowpal Wabbit (VW):

https://github.com/JohnLangford/vowpal_wabbit/wiki

Używa nietypowej metody online, więc powinna być w stanie obsłużyć zestaw danych o tym rozmiarze. Możesz przeprowadzić regresję i klasyfikację, a także obsługuje rzadkie formaty. Możesz także wykonać wersje karane (np. Regresja / klasyfikacja typu lasso) w VW, co może poprawić dokładność twojego modelu.

użytkownik1489497
źródło
2

Sugerowałbym użycie Hadoop i RMR (specjalny pakiet dla Map Reduce in R). Dzięki tej strategii możesz uruchamiać duże zestawy danych na komputerach towarowych w przystępnej konfiguracji (prawdopodobnie w ciągu dwóch godzin wymyślisz zarówno Hadoop, jak i RMR (RHadoop) zainstalowane i uruchomione).

W rzeczywistości, jeśli masz więcej niż jeden komputer, możesz utworzyć klaster, co skraca czas przetwarzania.

Podaję kilka linków wspierających moją sugestię:

  • Ten link prowadzi do samouczka na temat instalowania programu Hadoop w klastrze z jednym węzłem (jeden komputer).
  • Ten link i ten link pokażą Ci, jak zainstalować RMR w klastrze Hadoop.
  • I na koniec, tutaj możesz znaleźć przykład regresji logistycznej za pomocą RHadoop.

Radzę więc postępować zgodnie z tymi wytycznymi, ponieważ z pewnością warto, jeśli Twoje dane są ogromne.

a.desantos
źródło
0

To jest bardziej komentarz niż odpowiedź, ale nie mogę opublikować go jako komentarza (wymaga 50 powtórzeń) ..

Czy próbowałeś użyć PCA w swoim zestawie danych? Pomoże ci to zredukować przestrzeń zmiennych i znaleźć możliwy kierunek, w którym zmienna wyklucza z twojego modelu regresji. Dzięki temu model będzie łatwiejszy do obliczenia. Tutaj można znaleźć interesującą dyskusję na temat korzystania z PCA ze zmiennymi kategorialnymi: Czy analizę głównych składników można zastosować do zbiorów danych zawierających mieszankę zmiennych ciągłych i kategorycznych?

Wyobrażam sobie również, że używasz R z wielu powodów (ja też używam R), ale może być łatwiej używać oprogramowania takiego jak SAS lub STATA. Działają one lepiej w przypadku dużych zbiorów danych i nie musisz zajmować się obliczeniami wielordzeniowymi i równoległymi.

Na koniec spróbuj pomyśleć, czy sensowne jest użycie jak największej liczby wierszy z zestawu danych. Czy jest to zbiór danych o populacji, zbiór danych o prawie populacji lub próbkowany zestaw danych? Możesz uzyskać lepsze wyniki przy dobrym próbkowaniu zestawu danych niż przy użyciu całych danych. Spójrz na ten post: Czy pobieranie próbek ma znaczenie w czasach „dużych zbiorów danych”?

Mam nadzieję że to pomoże

pietrop
źródło