데이터 인사이트 스터디 내용을 관리하는 블로그 입니다.

Data Insight Study Blog

  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

1. Introduction > Introduction > Getting the Data

NYC Taxi 데이터

MRS를 사용하여 대형 데이터 집합을 처리하고 분석하는 방법을 배우기 위해 NYC Taxi 데이터 집합를 사용합니다. 이 데이터 집합은 몇 년에 걸쳐 한 해의 각 달에 대하여 12개의 CSV 파일로 구성되어 있습니다. 파일의 각 레코드(행)는 다음과 같은 중요한 속성(열)이 기록 된 뉴욕시의 택시 운행 정보를 표시합니다.

  • 탑승 및 하차 날짜와 시간
  • 운행당 승객 수
  • 운행 거리
  • 탑승 및 하자 위도와 경도
  • 지불 정보 : 결제 유형, 지불 금액 - 운행요금, 팁, 기타 할증료

각각의 CSV 파일 크기는 약 2Gb이므로 6 개월 동안 12Gb가됩니다. 이는 일반적으로 단일 개인용 컴퓨터에서 사용 가능한 메모리 이상의 크기 입니다. 서버는 훨씬 더 큰 메모리 용량을 가질 수 있지만 한 번에 많은 사용자가 서버를 사용할 경우, R은 매우 빨리 서버의 메모리를 소모할 수 있습니다.

1. Introduction > Introduction > Installing the Microsoft R Client

Microsoft R Client 설치

RevoScaleR 패키지는 Microsoft에서 제공하며 CRAN 에서는 제공되지 않습니다. RevoScaleR의 설치와 그 전체 기능의 사용에는 Microsoft R Server에 대한 라이센스가 필요합니다. 그러나 Microsoft R Client를 설치하면 Microsoft R Server의 무료인 라이트 버전을 얻을 수 있습니다. Microsoft R Client는 RevoScaleR 라이브러리가 내장된 R의 설치를 제공하며, R 세션을 시작할 때 기본적으로 해당 라이브러리가 로드됩니다. 설치 이후에 수행해야 할 일은 IDE(Visual Studio 또는 RStudio)를 기존 설치된 R이 아닌 Microsoft R 클라이언트에 연결하는 것입니다.(다른 R 설치가 없는 경우, IDE는 자동으로 R 클라이언트를 감지합니다) 설치). Microsoft R Client를 사용하여 RevoScaleR 기능을 활용하는 R 코드를 개발할 수 있습니다. 이는 RevoScaleR 사용법과 제공되는 기능을 배우는 좋은 방법입니다. Microsoft R Client는 무료이며 가벼운 Microsoft R Server 버전이기 때문에 데이터 크기 및 성능과 관련된 몇 가지 제한 사항이 있습니다.

Microsoft R 클라이언트를 설치하려면 위에 제공된 링크의 단계를 따르십시오. 그리고 RTVS가 설치된 Visual Studio 또는 RStudio 같은 R IDE가 필요합니다.

1. Introduction > Introduction > Introduction to Microsoft R

RevoScaleR 개요

R은 풍부한 기능 및 패키지 세트를 가지고 있는 데이터 분석 및 모델링에 이상적인 매우 유명한 프로그래밍 언어입니다. 전통적으로 R은 모든 객체(데이터 세트 포함)를 메모리 객체로 로드하여 작동합니다. 이로 인하여, 대용량의 데이터를 다룰 때, 메모리에서 사용 가능한 공간의 양은 빠르게 줄어들 수 있습니다. 여유 메모리가 부족한 리소스로 빠르게 바뀔 수 있기 때문에, 이는 특히 많은 사용자가 동일한 R 서버에서 작업 할 때 문제가 됩니다. 그동안  많은 R 패키지들이 이러한 한계를 극복하려고 시도하여 왔습니다. 일부 패키지들을 더 큰 데이터 크기의 작업을 할 수 있도록, 데이터를 보다 효율적으로 로드하고 처리하는 방법을 제안합니다. 그러나 이러한 방식의 효율성의 추구는 결국 벽에 부딪히기 때문에, 일정 수준의 개선 만이 가능합니다. R을 효율적으로 사용하려면 프로그래밍에 대한보다 정교한 지식이 필요한 데, 이는 많은 R 사용자들에게 부족한 것입니다.

Microsoft R Server(MRS)는 기존의 R과는 다른 접근 방식을 취하고 있습니다. MRS의 RevoScaleR 패키지는 디스크(하드 드라이브)에 데이터 집합을 저장하고, 처리하기 위해 한 번에 하나의 단위 집합(chunk, 단위 집합은 사전 지정된 행 수로 이루어 짐)을 메모리로 로드합니다. 하나의 단위 집합이 처리되면, MRS는 데이터의 다음 단위 집합을 로드합니다. 기본적으로 단위집합(chunk) 크기는 50만 개의 행으로 설정되지만, 더 넓은 데이터 세트(많은 컬럼)를 처리 할 때에는 좀 더 낮은 숫자로 변경할 수 있으며, 더 긴 데이터 세트(적은 컬럼)를 처리 할 때는 더 큰 숫자로 변경할 수 있습니다.

RevoScaleR의 데이터는 외부에(디스크에 저장) 저장 되어 있으며 본질적으로 분산되어 있습니다(우리가 단위 집합 방식으로 처리하기 때문에). 이는 MRS는 데이터 처리시에 더 이상 메모리에 구속받지 않는다는 것을 의미합니다. 우리는 하드 디스크에 저장될 수 있는 공간만큼 큰 데이터를 처리할 수 있는 것입니다. 모든 시점에서 메모리 객체(특정 R 객체)에는 하나의 단위집합(chunk) 데이터만 로드되기 때문에, 시스템의 필요 메모리가 지나치게 커지는 일은 결코 발생하지 않습니다. 물론 이 모든 것은 최소한의 사용자 입력으로 백그라운드에서 발생합니다.

하지만 무료 점심 식사 같은 것은 없습니다. 분산 데이터로 작업하기 위해서는 상응하는 비용을 지불해야만 합니다. 대부분의 상용 패키지를 포함한 대부분의 오픈 소스 R 알고리즘은 데이터 프로세싱과 분석을 R 세션 상의 data.frame 객체로 로드된 전체 데이터 세트�� 의존하기 때문에, 분산 데이터로는 직접 작업하지 않습니다. 그러나 RevoScaleR 패키지는 다음과 같이 작동합니다.

  • 대부분의 데이터 처리 단계 (데이터 클린징, 새 컬럼 작성 또는 기존 컬럼 수정)는 RevoScaleR을 통하여 간접적으로(그리고 상대적으로 쉽게) 분산 데이터 방식으로 처리될 수 있으므로, 상당히 많은 기존 R 코드들의 개선에 활용될 수 있습니다. 간접적으로 분산 데이터를 처리한다는 내용은 앞으로 다루어질 다양한 예제를 통하여 그 의미를 분명히 알게 될 것입니다.
  • 더하여 데이터 병합 또는 정렬과 같은 일부 데이터 처리 단계와, 선형 회귀 분석 모델을 작성하는 데 사용되는 lm 함수에 해당하는 대부분의 RevoScaleR 분석 및 통계 알고리즘은 RevoScaleRcounterparts를 가지고 있으며, 이를 통하여 기존과 작동 방식은 동일하지만 data.frame은 물론 분산된 데이터 집합에 대하여도 동작합니다. 예를 들어, RevoScaleR은 lm과 동일한 기능을 하는 rxLinMod 함수를 가지고 있는데, rxLinMod는 분산 알고리즘을 사용하기 때문에 data.frame(data.frame의 크기가 큰 경우 lm보다 훨씬 우수한 성능)과  분산 데이터 집합 둘 모두에서 작동합니다.  

RevoScaleR을 사용하면 기존의 R 기능(R의 풍부한 상용 패키지가 제공하는 기능)과 RevoScaleR이 자체 제공하는 분산 처리 기능들을 같이 사용할 수 있습니다. RevoScaleR의 분산 기능이 제공하는 최신 장점 중 하나는 다음과 같은 코드 이식성입니다.

  • 오픈 소스 R의 분석 기능은 일반적으로 병렬 처리를 지원하지 않기 때문에, 분산 환경에서 이러한 알고리즘을 사용하는 것은 본질적으로 어려울 수 있습니다. 예를 들어 Hadoop에 작성된 코드를 배포하는 경우, R 코드를 Hadoop이 이해할 수있는 매퍼(mappers) 및 리듀서(reducers)로 다시 작성해야 하는 번거로움이 발생합니다. 반면에 RevoScaleR은 기본적으로 병렬 데이터 처리 및 분석 기능을 바탕으로 하기 때문에, 단일 시스템에서 실행되는 MRS에서 Hadoop 클러스터 또는 기타 분산 환경 하의 MRS로 코드를 포팅하는 데 이상적입니다.

요약

RevoScaleR 패키지가 제공하는 내용은 다음과 같습니다.

  1. 데이터가 크지만 data.frame으로 여전히 메모리에서 수용할 수 있을 정도인 경우에도, RevoScaleR의 병렬 알고리즘을 사용하여 오픈 소스의 것보다 훨씬 빠르게 데이터에 대한 분석 모델을 실행할 수 있습니다.(예 : lm 대신 rxLinMod 사용 ).
  2. 데이터가 너무 커서 사용 가능한 메모리를 초과하는 경우, 플랫 파일과 같은 디스크 상의 데이터 또는 XDF라는 외부 분산 형식의 데이터에 대하여 직접 작업을 수행할 수 있습니다. RevoScaleR의 데이터 처리 및 분석 기능은 data.frame 외에 이러한 데이터 형식에도 같이 작동합니다.
  3. 데이터가 운영시 HDFS나 SQL Server와 같은 분산 환경에 저장되어야 하는 경우, 개발에서 운영으로 배포를 위한 별도 작업을 줄이면서, 약간의 조정 작업만으로 기존 작성된 코드를 배포할 수 있습니다.

1. Introduction > Introduction > Objectives

시작하기


분석을 시작하기에 앞서서 먼저 우리가 사용할 도구를 결정해야 합니다. 탐색적 데이터 분석을 수행하려고 할 때, R은 훌륭한 선택이 될 수 있습니다. 간결하고 매우 읽기 쉬운 구문과 많은 패키지는 R이 제공하는 분명한 장점입니다. 그러나 R에도 역시 단점이 있습니다. 테이블 형식의 데이터를 표현하는 R의 data.frame은 다른 여러 R 객체들과 마찬가지로 메모리에 로드 되어야만 합니다. 이로 인하여 데이터 집합이 커지는 경우, 사용 가능한 메모리의 양은 급격하게 부족해집니다. 또한 R에서 사용하는 대부분의 분석 및 모델링 알고리즘은 data.frame에서만 작동하는데, 대용량 데이터 집합은 Hadoop, Spark 클러스터, SQL Server와 같은 분산 환경에 저장되는 경우가 많습니다. 이러한 경우 디스크의 데이터 또는 클러스터 전체에 분산된 데이터에 대하여 직접 작업할 수 있는 알고리즘이 필요하며, 데이터 크기가 커짐에 따라서 확장이 가능한 알고리즘 또한 필요합니다. 이번 모듈에서는 RevoScaleR 패키지가 어떻게 이러한 필요성들을 충족시키는지에 대하여 살펴 보겠습니다.

[공지] 스터디 예비 모임

안녕하세요,
이제 2017년도 얼마 남지 않은 것 같습니다.
다음주 스터디 시작에 앞서서 온라인 중계 테스트를 겸하여 사전 온라인 미팅 예정입니다.

* 제목 : 스터디 사전 미팅 / DAT213x Analyzing Big Data with Microsoft R Server 
* 일시 : 2016년 12월 30일(금) 13:00
* 참석 링크 : Join Skype Meeting (클릭!하시면 브라우저에 Webapp이 설치됩니다.)
* 안건

스터디 일정(안)

범위 일자 발표자
1. Introduction  1월 5일(목) 20:00
2. Reading and Preparing Data 1월 12일(목) 20:00
3. Examining and Visualizing Data 1월 19일(목) 20:00
4. Clustering and Modeling 1월 26일(목) 20:00
5. Deploying and Scaling 2월 2일(목) 20:00
Wrap-up & Next 2월 9일(목) 20:00


진행 방법

  • 발표자가 담당 범위 요약 발표 (온라인 중계)
  • 오프라인에서 진행
  • 발표 내용(동영상+자료)은 스터디 블로그 게시

발표자 선정

  • 희망자 우선으로 예비 모임 등에서 선정

다른 아이디어나 의견이 있으신 분들은 답글 또는 상단 [연락처] 메뉴를 통하여 말씀하여 주십시요.

감사합니다.

김환태