데이터과학 - Data Science

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

데이터과학 또는 데이터 사이언스(Data Science)는 일반적인 컴퓨팅 기술, 분산 컴퓨팅 기술, 데이터 마이닝, 기계학습, 인공지능, 데이터 분석, 통계학, 수학, 시각화에 해당하는 학술분야를 융합해서 실무에 활용할 수 있게 응용하고 이렇게 융합된 것을 아울러 통칭하기 위해서 만들어진 용어이다. 실리콘밸리의 IT산업에서 흔히 행해왔던 유행을 유발하기 위한 것이라는 비판도 있다.

데이터과학 이라는 것은 새로 생겨난 것이 아닌 기존에 있던것을 명확하게 하고 과학이라는 단어를 더해 사람들에게 조금 더 대단해 보이게 하려는 의도로 만들어진 용어라는 시각이 많다. 하지만 컴퓨터 공학을 실리콘 밸리 및 미국의 대학교에서는 컴퓨터 사이언스(Computer Science)라고 말하기 때문에 데이터과학이라는 것도 과학이라는 단어를 붙였다고 무리한 용어라고 할 수는 없다.

앞서 말했지만 데이터과학이라는 용어가 생겨난 것은 전통적인 데이터 분석과의 차별화를 위한 의도가 포함되어 있는데 전통적인 데이터 분석, 즉 통계학을 중심으로 한 수치 분석(analysis)은 샘플(표집, sample)된 데이터를 주로 다루는데 이런 샘플 데이터(sample data)는 대부분 IT자원(컴퓨터)에 저장되는 용량이 작다.
물론 통계학이 이런 작은 데이터를 통해 모집단을 추측하고 어려운 결정 문제를 해결하는데 가장 적합하기는 하다.

하지만 대량의 데이터를 다뤄야 하는 것은 통계학에만 관련된 것이라 아니라 컴퓨터공학에서는 현실적으로 큰 장벽이 되었다. 2010년 즈음을 기준으로 만들어지는 데이터와 저장하는 데이터는 매우 커지고 이런 대량의 데이터를 프로세싱하는 것은 컴퓨팅 연산(computation power)을 많이 소모하고 처리하는데 많은 시간을 소모하는 것이 당연했다. 빅데이터 기술이 나오기 전에는 이런 데이터를 처리하기 위해서 수퍼컴퓨터와 같은 고성능 컴퓨터를 사용하거나 하나의 어떤 처리를 완료해서 결과를 받기까지는 긴 시간동안을 소모해야 했다. 이렇게 긴 처리(process)를 실행해야 한다면 반복작업이 많은 데이터분석, 기계학습과 같은 것은 만족할 만한 결과를 찾을 때 까지 너무 많은 시간이 걸려 사실상은 불가능했었다.

하지만 [[30.bigdata/_index|빅데이터]] 기술과 함께 분산컴퓨팅이 고도화되고 일반화도되면서 비교적 저렴한 가격으로 대량의 데이터를 처리할 수 있는 방법으로 이런 제약이 점차 사라지게 되었다. 데이터 증가량과 활용 욕구 또한 함께 증가하고 있기 때문에 이 문제가 완전히 해결된 것은 아니지만 데이터를 처리하는 속도가 데이터양이 증가하는 것에 비해서 더 빨라지고 있다. 이런 분산컴퓨팅환경에서의 데이터분석과 현대의 비즈니스는 아주 새롭지는 않지만 기존에 나눠서 했던 작업을 한꺼번에 융합해서 하는 작업을 요구하게 되었고, 그것을 데이터과학(data science)이라고 부를 수 있다.

즉 전통적인 분석은 통계학을 중심으로 샘플을 중심으로 추론 등에 중심을 둔다고 하면 빅데이터는 대량의 데이터를 처리하고 실시간으로 활용하며 기계학습과 같은 것을 더불어 사용한다.

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

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

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

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

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

그러던 중 이 데이터로부터 쓸만한 것들을 찾아서 활용하는 시도가 생겼고 효과를 보는 곳이 생겼고 그런 것이 퍼져 사용자가 남긴 로그 데이터를 활용하는 시도와 활용에 대한 여러 시도들이 이어졌다. 하지만 양적으로도 종류도 다양한 이런 많은 데이터를 사용해서 쓸만한 사실을 찾고 가치를 찾기 위해서는 대량의 데이터를 빠른 시간안에 처리할 수 있는 분산컴퓨팅기술이 필요하게 되었다. 그리고 기계학습, 인공지능, 통계학을 활용해서 이 많은 데이터를 가치화(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

관련된 비즈니스에 대한 상당한 수준의 전문 지식이 있어야 한다. 보통의 직장이라면 회사의 주력 비즈니스에 따른 전문 업무 지식이라는 것이 필요하게 된다. 예를들어 통신회사에 근무하고 있다면 통신 비즈니스와 통신 설비, 통신 프로토콜, 통신 상품에 관해서 알아야 하며 학습을 통해 고급 지식도 습득해야 한다. 자동차 회사에 근무하고 있다면 자동차의 부품, 조립, 생산 및 각종 유닛, 역학 기술, 엔지니어링 등에 대해서 알아야 할 것이다. 업무 지식이라고 할 수 있는 도메인 지식이 없다면 데이터 사이언스는 실제로 사상누각이 되며 기술을 활용해서 성취를 얻기 어렵다.

도메인 지식은 자신이 근무하는 회사의 주력 사업이나 연구소의 주력 연구 분야 또는 창업을 준비하고 있다면 그 사업 분야와 관련된 지식이 되기 마련이다. 각 도메인과 관련된 일을 실제로 하지 않는다면 학습을 해서 배우기는 매우 어려우므로 각자의 상황에 따라 달라질 것이다. 즉 자신의 환경에서 얻을 수 있는 도메인 지식을 최대한 얻은 상태여야 데이터 사이언스도 잘 할 수 있다.

여러 지식과 기술의 융합

위에서 나열한 기술, 한묵, 지식들을 한 사람이 익히는 것은 매우 힘든 일이다. 학습에 시간도 많이 소요되며 학습량도 매우 많다. 그래서 데이터사이언티스트의 수는 아직까지도 적은 편이다. 물론 데이터사이언티스트에게 필요한 스킬을 갖추지 못하고 스스로 데이터사이언티스트라고 주장하는 사람들도 있다. 하지만 그런 사람들은 실제 업무 환경에서 문제해결을 할 수 없는 경우가 많다. 즉 현실에서 데이터사이언티스트가 풀어야 할 문제는 복합적이고 어렵고 결과를 장담할 수 없는 것들이 많다. 단순히 기계학습 모델을 만들고 정확도를 평가하고 모델을 실제로 전개하는 것 만으로 데이터사이언티스트 업무의 전체라고 말할 수 없다.

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