관리 메뉴

IT & Life

[해외] R 튜토리얼 : R로 빅 데이터를 처리하는 방법 배우기 본문

프로그래밍/R

[해외] R 튜토리얼 : R로 빅 데이터를 처리하는 방법 배우기

미운앙마 2017. 12. 3. 01:49

https://www.infoworld.com/article/3233263/application-development/r-tutorial-learn-to-crunch-big-data-with-r.html?nsdr=true

 

 

R 튜토리얼 : R로 빅 데이터를 처리하는 방법 배우기

오픈 소스 R 프로그래밍 언어를 사용하여 대규모 데이터 세트에서 통계 계산 및 그래픽 작업 수행


몇 년 전, 저는 CTO이자 의료 관리 소프트웨어 분야의 신생 기업 창업자였습니다. 우리가 해결하려고 한 문제 중 하나는 의료 사무실 방문 일정이 모든 사람의 시간을 어떻게 최적화 할 수 있었는지였습니다. 너무 자주 사무실 방문은 의사의 시간을 최적화하도록 예정되어 있으며, 환자는 폐에서 전염병을 앓고있는 사람들의 과밀 대기실에서 너무 오래 기다려야합니다.

병원의 의료 책임자 인 나의 cofounders 중 한 명은 방문 이유, 환자가 번역자를 필요로하는지 여부, 의사와 환자의 평균 과거 방문 길이가 어느 정도인지에 따라 사무실 방문에 필요한 길이를 예측할 수있는 다변량 선형 모델을 사용했습니다 , 그리고 아마도 다른 관련 요소들. 빌드해야하는 하위 시스템 중 하나는 과거 데이터를 기반으로 모델의 모든 계수를 업데이트하는 월간 회귀 작업이었습니다. 많은 옵션을 탐색 한 후에 R 시스템에서 구현 된 다양한 통계 (선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링) 및 그래픽 기술을 활용하여 R에서이 부분을 구현하기로 결정했습니다.


나에게 매력적인 요소 중 하나는 업데이트 된 데이터 세트에 대한 분석을 저장하고 재실행하는 R 스크립팅 언어였습니다. 또 다른 매력은 R과 C ++를 통합하는 능력이었습니다. 이 프로젝트의 주요 이점은 Microsoft Excel 및 기타 GUI 분석 프로그램과 달리 R이 완전히 감사 가능하다는 사실이었습니다.

아아, 첫 번째 병원 고객이 제 7 장 파산을 선언해야했기 때문에 컨셉 증명 웹 애플리케이션을 구현 한 후 오랜 시간이 지났지 만, 그 시작은 돈을 다 써 버렸습니다. 그럼에도 불구하고 저는 통계 분석과 데이터 과학을 위해 R을 계속지지합니다.

 


R 다운로드 위치

 

바탕 화면에 R 및 RStudio 를 설치 하십시오. 둘 다 무료입니다. RStudio는 선택 사항이지만, 나는 그것을 좋아한다. 아마도 그렇게 할 것이다. 다른 R IDE가 여섯 개 있고 R이 지원되는 편집자가 12 명 있지만, 모두 열심히 노력하지 마십시오.

 

 

필수 R 스크립팅의 예

 

Computerworld의 Sharon Machlis는 2013 년 에 비즈니스 인텔리전스 를 위한 R에 대한 훌륭한 초보자 자습서를 작성 했습니다.이 6 개의 기사를 여기서 재발 명하는 것은 어리석은 일이므로 자유롭게 읽고 다시 읽으십시오. tl; dr 버전은 다음과 같습니다.

 

명령 쉘 (그림 1), R 콘솔 (그림 2) 및 RStudio (그림 3)에서 R을 실행 해보십시오. R 자습서와 데모를 숙지하십시오.

 

 


그림 1. 제공된 glm.vr선형 회귀 데모를 사용하여 Bash 쉘에서 실행중인 R.


 


그림 2. R 콘솔, R 데모의 부동 목록 및 Quartz 그래픽 창 R 그래픽 데모가 실행 중입니다. 유의 사항 is the normal assignment operator.


 


그림 3. RStudio는 네 개의 창 (여기에서는 편집기를 제외하고 모두 표시)과 각 창에 여러 개의 탭이 있습니다. R 사이트의 샘플 코드가 실행 중입니다. 오른쪽 상단에 데이터 표시가 표시되어 매우 편리합니다.


R의 힘은 통계 분석을하기 위해 그림 3의 간단한 호출에 의해 설명됩니다. 예를 들어,

 

fm1 <- lm(y ~ x, data=dummy,
weight=1/w^2)
summary(fm1)


이것은 " 제공된 데이터와 가중치 벡터에 y따라 달라지는 선형 모델에 대해 가장 적합한 계수, 적합 값 및 잔차를 찾습니다 x. 객체에 저장하고 fm1결과를 요약하십시오. "이 세션의 앞부분에서 나는 다음을 정의했다.

 

w <- 1 + sqrt(x) / 2


이 코드를 읽는 것은 간단합니다. 그것을 쓰는 것은 약간의 연구를 필요로합니다. 하지만 열심히하지 않으며 수십 권의 책은 말할 것도없이 무료로 사용할 수있는 도움이 많이 있습니다.

웹 및 R 콘솔 및 RStudio의 도움말 메뉴 항목에서 사용할 수있는 R 도움말 외에도 R 명령 줄에서 도움말을 얻을 수 있습니다. 예 :

 

?functionName
help(functionName)
example(functionName)
args(functionName)
help.search(“your search term”)
??(“my search term”)

R로 데이터를 가져 오려면 data()함수로 나열된 샘플 데이터를 사용 하거나 파일에서로드하십시오.

 

mydata <- read.csv(“filename.txt”)

R은 매우 확장 성이 뛰어납니다. library() 및 require() 기능 부하 및 첨부 추가 기능 패키지; require() 다른 기능 안에서 사용하도록 설계되었습니다. 많은 애드온 패키지와 R 배포판은 전세계의 종합 R 아카이브 네트워크 인 CRAN에 있습니다.

다른 두 가지 일반적인 R 아카이브는 Omegahat 및 Bioconductor입니다. 추가 패키지는 R-Forge에 있습니다.

R 설치는 CRAN의 기본 패키지와 권장 패키지를 현재 Mac에있는 로컬 라이브러리 디렉토리에 복사합니다 /Library/Frameworks/R. framework/Versions/3.1/Resources/library/.

library() 인수없이 R 명령을 실행하면 로컬 패키지와 라이브러리 위치가 나열됩니다. 또한 RStudio는 library() 패키지 탭에서 설치 확인 표시를 확인할 때 나열된 패키지를 설치하는 올바른 명령을 생성합니다 . 이 명령 help(package = packageName은 지정된 패키지에 함수를 표시합니다.

CSV 파일뿐만 아니라 합리적인 소스에서 데이터를로드하는 R 패키지 및 기능이 있습니다. read.table() 함수를 사용하여 처리되는 쉼표 이외의 구분 기호가있는 명백한 경우 외에 데이터 테이블을 복사 및 붙여 넣기, Excel 파일 읽기, Excel에 R 연결, SAS 및 SPSS 데이터 가져 오기, 데이터베이스, Salesforce 및 RESTful 인터페이스에 액세스 할 수 있습니다. . 예를 들어 foreign 패키지 를 참조하십시오 .

RStudio Tools | Import Dataset 메뉴 항목을 사용하면 텍스트 파일이나 URL의 데이터를보고 드롭 다운에서 올바른 변환 옵션을 설정하여 대화식으로 올바른 명령을 생성 할 수 있으므로 표준 데이터 가져 오기의 구문을 실제로 배울 필요가 없습니다. 당신이 보는 것에 기반한 목록.

CRAN의 이름 으로 현재 사용 가능한 패키지 목록을 볼 수 있습니다 . 이 목록은 기본적으로 바탕 화면에 다운로드되는 권장 패키지 목록보다 훨씬 광범위합니다.

기본 아카이브 중 하나에서 패키지를 설치하려면 다음 install.packages함수를 사용하십시오 .

 

install.packages(“ggplot2”)

그 주 ggplot2표준보다 더 많은 옵션이있는 인기있는 고급 그래픽 패키지 graphics패키지. 그럼에도 불구하고, graphics많은 일을 할 수 있습니다. 그림 2와 3의 그래픽 외에도 그림 4와 5를 고려하십시오.

 

 


그림 4. Edgar Anderson의 Iris 데이터는 주식 R 데이터 세트이며,이 산점도 세트는 graphics 데모 에서 생성되었습니다  .


 

 

그림 5. Maunga Whau의이 지형도는 주식 데이터와 graphics 데모 로 생성되었습니다.

 


R은 그래픽 및 통계 분석 측면에서 훨씬 많은 작업을 수행 할 수 있습니다. 읽어 마십시오 샤론 Machlis의 튜토리얼을 그녀와 후속 추가 정보에 대한 링크 . 이 시점에서 필자는 R의 큰 데이터를 분석하는 방법에 대한 내용을 다룬다.

 

 

클라우드에서 R을 실행하는 방법

 

R 프로그래머가 "큰 데이터"에 대해 말하면 반드시 하둡을 통과하는 데이터를 의미하지는 않습니다. 그들은 일반적으로 메모리에서 분석 할 수없는 데이터를 의미하는 "큰"을 사용합니다. 사실 데스크톱이나 랩톱 컴퓨터에서 16GB의 RAM을 쉽게 사용할 수 있습니다. 16GB RAM에서 실행되는 R은 아무런 문제없이 수백만 행의 데이터를 분석 할 수 있습니다. 백만 행을 가진 데이터베이스 테이블이 큰 것으로 간주 된 이후로 시간이 상당히 바뀌 었습니다.

 

많은 개발자가 자신의 프로그램에 더 많은 RAM이 필요할 때 가장 먼저 수행해야 할 작업 중 하나는 더 큰 머신에서 실행하는 것입니다. 서버에서 R을 실행할 수 있습니다. 일반적인 4U 인텔 서버는 최대 2TB의 RAM을 수용 할 수 있습니다. 물론 하나의 개인용 R 인스턴스에 대해 전체 2TB 서버를 사용하는 것은 약간 낭비 일 수 있습니다. 따라서 사람들은 대규모 클라우드 인스턴스를 필요에 따라 실행하거나, 서버 하드웨어에서 VM을 실행하거나, 서버 하드웨어에서 RStudio Server를 실행합니다.

 

RStudio Server는 Free 및 Pro 버전으로 제공됩니다. 둘 다 개별 분석가에게 동일한 기능을 제공하지만, Pro 버전은 인증 및 보안, 관리 가시성, 성능 조정, 지원 및 상용 라이센스와 같이 규모면에서 더 많은 것을 제공합니다. RStudio의 Roger Oberg에 따르면이 회사의 의도는 개인을위한 유료 기능 만 만드는 것이 아니라고합니다. RStudio Server Pro는 몇 가지 큰 데이터 시스템과 통합되어 있습니다. 예를 들어 IBM Bluemix PaaS를 검토했을 때 R과 RStudio가 IBM의 DashDB 서비스에 포함되어 있음을 알았습니다 (그림 6). 사실, 이것은 RStudio의 Oberg와 Tareef Kawaf에 따르면 Bluemix와 SoftLayer에 RStudio Server Pro를 설치 한 것입니다.

 

 


그림 6. IBM Bluemix 문서는 DashDB 메모리 내 데이터베이스 ( graphics 데모) 에 대해 R 스크립트를 실행할 수있는 기능을 제공합니다 .


큰 데이터에 대해 R을 실행하기위한 추가 전략은 다음과 같습니다. 분석해야하는 데이터 만 가져옵니다. MapReduce, Hadoop, Spark 및 Storm의 정신으로 데이터를 스트리밍 할 때 데이터를 알아내어 축소 된 데이터 세트에서 메모리 내 분석을 쉽게 처리 할 수 ​​있습니다. Kawaf의 예를 사용하려면 100TB의 데이터가있을 수 있지만 단지 5 개의 열과 2 천만 개의 행만 필요하며 단순한 수백 메가 바이트의 축소 된 데이터 만 필요합니다.

 

또한 응용 프로그램 대신 데이터베이스에서 일부 분석을 수행 할 수도 있습니다. IBM은 R 소스 코드와 함께 예제를 제공했다. 그림 7과 같은 분석을 고려하십시오.

 

 

 

그림 7. IBM Bluemix DashDB 서비스에서 실행되는 RStudio Server Pro입니다. 내가 실행 한 샘플은 대규모 데이터베이스 인 데이터베이스에서 회귀 분석을 수행했습니다.

 


데이터를 데이터베이스에서 R로 스트리밍하는 데는 상당한 시간이 걸릴 수 있습니다. 대부분의 네트워크 스트리밍을 제거하면 분석에 필요한 시간을 크게 줄일 수 있습니다. 데이터베이스 내 회귀 분석의 시간은 2.7 초입니다.

 

응용 프로그램에서 수행 된 회귀 분석과 동일한 작업은 1.47 분 - 30 배 이상 길어졌습니다. 계산 된 회귀 계수는 정확히 동일합니다. 변경된 모든 것은 한 분석이 데이터가있는 회귀 분석을 수행하고 다른 분석은 데이터베이스에서 R 응용으로 데이터를 스트리밍하는 것입니다.

 

IBM 구현은 고유하지 않습니다. Bluemix 계정이 생겼습니다. Vertica (HP), Greenplum (Pivotal), Oracle 및 Teradata에는 모두 R 패키지가 있습니다. 그러나 다른 사람들이 데이터베이스 내 분석의 방향으로 얼마나 멀리 갔는지는 확실하지 않습니다.

 

그런데 RStudio Server Pro를 브라우저에서 실행하면 데스크톱에서 RStudio를 실행하는 것과 똑같이 느껴진다는 사실에 즐겁게 놀랐습니다.

 

 

Shiny and R Markdown 사용 방법

 

물론 개발자와 분석가는 코드를 작성하고 결과를 결정하는 것만으로도 결코 벗어날 수 없습니다. 최고 경영자는 월간 보고서를 원하며 중급 경영자는 그 내용을 알지 못해도 데이터를 가지고 놀고 싶어합니다. 입력 shiny및 rmarkdown각각의 웹 응용 프로그램 및보고를 위해 RStudio에서, 두 개의 R 패키지를. 그림 8은 RStudio에서 실행되는 간단한 Shiny 앱을 보여줍니다. 이 코드는 Shiny 튜토리얼의 Lesson 2 에서 가져온 것 입니다.

 

 


그림 8. 반짝이는 앱을 실행하는 웹 페이지, RStudio 편집기 옆에 앱의 UI 코드가 표시됩니다. Shiny 함수는 HTML을 생성합니다. 예를 들어,  h1(“Mytitle”) 생성  <h1>My title</h1>합니다.


Shiny를 사용하여 input필드 와 같은 HTML 컨트롤 요소에 해당하는 위젯을 사용하여 대화 형 "반응적인"웹 앱을 만들 수 있습니다 . "reactive"란 RStudio는 값이 변경되면 스프레드 시트 프로그램에서 예상하는 것처럼 변경된 값에 대한 종속성이있는 모든 값이 다시 계산된다는 것을 의미합니다. 그림 9는 입력을위한 두 개의 위젯과 출력을위한 미국 인구 조사 데이터의 음영 된 choropleth지도가있는 대화 형 Shiny 앱을 보여줍니다.

 

 


그림 9. 위의 예에서 렌더링 된 미국지도는 사용자가 입력 값을 변경할 때 변경됩니다. 노트  readRDS 직렬화 R 객체를 판독하는 기본 기능을 상기  source 기능 부가 코드는 포함하는  renderPlot (로부터 함수  shiny 패키지) 반응 플롯을 렌더링하기 위해 상기  do.call 함수 호출을 구성하고 실행하는 기본 기능. percent_map 함수의 정의  helpers.R 음영 카운티지도 및 상태 개요지도를 렌더링 할 수 있습니다.

 


그림 9의 대화 형 Shiny 앱은 미들웨어의 내용을 알 필요없이 중간 관리자가 데이터를 가지고 놀 수있게하는 좋은 예입니다.

 

입력이 변경 될 때 다시 계산되는 것을 제한하기 위해 리액턴트 래퍼 함수는 값을 캐시에 저장하고 유효하지 않은 값만 다시 계산합니다. Shiny Lesson 6에서 하나를 발견 하긴하지만 예제로 당신을 괴롭히지 않을 것 입니다. 반짝이는 앱은 여러분의 하드웨어에서 실행하거나 shinyapps.io 서버에 게시 할 수 있습니다 . 빠른 예제를 보려면 그림 10을 참조하십시오.

 

 

 

그림 10. 로컬 시스템에서 실행되는 대화식 Shiny 데모 앱. https://mheller.shinyapps.io/shinyapp-demo/ 에서 직접 실행할 수 있습니다  .

 

반짝이는 앱은 중간 관리자의 요구를 충족시켜야합니다. 이제 최고 경영진은 무엇입니까? GitHub 사용자이거나 지난 10 년 동안 웹 및 개발자 환경에 관심을 기울 였다면 HTML 및 기타 태그 기반 마크 업 언어로 서식이 지정된 문서를 생성하기위한 Markdown 언어에 대해 알게됩니다. RStudio는 Markdown 구현을 포함하고 임베디드

 

R 코드 청크 및 R Markdown 패키지의 LaTeX 및 MathML을 모두 지원합니다. Shiny를 사용하여 대화 형 R Markdown 문서를 만들고 자신의 Shiny 서버 또는 shinyapps.io에 게시 할 수도 있습니다 . 예를 들어, 그림 11을 참조하십시오.

 

 

 

그림 11. 대화식으로 만들어진 R Markdown의 예. 기본 코드는 헤더 블록, 몇 줄의 Markdown 및 12 줄의 R입니다. 그림 12를 참조하십시오.

 

 

 

그림 12.  faithful$eruptions 이 예제에서 사용 된 데이터는 R 데이터 집합 패키지에 내장 된 Old Faithful 간헐천 데이터의 데이터입니다.



R의 힘을 이용

 

지금까지 알았 듯이, R은 데이터 과학자 및 통계 전문가에게 유용한 도구이며 다소 비표준 스크립팅 언어는 달리 Python (NumPy, Pandas 및 StatsModels)을 사용하는 프로그래머에게 유용 할 것입니다. SQL (데이터베이스에 보관 된 데이터의 경우). 또는 SAS (및 GUI 파생물, JMP)를 사용하여 데이터를 분석 할 수 있습니다. Excel과 비교할 때 R은 통계 및 그래프 작성 능력이 훨씬 뛰어납니다. 특히 특정 요구 사항에 맞는 패키지를 추가하면 감사 기능이 훨씬 향상됩니다. 수식으로 가득 찬 스프레드 시트보다 R 스크립트를 검증하는 것이 훨씬 쉽습니다.

 

RStudio를 IDE로 추가하면 R 응용 프로그램을 개발하는 것이 매우 생산적 일 수 있습니다. RStudio Server를 사용하면 회사는 거대한 RAM과 대형 서버 하드웨어에서 사용할 수있는 많은 프로세서, Shiny R을 웹 응용 프로그램 서버로 활용할 수 있으며 R Markdown을 사용하면 보고서에 R을 사용할 수 있습니다.

 

반면에 R의 강력한 힘과 많은 수의 R 패키지가 상당히 협박적인 학습 곡선을 만들 수 있습니다. R을 배우고 사용할 때 통계 배경을 많이 가지는 데 도움이되지만 모든 데이터 과학에 해당됩니다. 많은 라이브러리를 사용할 수있는 다른 프로그래밍 언어 에서처럼 R 학습을위한 최상의 전략은 한 번에 한 단계 씩 진행하는 것입니다.

Comments