R ma wiele bibliotek, które są przeznaczone do analizy danych (np. JAGS, BŁĘDY, ARULES itp.) I jest wspomniany w popularnych podręcznikach, takich jak: J.Krusche, Doing Bayesian Data Analysis; B.Lantz, „Uczenie maszynowe z R”.
Widziałem wytyczną 5 TB, aby zestaw danych uważać za Big Data.
Moje pytanie brzmi: czy R jest odpowiedni dla ilości danych zwykle występujących w problemach z Big Data? Czy istnieją strategie, które należy zastosować, używając R z tym zestawem danych?
Odpowiedzi:
Właściwie to się zbliża. W książce R w pigułce znajduje się nawet rozdział dotyczący używania R z Hadoop do przetwarzania dużych danych. Istnieje kilka obejść, które należy wykonać, ponieważ R wykonuje wszystko, co działa w pamięci, więc jesteś zasadniczo ograniczony do ilości dostępnej pamięci RAM.
Dojrzały projekt dla R i Hadoop to RHadoop
RHadoop został podzielony na kilka podprojektów, rhdfs, rhbase, rmr2, plyrmr i quickcheck ( wiki ).
źródło
Głównym problemem związanym z używaniem R dla dużych zestawów danych jest ograniczenie pamięci RAM. Powodem przechowywania wszystkich danych w pamięci RAM jest to, że zapewnia znacznie szybszy dostęp i manipulowanie danymi niż przechowywanie na dyskach twardych. Jeśli jesteś gotów podjąć trafienie na wydajność, to tak, jest to dość praktyczne do pracy z dużymi zbiorami danych w R .
źródło
Kilka dobrych odpowiedzi tutaj. Chciałbym dołączyć do dyskusji, dodając następujące trzy uwagi :
Nacisk pytania na ilość danych w odniesieniu do dużych zbiorów danych jest z pewnością zrozumiały i uzasadniony, zwłaszcza biorąc pod uwagę problem wzrostu ilości danych przekraczający wykładniczy wzrost zdolności technologicznych zgodnie z prawem Moore'a ( http://en.wikipedia.org/wiki/Moore % 27s_law ).
To powiedziawszy, należy pamiętać o innych aspektach koncepcji dużych zbiorów danych. W oparciu o definicję Gartnera (podkreślenie moje - AB): „ Duże zbiory danych to zasoby o dużej objętości , dużej prędkości i / lub dużej różnorodności, które wymagają nowych form przetwarzania, aby umożliwić lepsze podejmowanie decyzji, odkrywanie wglądu i optymalizację procesów”. (zwykle określany jako „ model 3V ”). Wspominam o tym, ponieważ zmusza to naukowców zajmujących się danymi i innych analityków do szukania i używania pakietów R, które koncentrują się na aspektach dużych zbiorów danych innych niż wolumenowe (dzięki bogactwu ogromnego ekosystemu R ).
Podczas gdy istniejące odpowiedzi wspominają o niektórych pakietach R, związanych z dużymi zbiorami danych, w celu uzyskania bardziej kompleksowego zasięgu , polecam odnieść się do widoku zadań CRAN „Wysokowydajne i równoległe przetwarzanie z R” ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), w szczególności sekcje „Obliczenia równoległe: Hadoop” i „Duża pamięć i dane o braku pamięci” .
źródło
R doskonale nadaje się do „dużych zbiorów danych”! Jednak potrzebujesz przepływu pracy, ponieważ R jest ograniczony (z pewnym uproszczeniem) ilością pamięci RAM w systemie operacyjnym. Podejście, które stosuję, polega na interakcji z relacyjną bazą danych (zobacz
RSQLite
pakiet do tworzenia i interakcji z bazą danych SQLite), uruchamianiu zapytań w stylu SQL, aby zrozumieć strukturę danych, a następnie wyodrębnianiu określonych podzbiorów danych w celu intensywnego obliczeniowo Analiza statystyczna.To tylko jedno podejście: istnieją pakiety, które pozwalają na interakcję z innymi bazami danych (np. Monet) lub przeprowadzanie analiz w języku R przy mniejszych ograniczeniach pamięci (np. Patrz
pbdR
).źródło
Biorąc pod uwagę inne kryteria, myślę, że w niektórych przypadkach używanie Pythona może być znacznie lepsze niż R dla Big Data. Wiem, że R jest szeroko rozpowszechniony w materiałach edukacyjnych z zakresu nauk o danych i dostępnych dla niego dobrych bibliotek do analizy danych, ale czasami zależy to tylko od zespołu.
Z mojego doświadczenia wynika, że dla osób zaznajomionych z programowaniem używanie Pythona zapewnia znacznie większą elastyczność i wzrost wydajności w porównaniu z językiem takim jak R, który nie jest tak dobrze zaprojektowany i wydajny w porównaniu z Pythonem pod względem języka programowania. Jako dowód na kursie eksploracji danych na moim uniwersytecie najlepszy projekt końcowy napisano w Pythonie, chociaż inni mają dostęp do bogatej biblioteki analizy danych R. Oznacza to, że czasami ogólna produktywność (biorąc pod uwagę materiały do nauki, dokumentację itp.) Dla Pythona może być lepsza niż R, nawet przy braku specjalnych bibliotek analizy danych dla Pythona. Ponadto istnieje kilka dobrych artykułów wyjaśniających szybkie tempo Pythona w nauce o danych: Python Displacing R i Rich Scientific Data Structures in Python które wkrótce mogą wypełnić lukę dostępnych bibliotek dla R.
Innym ważnym powodem nieużywania R jest praca z rzeczywistymi problemami Big Data, w przeciwieństwie do problemów akademickich, istnieje duże zapotrzebowanie na inne narzędzia i techniki, takie jak parsowanie danych, czyszczenie, wizualizacja, złomowanie stron internetowych i wiele innych, które są znacznie łatwiejsze przy użyciu języka programowania ogólnego przeznaczenia. Może dlatego domyślnym językiem używanym w wielu kursach Hadoop (w tym kursie online Udacity ) jest Python.
Edytować:
Ostatnio DARPA zainwestowała również 3 miliony dolarów, aby sfinansować możliwości przetwarzania i wizualizacji danych w Pythonie dla zadań dużych zbiorów danych, co wyraźnie świadczy o przyszłości Pythona w Big Data. ( szczegóły )
źródło
reshape2
,plyr
i terazdplyr
) i nie sądzę, można to zrobić lepiej niżggplot2
/ggvis
do wizualizacjiR jest świetny do wielu analiz. Jak wspomniano wcześniej, istnieją nowsze adaptacje dużych danych, takie jak MapR, RHadoop i skalowalne wersje RStudio.
Jeśli jednak interesują Cię biblioteki, miej oko na Spark. Spark został stworzony dla dużych zbiorów danych i jest DUŻO szybszy niż sam Hadoop. Ma znacznie rozwijające się biblioteki do uczenia maszynowego, SQL, przesyłania strumieniowego i wykresów. Pozwala to na przeprowadzenie dużej, jeśli nie całej analizy w ramach (z interfejsami API dla wielu języków, wolę Scalę) bez konieczności przełączania między językami / narzędziami.
źródło
Jak zauważyły inne odpowiedzi, R można używać razem z Hadoop i innymi platformami przetwarzania rozproszonego, aby skalować go do poziomu „Big Data”. Jeśli jednak nie jesteś przywiązany do R, ale chcesz korzystać ze środowiska „podobnego do R”, Incanter to projekt, który może Ci się dobrze przydać, ponieważ jest on rodzimy dla JVM (oparty na Clojure) i nie ma „niedopasowanie impedancji” między sobą a Hadopem, które ma R. Innymi słowy, z Incanter można wywoływać rodzime interfejsy API Hadoop / HDFS Java bez konieczności przechodzenia przez most JNI lub cokolwiek innego.
źródło
Jestem daleki od eksperta, ale moje rozumienie tematu mówi mi, że R (znakomity w statystykach) i np. Python (znakomity w kilku rzeczach, w których brakuje R) doskonale się uzupełniają (jak wskazano w poprzednich postach) .
źródło
Myślę, że w rzeczywistości istnieje mnóstwo narzędzi do pracy z dużymi danymi w R. Sparklyr będzie świetnym graczem w tej dziedzinie. sparklyr jest interfejsem R dla Apache Spark i pozwala na połączenie z lokalnymi i zdalnymi klastrami, zapewniając zaplecze dplyr. Można także polegać na bibliotekach uczenia maszynowego Apache Spark. Ponadto możliwe jest równoległe przetwarzanie z kilkoma pakietami, takimi jak rmpi i snow (kontrolowane przez użytkownika) lub doMC / foreach (oparte na systemie).
źródło