R에는 데이터 분석 (예 : JAGS, BUGS, ARULES 등)을 목표로하는 많은 라이브러리가 있으며 J.Krusche, Doing Bayesian Data Analysis; B.Lantz, "R을 이용한 기계 학습".
데이터 세트가 빅 데이터로 간주되는 5TB의 지침을 보았습니다.
내 질문은 : R은 일반적으로 빅 데이터 문제에서 볼 수있는 데이터의 양에 적합합니까? 이 크기의 데이터 집합에 R을 사용할 때 사용할 전략이 있습니까?
R에는 데이터 분석 (예 : JAGS, BUGS, ARULES 등)을 목표로하는 많은 라이브러리가 있으며 J.Krusche, Doing Bayesian Data Analysis; B.Lantz, "R을 이용한 기계 학습".
데이터 세트가 빅 데이터로 간주되는 5TB의 지침을 보았습니다.
내 질문은 : R은 일반적으로 빅 데이터 문제에서 볼 수있는 데이터의 양에 적합합니까? 이 크기의 데이터 집합에 R을 사용할 때 사용할 전략이 있습니까?
답변:
실제로 이것은오고있다. 간단히 말해서 책 R에는 빅 데이터 처리를 위해 Hadoop과 함께 R을 사용하는 방법에 대한 섹션도 있습니다. R이 메모리에서 모든 작업을 수행하기 때문에 수행해야 할 몇 가지 해결 방법이 있으므로 기본적으로 사용 가능한 RAM의 양으로 제한됩니다.
R과 Hadoop을위한 성숙한 프로젝트는 RHadoop입니다.
RHadoop은 여러 하위 프로젝트, rhdfs, rhbase, rmr2, plyrmr 및 quickcheck ( wiki )로 나뉩니다 .
대용량 데이터 세트에 R을 사용할 때의 주요 문제점은 RAM 제약입니다. 모든 데이터를 RAM에 보관해야하는 이유는 HDD에 저장하는 것보다 훨씬 빠른 액세스 및 데이터 조작을 제공하기 때문입니다. 성능에 영향을 줄 수 있다면 R에서 큰 데이터 세트 로 작업하는 것이 매우 실용적 입니다.
여기에 좋은 답변이 있습니다. 다음 세 가지 메모를 추가하여 토론에 참여하고 싶습니다 .
빅 데이터 를 언급하면서 데이터 볼륨 에 대한 질문의 강조 는 특히 무어의 법칙에 따른 기술 용량의 기하 급수적 성장을 능가 하는 데이터 볼륨 성장 문제 를 고려할 때 확실히 이해 가능하고 유효합니다 ( http://en.wikipedia.org/wiki/Moore % 27s_law ).
그러나 빅 데이터 개념의 다른 측면을 기억하는 것이 중요합니다. 를 기반으로 가트너 의 정의 (강조 광산 - AB) : " 빅 데이터는 높은 볼륨 , 높은 속도 및 / 또는 높은 다양한 향상된 의사 결정, 통찰력 발견 및 프로세스 최적화를 가능하게 처리의 새로운 형태를 요구하는 정보 자산." (일반적으로 " 3V 모델 " 이라고 함 ). 가에 대한보고에 초점 R 패키지를 사용하는 데이터 과학자들과 다른 분석가 강제 때문에, 이것을 언급 볼륨 이외의 (에 의해 활성화 빅 데이터의 측면 풍요 로움 막대한의 R 생태계 ).
기존 답변에는 빅 데이터와 관련된 일부 R 패키지가 더 포괄적 인 적용 범위에 대해 언급되어 있지만 CRAN 작업보기 "R을 사용한 고성능 및 병렬 컴퓨팅" ( http : //cran.r-project) 을 참조하는 것이 좋습니다 . org / web / views / HighPerformanceComputing.html ), 특히 "병렬 컴퓨팅 : Hadoop" 및 "대용량 메모리 및 메모리 부족 데이터" 섹션 .
R은 "빅 데이터"에 적합합니다! 그러나 운영 체제의 RAM 크기에 따라 R이 일부 단순화되어 워크 플로가 필요합니다. 내가 취하는 접근법은 관계형 데이터베이스 RSQLite
와 상호 작용하고 (SQLite 데이터베이스를 만들고 상호 작용 하는 패키지 참조 ) SQL 스타일 쿼리를 실행하여 데이터의 구조를 이해 한 다음 계산 집약적 인 데이터의 특정 하위 집합을 추출하는 것입니다 통계 분석.
그러나이 한 가지 접근 방식은 다른 데이터베이스 (예 : Monet)와 상호 작용하거나 더 적은 메모리 제한으로 R에서 분석을 실행할 수있는 패키지가 있습니다 (예 : 참조 pbdR
).
다른 기준을 고려할 때 어떤 경우에는 Python을 사용하는 것이 Big Data의 R보다 훨씬 우수 할 수 있다고 생각합니다. 데이터 과학 교육 자료 및 R에 사용할 수있는 우수한 데이터 분석 라이브러리에서 R의 광범위한 사용을 알고 있지만 때로는 팀에 따라 다릅니다.
내 경험상 프로그래밍에 이미 익숙한 사람들에게 파이썬을 사용하면 프로그래밍 언어 측면에서 파이썬에 비해 잘 설계되고 강력하지 않은 R과 같은 언어에 비해 유연성과 생산성이 훨씬 향상됩니다. 증거로, 내 대학의 데이터 마이닝 과정에서 최고의 최종 프로젝트는 Python으로 작성되었지만 다른 프로젝트는 R의 풍부한 데이터 분석 라이브러리에 액세스 할 수 있습니다. 즉, 파이썬을위한 특수 목적 데이터 분석 라이브러리가 없어도 파이썬의 전반적인 생산성 (학습 자료, 문서 등을 고려한)이 R보다 우수 할 수 있습니다. 또한 데이터 과학에서 파이썬의 빠른 속도를 설명하는 좋은 기사가 있습니다 .Python에서 R 과 풍부한 과학적 데이터 구조 대체 곧 R에 사용할 수있는 라이브러리의 간격을 채울 수 있습니다.
R을 사용하지 않는 또 다른 중요한 이유는 실제 빅 데이터 문제를 다루는 경우 학문적 문제와 달리 데이터 구문 분석, 정리, 시각화, 웹 스크랩 핑과 같은 다른 도구와 기술이 많이 필요하기 때문입니다. 범용 프로그래밍 언어를 사용하면 훨씬 쉽습니다. 많은 Hadoop 과정 (Udacity의 온라인 과정 포함)에서 사용되는 기본 언어 가 Python 인 이유가 여기에 있습니다 .
편집하다:
최근 DARPA는 빅 데이터 작업을위한 Python의 데이터 처리 및 시각화 기능에 자금을 지원하기 위해 3 백만 달러를 투자했습니다. ( 상세 )
reshape2
, plyr
그리고 지금은 dplyr
) 내가 당신보다 더 잘 할 수 있다고 생각하지 않습니다 ggplot2
/ ggvis
시각화
R은 많은 분석에 좋습니다. 앞에서 언급했듯이 MapR, RHadoop 및 확장 가능한 RStudio 버전과 같은 빅 데이터에 대한 새로운 적응이 있습니다.
그러나 관심사가 도서관이라면 Spark를 주시하십시오. Spark는 빅 데이터 용으로 만들어졌으며 Hadoop보다 훨씬 빠릅니다. 머신 러닝, SQL, 스트리밍 및 그래프 라이브러리가 크게 증가하고 있습니다. 따라서 언어 / 도구 사이를 섞지 않고 프레임 워크 내에서 모든 분석을 수행 할 수있는 것은 아니지만 (여러 언어 API를 사용하는 경우 Scala를 선호합니다).
다른 답변에서 알 수 있듯이 R을 Hadoop 및 기타 분산 컴퓨팅 플랫폼과 함께 사용하여 "빅 데이터"수준으로 확장 할 수 있습니다. 그러나 R에 구체적으로 얽매이지 않고 "R-like"환경을 사용하려는 경우 Incanter 는 JVM 고유의 Clojure를 기반으로하기 때문에 잘 작동 할 수있는 프로젝트입니다. R과 가진 Hadop 자체와 "임피던스 불일치"가 없습니다. 즉, Incanter에서 JNI 브릿지 또는 다른 것을 거치지 않고도 Java 기본 Hadoop / HDFS API를 호출 할 수 있습니다.