데이터사이언스 - Data Science

데이터사이언스, 데이터과학 - Data Science

데이터과학 또는 데이터 사이언스(Data Science)는 일반적인 컴퓨팅 기술 + 분산 컴퓨팅 기술 + 데이터 마이닝 + 기계학습 + 데이터 분석(통계, 수학)에 해당하는 학술분야를 다 관통하면서 아우르는 것들을 통칭하기 위해서 다소 상업적인 의도로 만들어진 용어다.

전통적인 데이터 분석은 즉 통계학에서는 표집(sample)된 데이터를 주로 다루는데 표집데이터는 대부분 작다. 하지만 빅데이터라고하는 최근의 데이터들은 사이즈가 매우 크고 이런 대량의 데이터를 프로세싱하는 것은 컴퓨팅 연산(computation power)을 많이 소모하고 처리하는데 많은 시간을 소모하는 것이 당연했다. 빅데이터 기술이 나오기 전에는 이런 데이터를 처리하기 위해서 수퍼컴퓨터와 같은 고성능 컴퓨터를 사용하거나 긴 시간동안 데이터 프로세싱과 연산을 수행해서 결과를 산출했었다. 하지만 빅데이터 기술과 함께 분산컴퓨팅이 고도화되고 일반화되면서 이런 제약이 점차 사라지게 되었다. 데이터 증가량과 활용 욕구 또한 함께 증가하고 있기 때문에 이 문제가 완전히 해결된 것은 아니지만 데이터를 처리하는 속도가 데이터양이 증가하는 것에 비해서 더 빨라지고 있다. 이런 분산컴퓨팅환경에서의 데이터분석과 현대의 비즈니스는 아주 새롭지는 않지만 기존에 나눠서 했던 작업을 한꺼번에 융합해서 하는 작업을 요구하게 되었고, 그것을 데이터과학(data science)이라고 부를 수 있다.

데이터사이언스와 빅데이터 - Data science and Big data

데이터사이언스라는 용어가 출현한 것은 빅데이터(Big data)라는 용어가 출현한 시기와 비슷한 시기이다. 빅데이터와 함께 유행이 된 이유는 데이터사이언스가 빅데이터와 밀접한 관련이 있기 때문이다. 빅데이터는 분산컴퓨팅, 기계학습, 데이터마이닝, 대용량 데이터프로세싱을 함께 다루는 기술, 플랫폼, 방식을 통칭하는 것인데 빅데이터를 잘하기 위해서는 다양한 능력이 요구된다. 프로그래밍 능력, 분산컴퓨팅 활용을 위한 컴퓨터 공학기술, 데이터분석을 위한 통계학, 기계학습을 위한 수학과 같은 것들이다. 이런 작업을 동시에 할 수 있는 사람은 당시에 상당히 드물었으며 그런 사람들을 가르키는 용어는 기계학습 엔지니어, 컴퓨터 과학자와 다소 협소한 의미로 오해받을 용어로 불렀지만 그런 개념을 재정돈해서 새로 만든 용어가 데이터사이언티스와 데이터사이언티스트(Data scientist)라고 할 수 있다.

빅데이터의 출발과 데이터사이언스의 출현 - Begining of Bidata

빅데이터가 출현한 것은 과거를 회고해서 생각하면 당연한 것이라고 볼 수 있다. 초기의 인터넷은 온라인으로 네트워크를 통해 공간제약이 없이 여러사람이 만든 콘텐츠를 조회하고 공유할 수 있는 것으로 출발했지만 인터넷이 발전하면서 사용자들이 인터넷에서 많은 행동을 하게 되었고 여러 인터넷을 기반으로 한 여러 서비스와 사업모델이 개발되었다.

인터넷 서비스들은 서비스운영과 디버깅을 위해서 사용자의 행동에 대한 데이터를 기록해 둘 수 밖에 없는데 인터넷 사용이 증가하면 서비스에 접속한 사용자의 행동으로 부터 나오는 로그데이터와 사용자들이 생산해내는 컨텐츠 등이 쌓이면서 엄청나게 많은 양의 데이터가 축적되었다.. 처음에 인터넷 서비스를 하던 업체들은 초창이게 이렇게 많은 데이터를 사용하지 않고 그대로 휘발시켰다.

그러던 중 이 데이터로부터 쓸만한 것들을 찾아서 활용하는 시도가 생겼고 효과를 보는 곳이 생겼고 그런 것이 퍼져 사용자가 남긴 로그 데이터를 활용하는 시도와 활용에 대한 여러 시도들이 이어졌다. 하지만 양적으로도 종류도 다양한 이런 많은 데이터를 사용해서 쓸만한 사실을 찾고 가치를 찾기 위해서는 대량의 데이터를 빠른 시간안에 처리할 수 있는 분산컴퓨팅기술이 필요하게 되었다. 그리고 기계학습, 인공지능, 통계학을 활용해서 이 많은 데이터를 가치화(Monetization)하고 직접 또는 간접적으로 비즈니스에 변화를 주기도 하고 새로운 비즈니스를 만들어서 돈을 벌기 위한 시도가 지속적으로 진행됐다.

이런 작업들을 현재는 모두 통칭해서 데이터사이언스라고 부른다. 그리고 그런일을 하는 사람들을 데이터사이언티스트라고 새로 부르게 되었다.

데이터사이언스에 필요한 스킬 - Data scientist skill set

데이터사이언스을 하기 위해서는 다양한 스킬들이 필요이다. 다음과 같은 것들이 주로 필요한 스킬이다.

통계 - statistics

통계학은 오랜 전통을 가지고 있으며 그 자체로 데이터를 분석하기 위한 학문이라고 할 수 있다. 데이터사이언스라는 일에서 가장 중요한 것은 데이터를 분석하는 작업이며 분석에 필요한 많은 것들을 통계학을 통해서 얻을 수 있다. 때문에 데이터사이언티스트는 통계학에 대한 지식이 많이 필요하다. 하지만 통계학은 배우기 어려운 학문 중에 하나이며 분량이 매우 방대하고 오랫동안 공부하지 않으면 쉽게 이해할 수 없는 난해한 것들도 많다. 처음에는 기초지식을 익힌 후에 필요한 것들을 확장해서 배우고 꾸준히 익혀야 한다. 통계학의 모든 것을 한 사람이 다 아는 것은 너무나도 어려울 만큼 방대하고 어려운 분야이다.

ICT기술 - Information and Communication technology

컴퓨터 자원 활용 능력을 말한다. Linux, Windows server를 잘 다룰 수 있고, 터미널(Terminal)에서 명령어를 통해 Linux/Unix 환경에서 원할하게 작업을 할 수 있어야 한다. 몇개의 스크립트언어(Script language)를 잘 다루어야 하고 때로는 소프트웨어 개발이나 플랫폼에 관련된 개발도 어느 정도 할 수 있어야 한다. Excel, Powerpoint와 같은 사무용 소프트웨어도 잘 다룰 수 있어야한다.

컴퓨터 활용 능력은 데이터사이언스에 있어서는 실행능력과 같은 것이다. 자신의 생각이나 아이디어를 즉시 실행해서 확인하기 위해서는 스스로 컴퓨팅 자원을 구성하고 활용해서 데이터에 어떤 처리를 해서 알고자 하는 사실을 알아내거나 증명하고자 하는 가설을 확인해야 한다.

빅데이터와 분산컴퓨팅 기술 - Big data nd Distributed computing technology

앞에서 말했듯이 대용량 데이터 처리를 위한 기술은 현대의 데이터 처리에서 필수적으로 필요하다. 현대의 데이터는 이미 대용량이 된지 오래이다. 1대의 컴퓨터에 장착된 연산 자원과 저장 장치로는 분석의 대상이 되는 데이터를 모두 저장하고 분석을 할 수 있는 환경이 되었다. 여러 대의 컴퓨터를 연결해서 데이터를 분산해서 저장하고 데이터 처리 및 계산도 분산해서 처리해야 하는 시대가 된 것이다.

분산 컴퓨팅은 과거에는 사용하기 매우 어려운 기술이었고 설비를 갖추기 위해서 비용도 많이 필요했지만 Hadoop과 그 에코시스템(Echo system; Hadoop과 관련된 분산컴퓨팅 관련 소프트웨어들) 및 유사 소프트웨어들이 많이 생겨나고 각광을 받기 시작했고 그와 더불어 하드웨어의 가격이 낮아지고 성능이 점점 높아지게 되었다. 그 결과로 모두가 어렵지 않게 분산컴퓨팅을 사용할 수 있도록 일반화가 많이 되었다. 하지만 여전히 분산컴퓨팅을 사용하기 위해서는 역시 많은 연습과 활용에 필요한 제반 지식이 필요한 것이 문제이다.

이제 분산컴퓨팅 환경에서 작업을 할 수 없다면 현실에서 데이터 분석이 어려운 상황에 맞닥드리는 경우가 많아질 것이다.

Hadoop, Hive, Spark, Storm, Kafka와 같은 분산 컴퓨팅과 BigQuery, RedShift와 같은 클라우드컴퓨팅에서 제공하는 관리형 솔루션도 가리지 않고 잘 사용할 수 있어야 한다.

분산컴퓨팅에 관련된 모든 소프트웨어 플랫폼을 다 배우고 활용할 수는 없겠지만 상황에 맞게 적절한 것을 빨리 도입해서 사용하고 문제를 해결할 수 있는 능력이 필요하다. 그리고 그 중에 몇가지는 자신의 주력 플랫폼으로 사용할 수 있어야 한다.

기계학습 및 데이터마이닝 기술 - Machine learning and Data mining

컴퓨터를 활용해서 어떤 가치를 찾는 작업이 분표을 통해서 통찰(insight)를 찾는 것에서 추가로 뭔가를 해야 한다면 자동화(automation)이 필요하다. 기계학습은 대표적인 자동화이다. 데이터마이닝 또한 데이터에서 가치를 찾는 작업을 일부 자동화한 것이라고 볼 수 있다. 자동화 기술은 구현된 이후에는 편하게 사용할 수 있지만 구현 작업 자체는 매우 어렵다. 기계학습은 빅데이터와 데이터사이언스에 있어서는 필수라고 할 수 있으며 기계학습 기술이 포함된 데이터마이닝 기술 역시 필수라고 할 수 있다.

데이터시각화 - Data visualization

분석 결과의 적절한 표현이 필요하다. 무엇을 하던지 시각적으로 표현해 주지 않으면 사람이 빨리 이해하는 것은 어려운 일이다. 데이터 분석 결과나 기계학습의 모형에 대한 성능 확인, 시뮬레이션 등을 하기 위해서는 데이터의 상태와 모형의 결과를 눈으로 확인하기 위한 시각화가 사람에게는 매우 유욤하다. 또 동적인 시각화를 위해서 Javascript를 이용한 웹개발 기술도 필요하다.

또한 의뢰인, 고객 또는 매니저와 같은 사람들에게 분석결과를 효과적이고 빠르게 설명하기 위해서는 데이터시각화가 좋은 수단 중 하나이다.

수학 - Mathematics

데이터사이언스를 배우는 것은 수학에서 시작해서 기계학습과 분산컴퓨팅을 거치고 통계학에서 관통해서 다시 수학으로 끝난다고 할 수 있다.

수리적 능력 및 여러가지 문제 해결 능력에 당연히 필요한 것이 수학이다. 데이터사이언스에 관련된 일을 오래하다고 보면 알고리즘이나 모형의 깊숙한 부분을 보거나 수리적 모형을 고민해야 할 때 항상 마지막에 부딪히는 것은 수학이다. 수학은 모든 과학과 공학의 기본이라고 할 수 있다.

특히 선형대수학, 미적분, 미분방정식까지는 어느 정도의 지식을 쌓아두어야 하며 위상수학과 해석학을 비롯한 다른 대수들도 알아야 할 수 있다.

비즈니스 지식 - Domain Knowledge

관련된 비즈니스에 대한 상당한 수준의 전문 지식이 있어야 한다. 보통의 직장이라면 회사의 주력 비즈니스에 따라서 전문 업무 지식이라는 것이 필요하게 된다. 예를들어 통신회사에 근무하고 있다면 통신 비즈니스에 관해서 알아야 하며 관련 기술 지식도 습득해야 한다. 자동차 회사에 근무하고 있다면 자동차의 부품, 조립, 생산 및 기술에 대해서 알아야 할 것이다. 업무 지식이라고 할 수 있는 도메인 지식이 없다면 데이터사이언스의 큰 장애가 된다.

도메인 지식은 자신이 근무하는 회사의 주력 사업이나 연구소의 주력 연구 분야 또는 창업을 준비하고 있다면 그 사업 분야의 것이 되기 마련이다. 각 도메인과 관련된 일을 실제로 하지 않는다면 학습을 해서 배우기는 매우 어려우므로 각자의 상황에 따라 달라질 것이다.

위의 기술들을 한 사람이 익히는 것은 매우 힘든 일이다. 학습에 시간도 많이 소요되며 학습량도 매우 많다. 그래서 데이터사이언티스트의 수는 현재에도 아직 그 수가 적은 편이다. 물론 데이터사이언티스트에게 필요한 스킬을 갖추지 못하고 스스로 데이터사이언티스트라고 주장하는 사람들도 있다. 하지만 그런 사람들은 실제 업무 환경에서 문제해결을 할 수 없는 경우가 많다. 그래서 이 모든 것을 꿰뚫어서 한 번에 이해하고 처리할 수 없으면 현재는 데이터사이언티스트(Data scientist)가 되기 어렵다.

이 모든 것을 한꺼번에 다 익힐 수는 없겠지만 차근차근 익히고 연습한다면 모두가 데이터사이언티스트가 될 수 있을 것이라고 믿는다. 시간이 필요한 것들은 시간을 들여서 천천히 익혀야 하고 쉽게 배울 수 있고 쉽게 활용할 수 있는 것은 쉽게 하면서 점차적으로 데이터사이언티스트가 될 수 있도로 노력하는 것이 바람직한 방향일 것이다.