데이터 과학을 위한 도구의 선택

보조장치 없는 인간의 지적 능력은 미약하기 짝이 없다. 종이와 펜, 컴퓨터와 같은 인지 보조장치의 사용으로 인간의 기억과 사고력은 극적으로 향상된다. – 도널드 노먼

사용성(Usability)이라는 개념의 주창자로 유명한 도널드 노먼(Donald A. Norman)은 <생각있는 디자인>[@Norman1993]이라는 책에서 인간의 미약한 기억과 판단력을 보완해주는 인지 보조장치의 중요성에 대해 언급하고 있다. 이처럼 도구는 단순히 잘 정의된 일을 수행하는 수단에 지나지 않고 일을 수행하는 우리의 사고 프로세스를 제한하고 규정함으로써 결과물에 지대한 영향을 끼친다.

데이터 문제 해결을 위한 도구의 선택은 앞서 언급한 데이터 문제의 요소에 의해서도 결정된다. 문제 해결의 주체인 개인이나 조직이 어떤 도구에 익숙하거나 혹은 배울 수 있는지, 문제 해결의 초점이 어떤 데이터 처리 및 분석, 그리고 시각화 기법을 요구하는지, 마지막으로 데이터의 크기 및 특성이 어떤지가 모두 어떤 도구를 선택하고 조합해야 하는지에 대한 기준이 된다.

이 글에서는 우선 널리 사용되는 데이터 과학을 위한 도구의 특성을 알아보고, 프로젝트의 특성에 따라 도구를 조합하는 방법을 제시한다. 그리고 이중 데이터 과학을 시작하는 사람들이 꼭 알아야 할 도구인 엑셀과 R에 대해 자세히 설명한다.

데이터 과학을 위한 도구들

지금부터 데이터 과학을 위해 주로 사용되는 도구의 특성에 대해 알아보자. 우선 아래 표에서 널리 사용되는 도구들을 데이터 및 과업의 여러 가지 특성에 따라 비교해 보았다. 이를 각 특성별로 간단히 살펴보자.

데이터 과학을 위한 도구들

처리용량/속도 우선 한 번에 처리 가능한 데이터의 크기(Volume / Throughput) 관점에서는 빅데이터 솔루션의 대표 주자로 각광받는 하둡이 거의 무한대의 용량을 처리할 수 있으며, 인덱스 및 클러스터 구축 여부에 따라 RDBMS역시 테라바이트급의 데이터를 저장 및 처리할 수 있다. 반면 나머지 도구들은 메모리 한도 내에서 작업이 가능하다. 커스텀 코드의 한계는 물론 작성하기 나름이다.

하지만 1장서 언급했듯이 이런 처리 용량의 차이는 처리 속도(Response Time)와 트레이드오프를 관계에 있다. 메모리 기반의 프로그램들이 대부분 실시간에 가까운 응답 속도를 보장하는 반면, 실시간 처리에 최적화되지 않은 대부분의 빅데이터 솔루션들은 요청을 보낸 후 상당 시간을 기다려야 하기 때문이다. 특히 하둡의 경우 조직 전체에서 공유 인프라로 활용되는 경우가 많아 대기 시간이 더 길어지게 마련이다.

데이터포멧 대부분의 솔루션이 테이블 데이터를 처리할 수 있으며, 이들 테이블에는 보통 숫자, 문자열, 시간 등 다양한 데이터 형이 포함될 수 있다. 또한 대부분 테이블 형태의 데이터 처리에 필요한 필터링(filtering), 정렬(sorting), 조인(joining), 합계(aggregation) 등의 연산을 제공한다. 따라서 이런 기본 연산의 조합으로 해결가능한 데이터 처리 작업의 경우에는 기존의 솔루션을 최대한 활용하는것이 바람직하다.

맞춤/확장성 마지막으로 이들 환경에서는 필요한 경우 새로운 함수를 구현해 사용할 수 있는 다양한 프로그래밍 환경을 제공한다. 최근에는 NumPy/SciPy/Pandas/iPython을 포함하는 파이썬(Python) 기반의 솔루션이 많이 사용되고 있다. 범용 프로그래밍 언어인 파이썬의 특성상 분석에 사용한 코드를 웹서비스등 다른 시스템과 통합하기 쉬운 장점이 있다.

예측/시각화 이외에 부가적인 기능이라 할 수 있는 기계 학습 및 시각화 기능의 경우 R이나 파이썬이 가장 강력한 기능을 제공하지만, 기본적인 기능은 엑셀에서도 제공한다. 하둡이나 데이터베이스를 사용하는 경우에도 별도의 패키지를 통해 이런 기능을 제공받을 수 있다. 또한 이들 플렛폼과 별도로, 시각화 및 통계 모델링에는 많은 패키지나 라이브러리가 나와있으므로 용도에 따라 찾아 사용하도록 하자. 일반 사용자를 위한 패키지중에서는 타블로우(Tableau), 프로그래머를 위한 라이브러리 중에는 D3.js가 널리 사용되고 있다.

그렇다면 현업 실무자들은 어떤 도구를 사용하고 있을까? 오라일리 사에서 2014년에 데이터 과학에 종사하는 800여명의 현업 실무자를 대상으로 실시한 여론조사에 따르면 [@harris13] 가장 널리 사용되는 데이터 과학의 도구는 데이터베이스, 엑셀, R과 파이썬 순으로 나타났다. 본 블로그의 독자그룹을 대상으로 한 설문조사에서도 가장 많이 사용되는 도구는 엑셀 및 데이터베이스가 가장 많이 사용되는 도구로 나타났다. (본 설문은 아직 진행중이며, 설문에 참여하면 자세한 결과를 볼 수 있다.)

문제에 맞는 도구 선택하기

그렇다면 이렇게 다양한 도구중 무엇을 사용해야 할까? 우선 데이터의 크기 및 분석의 성격, 그리고 사용가능한 도구가 무엇인지가 출발점이 될 것이다. 아래 그림은 앞서 설명한 도구들을 데이터의 크기 및 사용자 인터페이스의 성격에 따라 나누어 보여준다. 그림의 오른쪽으로 갈수록 큰 데이터를 다룰 수 있고, 아래로 갈수록 프로그래밍을 많이 필요로 하는 도구들이다. 예컨대 데이터 크기가 작으며 일회성 분석 작업이 대부분이라면 엑셀을 써도 무방할 것이다.

ch2_tools_ds_choice

데이터 과학을 위한 도구를 선택하는 기준.

하지만 문제해결 과정에서 한가지 도구만 사용하라는 법은 없다. 사실 대부분의 데이터 문제는 문제해결 단계에 따라 적절한 도구를 조합해서 사용하는 능력을 요구한다. 어떤 단계에서 무슨 도구를 사용하느냐는 문제의 특성에 따라 결정되는 부분이지만 몇가지 가이드라인을 제시하면 다음과 같다.

간단한 도구로 시작하여 복잡한 도구로 옮겨간다. 위에서 살펴본 것처럼 같은 작업을 하는 데에도 메뉴 조작으로 끝나는 환경과 프로그래밍을 해야 하는 환경이 있다. 또한 프로그래밍 환경간에도 R과 같은 간단한 것과 C++와 같이 상대적으로 복잡한 것이 존재한다. 이런 선택은 개인의 경험과 선호도에 따라 결정할 부분이다. 하지만 많은 경우, 일회성 작업은 최대한 단순한 도구로 하는 것이 효율을 높이는 방법이다. 분석 작업에는 다양한 아이디어를 최대한 신속하게 실험해볼 수 있어야 하지만, 일단 검증된 분석 시나리오를 나중에 제품 수준의 코드로 구현하는 것은 어렵지 않기 때문이다.

분석 초반에 최대한 데이터 크기를 줄인다. 앞서 설명했듯이 빅데이터를 다루는 도구들은 처리용량을 키우기 위해 응답속도를 희생하는 경우가 많다. 비슷한 작업을 수정을 거쳐 계속 반복하게 되는 데이터 문제의 특성상 느린 응답속도는 작업 효율의 하락과 직결된다. 따라서, 문제해결 초기에 작업 대상이 되는 데이터의 크기를 최대한 줄이는 것이 분석에 드는 시간을 최대한 아끼는 길이다. 또한 데이터 크기가 줄어들수록 좀더 다양한 범위의 도구를 분석에 사용할 수 있다는 장점도 있다.

이해를 돕기 위해 필자가 작업 단계별로 주로 사용하는 도구를 소개하면 아래와 같다. 우선 데이터 준비 단계에서는 하둡이나 데이터베이스에 존재하는 원본 데이터에서 필요한 부분을 선택하거나 집계(aggregation), 표본추출(sampling) 등을 적용하여 최소한으로 줄인다. 그러면 보통 PC 메모리에 들어가는 정도의 크기가 되는데, 이 데이터를 엑셀이나 R에서 불러 데이터의 값이나 분포에 이상이 없는지 확인한다.

문제해결 단계별로 적절한 도구들

문제해결 단계별로 적절한 도구들

또한 데이터를 사용해 어떤 일반화된 결론을 내리거나 예측을 해야할 경우에는 다시 R이나 파이썬을 사용한다. 이때 데이터 크기가 큰 경우 하둡 등의 클러스터에서 돌아가는 예측 기법을 사용할 때도 있다. 또한 모델을 제품에 적용해야 할 경우에는 C++/C#등의 언어로 다시 구현하는 경우도 있다. 마지막으로 결과를 발표하거나 문서화할 때에는 다시 엑셀을 사용한다.

엑셀로 시작하는 데이터 과학

위에서 데이터 과학을 위한 다양한 도구를 알아보았다. 그렇다면 데이터 과학을 시작하는 여러분에게 하나의 도구를 추천한다면 무엇일까? 필자는 주저없이 엑셀을 추천할 것이다. 엑셀? 엑셀로 뭘 할 수 있냐고 여러분은 생각할지도 모른다. 하지만 데이터 과학을 처음 공부하는 입장에서 엑셀만한 툴은 없다. 또한 앞서 소개한 설문에 따르면 [@harris13] 엑셀은 SQL및 R과 함께 현업에서 여전히 가장 많이 쓰이는 도구다.

이해를 돕기 위해 카메라에 비유해보자. 필자는 엑셀을 똑딱이 디카에, R을 수동조작이 가능한 DSLR에 비유하고 싶다. 전문가의 손에 들어간 DSLR이 더 좋은 결과물을 만들어낼 수 있다는 것은 자명하다. 하지만 세상에는 아이폰 카메라만 가지고도 기가막힌 결과물을 만들어내는 작가들이 있고, 많은 사진 초보들이 DSLR 및 렌즈을 사서 익히는데 엄청난 시간과 노력을 들이지만 결과물은 신통치 않은 것도 사실이다. 즉, 도구 자체에 집착하기보다는 주어진 도구를 최대한 활용하는 것이 중요하다는 이야기다.

다시 데이터 과학으로 돌아와서 이야기하면, 엑셀은 분명 처리용량이나 고급 분석기능, 그리고 자동화 측면에서 한계가 있는 도구다. 하지만 데이터 과학을 처음 접하는 사람들이 빠른 시간에 개념을 익히고 뭔가 시작하기에 엑셀만한 도구도 없다는 것이 필자의 생각이다. 또한, 위 통계자료가 보여주듯 필자를 포함한 현업 종사자들도 엑셀을 꾸준히 사용하고 있다. 그렇다면 왜 데이터 과학을 위한 도구로 엑셀이 가진 장점은 무엇일까?

코드가 아닌 데이터가 중심이다

최근에 나온 대부분의 데이터 과학 관련 수업이나 책에서는 R이나 파이썬과 같은 프로그래밍 언어에, 빅데이터를 다루기 위한 하둡을 다룬다. 물론 이들은 엑셀보다 더 큰 데이터를 다룰 수 있고, 더 강력한 기능을 제공한다. 그리고 코드를 이용한 데이터 처리는 재사용성면에서 강점이 있다. 대부분의 전문가들이 이런 도구를 사용하는 데에는 분명 이유가 있다.

하지만, 이들은 모두 프로그래밍에 대한 지식을 전제로 한다는 공통점이 있다. 프로그래밍에 익숙치 않은 많은 사람들에게 새로운 언어를 공부한다는 것은 분명 큰 부담이다. 데이터 과학에 관심이 있는 모든 사람들이 R이나 파이썬 문법부터 익혀야 한다면 몇명이나 성공할 수 있을까. 이전 글에서 밝혔듯이 효과적인 데이터 과학은 문제 정의에서 출발해야 한다. 그리고 문제 및 데이터의 종류에 따라 엑셀로도 충분한 경우가 있을 것이다. 마치 분석 작업의 효율을 위해서는 스몰데이터로 시작해야 하듯이, 엑셀로 시작하고 필요에 따라 더 강력한 도구를 배워 사용하면 어떨까?

또한 이런 프로그래밍 기반의 도구를 사용해 데이터를 처리하다보면 자칫 원본 데이터의 다양한 특성과 잠재적인 문제점을 간과할 수 있다. 대부분의 시간을 코드를 작성하고 실행하는데 보내다 보면, 원본 데이터 대신 이미 각종 집계 및 분석 기법이 적용된 결과에만 초점을 맞추기 쉽기 때문이다. 이렇게 분석을 한참 진행한 후에 원본 데이터의 문제점을 발견하는 경우도 허다하다.

반면 엑셀 등 스프레드시트애서는 워크시트에 로딩된 원본 데이터를 꼼꼼히 살피면서 작업할 수 있다. 즉, 코드가 아니라 데이터가 중심이 되는 것이다. 그래서 현업에서 R 및 파이썬과 같은 도구를 일상적으로 사용하는 필자도 코딩을 하기 전에 샘플 데이터를 엑셀로 불러 검증하는 습관이 있다. 즉, 프로그래밍을 아는 사람들에게도 엑셀은 쓸모가 있는 도구다.

올인원(all-in-one) 솔루션이다

엑셀은 기능면에서 데이터 과학의 스위스 아미 나이프와 같다. 스위스 아미 나이프 하나에 온갖 툴이 다 들어있듯이, 데이터 과학의 전과정을 엑셀로 해볼 수 있기 때문이다. ^[하지만 스위스 아미 나이프에 있는 툴들이 본격적인 작업을 위해서는 부족하듯이, 엑셀의 기능도 고급 사용자에게는 부족한 점이 많다.]

우선 엑셀을 통해 데이터를 직접 입력하거나 온라인 폼(form)을 통해 데이터를 모을 수 있다. 이 과정에서 데이터의 중복이나 오류를 검증할 수 있다. 또한, 데이터에 필요한 컬럼을 손쉽게 추가할 수 있고, 이를 필터링하거나 피벗테이블을 통해 집계하는 것도 가능하다.

또한 엑셀은 아쉬우나마 기본적인 데이터 분석 기능을 제공한다. 엑셀에 기본으로 제공되는 분석 도구모음(Analysis Toolpak)을 사용하면 히스토그램(histogram), 가설 검증(hypothesis testing), 연관성 및 회귀 분석(correlation and regression), 시계열 예측 (forecasting) 등 다양한 분석 기법을 사용할 수 있다.

엑셀에서 제공하는 다양한 분석 기능

엑셀에서 제공하는 다양한 분석 기능

또한 엑셀은 다양한 시각화 기능을 제공한다. 셀 단위의 시각화 (조건부 포메팅 / 스파크차트)는 다른 분석도구에서는 찾아보기 힘든 기능으로 데이터를 직접 보면서 패턴을 찾기에 유용하다. 또한 몇가지 제약에도 불구하고 엑셀의 기본적인 플로팅 기능은 쓸만한 수준이다. 최근 버전의 엑셀에서는 파워피봇(PowerPivot) 등을 통해 좀더 강력한 시각화 기법을 사용할 수 있다. 파워피봇을 사용하면 시간이나 지도상의 데이터까지 손쉽게 플로팅할 수 있다.

엑셀에서 제공하는 다양한 시각화 기능

엑셀에서 제공하는 다양한 시각화 기능

반면에 R과 같은 대부분의 범용 도구들은 이미 수집이 완료된 데이터를 다룬다. 또한 데이터 저장, 분석, 시각화 등 특정한 분야에 집중하는 도구도 많다. 이 경우 단계별로 도구를 바꿔야 하고, 이를 위해 데이터를 변환하는 수고가 들어간다. 이에 반해 부족하나마 하나의 도구로 데이터 과학의 전 과정을 수행할 수 있다는 것은 분명 장점이다.

결과물을 쉽게 공유할 수 있다

지난번 글에서 강조했듯이, 데이터 과학의 전 과정에서 이해당사자 및 다른 분야의 전문가와 끊임없이 소통하는 것은 필수적이다. 이런 관점에서 전통적인 프로그래밍 기반의 도구들의 문제점은 분석의 최종 결과를 제외한 중간 과정과 결과물을 다른 사람과 공유하기가 쉽지 않다는 점이다. 보통 분석용 코드는 일회용으로 생각하기 때문에 주의하지 않으면 작성자 이외에는 알아보기 힘든 경우가 많고, 주석을 꼼꼼히 달아도 프로그래머가 아니면 이해하기 어렵기 때문이다.

최근에는 KnitriPython Notebook과 같은 도구가 등장하여 이런 문제를 부분적으로 해결해준다. 이런 도구를 사용하면 분석용 코드와 관련 문서를 동시에 생성할 수 있기 때문에, 분석용으로 R과 파이썬을 주로 사용한다면 꼭 알아야할 도구들이다. 하지만 이를 위해서는 추가적인 노력이 필요하고 비전문가에게는 여전히 쉬운 솔루션이 아니다.

반면에 엑셀은 결과물이 (당연히) 문서이기 때문에 조금만 주의하면 쉽게 공유할만한 결과물을 만들 수 있다. 또한 의사결정권자를 포함한 대부분의 사람들이 엑셀을 사용할 것이다. 따라서 엑셀로 데이터를 공유하면 누구나 그 중간과정을 검토하고 문제점을 발견하거나 개선하는데 참여할 수 있다. 또한 데이터를 다루는 많은 도구들이 엑셀 포멧을 기본적으로 지원한다. 즉, 데이터 처리 및 분석 과정의 투명성을 극대화할 수 있는 것이다. 데이터 분석을 한참 진행하다가 앞단계의 오류로 지금까지의 노력이 물거품이 되어본 사람이라면 이런 투명성의 중요함을 이해할 것이다.

엑셀에서 R로 넘어가기

위에서 알아본 것처럼 엑셀은 데이터 과학을 시작하기 위한 도구로서 적합하며, 현업 전문가들도 엑셀을 지속적으로 활용하는 이유가 있다. 하지만 아이가 자라면서 원래 입던 옷이 몸에 맞지 않게 되듯이, 데이터를 문제해결에 본격적으로 활용하다보면 엑셀만으로는 부족함을 느끼게 된다. 혹은 앞서 사용했던 디카의 비유를 적용하면 똑딱이 디카를 쓰던 사용자가 품질과 기능의 한계를 느끼는 상황이라고 할 수 있겠다.

이럴 때 프로그래밍 기반의 데이터 처리 도구를 찾게 되는데, 엑셀만 사용하던 사용자에게는 굉장히 낯선 경험일 것이다. 여기서는 이중 가장 널리 사용되는 R을 중심으로 이런 도구들이 엑셀과 어떻게 다르고 어떤 가능성을 추가적으로 제공하는지 알아보도록 하자. 이를 통해 현재 엑셀을 주로 사용하는 사용자들이 R이 과연 자신에게 필요한지를 고민해볼 수 있기를 바란다.

워크시트에서 변수로

우선 엑셀을 쓰다가 R을 시작한 사용자가 크게 느끼는 변화 중 첫번째는 워크시트 대신에 입력창만이 존재한다는 것이다. 엑셀에서는 데이터를 입력하거나 불러오고, 계산의 중간 과정 및 최종 결과를 저장하는데 모두 거대한 테이블 형태의 워크시트를 사용하지만, R에서는 워크시트를 제공하지 않기 때문이다. 반면에 R을 포함한 모든 프로그래밍 언어에서는 변수라는 개념을 사용한다. 이런 변수는 작업공간에 존재하지만 고정된 위치를 갖지는 않으며, 벡터, 행렬, 테이블 등 고유의 자료형을 갖는다.

그렇다면 변수를 어떻게 만들고 사용할 수 있을까? R에서는 모든 변수를 만들때 고유의 이름을 붙이도록 한다. 따라서 나중에 변수의 내용을 참조할 때에는 그 이름을 사용하면 된다. 사실 엑셀에도 셀 혹은 테이블에 이름을 붙여서 참조할 수 있는 기능이 있으니, R에서는 모든 데이터를 위치가 아닌 이름으로 참조한다고 기억하면 된다. 아래 그림은 같은 데이터를 엑셀과 R에서 어떻게 저장하는지를 보여준다.

ch2_excel_vs_r_vars

엑셀의 워크시트와 R의 변수: 워크시트는 위치를 기준으로 참조하지만, 변수는 이름을 기준으로 참조한다.

그렇다면 이렇게 워크시트 대신 변수를 쓰는 방식의 장점은 무엇일까? 데이터의 크기와 종류가 얼마 되지 않을때는 모든것을 한눈에 보면서 작업할 수 있는 워크시트가 더 편리할 것이다. 하지만, 크고 복잡한 데이터를 다루는 프로젝트의 데이터를 워크시트에 관리하다보면 잦은 스크롤과 버벅임 등으로 오히려 불편함을 느끼게 된다. 또한 변수를 셀의 위치로 참조하는 방식도 복잡한 워크시트에서는 오류의 가능성을 높인다.

따라서 엑셀의 전문가들은 모든 셀과 테이블에 이름을 붙여 관리하는 것을 추천한다. 이렇게 하면 굳이 크고 복잡한 워크시트 사이를 오갈 필요가 없기 때문이다. 그리고 R과 같은 프로그래밍 환경에서는 아예 워크시트 대신에 모든 것을 고유의 이름과 자료형을 가진 변수로 대신하는 것이다.

요약: 워크시트의 모든 데이터에 이름을 붙이지 않으면 기억할 수 없는 수준이라면 R을 고려해보자.

메뉴에서 함수로

엑셀에 비해 R의 또다른 차이는 리본과 메뉴의 부재다. 엑셀에서 메뉴를 선택해서 수행할 대부분의 작업이 R에서는 함수 호출을 통해 이루어지기 때문이다. 이런 함수에는 데이터를 불러오거나 저장하고, 특정한 연산이나 분석 기능을 수행하고, 또한 주어진 데이터를 시각화하는 기능이 모두 포함된다. 즉, 엑셀에서는 데이터 처리와 관련된 기능중 일부를 함수형태로 제공하는데 비해 R은 모든 기능이 함수를 통해 구현되는 것이다.

ch2_excel_vs_r_funs

엑셀과 R비교: 메뉴와 함수

언뜻 메뉴를 선택하는 대신에 함수를 기억해서 입력하는 방식은 불편하게 들린다. 하지만 R에 익숙해진 사용자들은 입을 모아 함수가 더 편리한 방식이라고 이야기한다. 왜 그릴까?

작업의 효율성 엑셀과 같이 수행할 기능을 메뉴에서 선택하는 방식은 처음에는 손쉽게 기능을 배울 수 있다는 장점이 있다. 하지만, 복잡한 작업을 메뉴와 워크시트를 오가며 수행하다 보면 금방 지치게 되고, 또 같은 작업을 계속 반복한다고 그만큼 효율이 올라가지는 않는다. 즉 메뉴 기반의 프로그램은 반복되는 작업에는 한계를 드러내는 것이다. 엑셀에서는 이런 반복되는 작업을 위해 매크로 기능을 제공한다. 하지만 매크로는 데이터의 형태나 기능이 조금만 달라져도 금방 한계를 드러낸다.

반면에 데이터 처리 코드를 통해 작업을 수행하는 방식은, 일단 작성된 코드를 손쉽게 반복 호출할 수 있다는 장점이 있다. 예컨데 원본 데이터에 10단계의 처리를 해야 데이터 가공이 완료된다고 하자. 메뉴로 작업하는 경우 데이터가 갱신될때마다 상당 부분의 작업을 다시해야 하지만, 코드로 작업하는 경우 이미 작성된 코드에 입력 데이터만 바꾸어 다시 실행하면 되는 것이다.

기능의 확장성 데이터 처리를 하다보면 기본적으로 지원되는 기능이외에 추가적인 작업을 해야하는 경우가 종종 생긴다. 예컨데 엑셀은 주어진 텍스트 문서를 단어 단위로 쪼개 단어별 개수를 세는 기능을 제공하지 않는다. 이처럼 엑셀과 같은 메뉴 기반으로 프로그램은 주어진 기능으로 해결되지 않는 작업에 있어서 한계를 드러낸다. 엑셀에서는 VBA라는 프로그래밍 환경을 제공한다. 하지만, 이를 위해서는 VBA라는 또다른 프로그래밍 환경과 언어에 익숙해져야 한다.

반면에 R에서는 기존에 존재하는 함수를 조합하여 얼마든지 새로운 함수를 만들 수 있다. 그리고, R에서는 전세계의 R 사용자들이 이미 만들어놓은 다양한 기능을 CRAN이라는 곳에서 찾아 사용할 수 있다. 대부분의 통계 및 데이터 전문가들이 R을 사용하기 때문에, CRAN에는 데이터에 관련해 상상가능한 거의 모든 기능이 제공된다.

요약: 매크로나 VBA를 항상 써야하는 수준이라면 R을 고려해보자.

분석에서 예측으로

마지막으로 엑셀과 R의 기능적인 차이를 알아보자. 앞서 설명한대로 엑셀은 기본적인 데이터 분석 및 시각화 기능을 제공한다. 하지만 엑셀에서 제공하는 기능은 전문적인 데이터 관련 작업을 하기에는 부족한 점이 있다. 시중에는 이를 보완해주는 애드온(add-on) 패키지가 몇가지 나와 있지만, 대부분 유료인데다 그 종류가 아주 다양하지도 않다.

이를 좀더 구체적으로 알아보면, 엑셀은 T-test나 선형회귀분석(Linear Regression)같은 기본적인 통계 기능은 제공하지만, 분류 및 군집화와 같은 기계학습 관련 기능은 제공하지 않는다. 또한, 데이터 시각화 기능에 있어서도 엑셀은 이용가능한 시각화의 종류나 자유도 면에서 제약이 있다.

요약: 고급 통계나 기계학습 등의 기능을 써야하는 수준이라면 R을 고려해보자.

맺음말

이번 글에서는 널리 쓰이는 데이터 처리 및 분석도구의 장단점을 알아보고, 이를 적절히 조합하여 업무에 활용하는 방법을 사례로 알아보았다. 데이터를 다루는 수많은 툴이 존재하며 이들 각각이 다른 특성과 한계를 지니는 만큼, 용도에 적합한 도구를 선택하는 일은 중요하다. 또한, 데이터를 다루는 일이 대부분 여러 단계를 거치게 되므로, 각 단계에 맞는 도구를 선택하여 조합하는 능력도 필요하다.

이번 글에서는 또한 널리 사용되는 데이터 관련 도구 중 엑셀과 R을 간단히 소개했다. 이미 많은 독자들이 친숙하게 여길 엑셀의 데이터 과학을 위한 도구라는 관점에서 다시 살펴보았고, 엑셀에서 좀더 전문가용 솔루션인 R로 넘어가려고 할때 고려해야 할 사항을 알아보았다. 그리고 R과 엑셀이 인터페이스 측면에서는 상이하지만, 개념적으로는 비슷하다는 점을 설명했다. 다음 글에서는 좀더 구체적인 사례를 가지고 엑셀과 R을 비교해볼까 한다.

이전 글에서 스몰데이터의 가치를 강조했듯이 필자의 견해는 데이터과학을 배우려는 모든 사람들이 모두 프로그래밍을 해야할 필요는 없다는 것이다. 하지만 마치 DSLR 카메라가 일반인을 겨냥하여 좀더 쉬운 사용법에 강력한 기능을 제공하듯이, R과 같은 도구들은 좀더 강력하고 편리한 형태로 진화를 거듭하고 있다. 따라서 데이터 과학자로서의 진로를 생각하는 사람들은 필히 이런 도구에 관심을 가져야 할 것이다.

추신: 이 글은 권정민 / 최현우님의 피드백을 거쳐 작성되었습니다. 제 글의 초고는 독자그룹 여러분들께 먼저 보내드립니다.

참고문헌

Harlan Harris, Marck Vaisman, Sean Murphy. 2013. “Analyzing the Analyzers: An Introspective Survey of Data Scientists and Their Work.” O’Reilly Free Report.
Norman, Donald A. 1993. Things That Make Us Smart: Defending Human Attributes in the Age of the Machine. Basic Books.