데이터과학 또는 **데이터 사이언스(Data Science)**는 컴퓨팅 기술, 분산 컴퓨팅, 데이터 마이닝, 기계학습, 인공지능, 데이터 분석, 통계학, 수학, 시각화 등 다양한 학문 분야를 융합하여 실무에 활용하는 응용 과학입니다. 실리콘밸리의 IT 산업계에서 주목을 끌기 위해 상업적인 의도로 만들어진 용어라는 비판도 있습니다.
데이터과학은 새로운 학문이 아니라 기존의 데이터 분석과 해석을 더 체계적이고 과학적으로 수행하기 위해 과학이라는 단어를 추가한 것입니다. 일부에서는 단순히 사람들에게 더 대단해 보이게 하려는 의도로 만들어진 용어라고 비판하기도 합니다.
하지만 컴퓨터공학을 미국의 실리콘밸리나 대학에서 컴퓨터사이언스(Computer Science)라고 부르는 것처럼, 데이터과학이라는 용어에 과학이라는 단어를 붙인 것은 자연스러운 흐름이라고 볼 수 있습니다.
데이터과학이라는 용어는 전통적인 데이터 분석과의 차별화를 위해 만들어졌습니다. 전통적인 데이터 분석은 통계학을 중심으로 한 응용 수학과 수치 분석으로, 주로 샘플링된 작은 규모의 데이터를 다룹니다.
통계학은 이런 작은 규모의 데이터를 통해 모집단을 추측하고 복잡한 의사결정 문제를 해결하는 데 매우 효과적입니다. 하지만 많은 데이터를 직접 다루지 못하고 가공하거나 축약해야 한다는 한계가 있었습니다.
2010년 즈음까지는 대량의 데이터를 처리하는 것이 큰 도전과제였습니다. 데이터를 처리하려면 수퍼컴퓨터와 같은 고성능 컴퓨터를 사용하거나, 처리 결과를 받기까지 오랜 시간이 걸렸습니다. 이런 환경에서는 반복 작업이 많은 데이터 분석이나 기계학습을 효과적으로 수행하기 어려웠습니다.
하지만 [[30.bigdata/_index|빅데이터]] 기술과 분산 컴퓨팅이 발전하면서 상황이 크게 바뀌었습니다. 비교적 저렴한 비용으로 대량의 데이터를 처리할 수 있게 되었습니다. 물론 데이터의 양과 활용 욕구가 계속 증가하고 있어 완벽한 해결책은 아니지만, 데이터 처리 속도가 데이터 증가 속도보다 더 빨라지고 있습니다.
이런 분산 컴퓨팅 환경에서의 데이터 분석과 현대의 비즈니스는 기존에 나누어 하던 작업을 통합적으로 수행할 것을 요구하게 되었고, 이것이 바로 데이터과학(data science)입니다.
즉, 전통적인 분석이 통계학을 중심으로 샘플 데이터의 추론에 중점을 뒀다면, 데이터과학은 대량의 데이터를 실시간으로 처리하고 기계학습 등 다양한 기술을 함께 활용하는 것이 특징입니다.
데이터사이언스라는 용어가 출현한 것은 빅데이터(Big Data)라는 용어가 출현한 시기와 비슷합니다. 빅데이터와 함께 유행하게 된 이유는 데이터사이언스가 빅데이터와 밀접한 관련이 있기 때문입니다. 빅데이터는 분산컴퓨팅, 기계학습, 데이터마이닝, 대용량 데이터 처리를 함께 다루는 기술, 플랫폼, 방식을 통칭합니다. 빅데이터를 잘 다루기 위해서는 다양한 능력이 요구됩니다. 프로그래밍 능력, 분산컴퓨팅 활용을 위한 컴퓨터 공학 기술, 데이터 분석을 위한 통계학, 기계학습을 위한 수학 등이 그것입니다. 이런 작업을 동시에 할 수 있는 사람은 당시에 상당히 드물었습니다. 그런 사람들을 지칭하는 용어로 기계학습 엔지니어나 컴퓨터 과학자라는 말이 있었지만, 이는 다소 협소한 의미로 오해받을 수 있었습니다. 이러한 개념을 재정립하여 새로 만든 용어가 바로 데이터사이언티스트(Data Scientist)입니다.
빅데이터의 출현은 인터넷의 발전 과정을 보면 자연스러운 흐름이었습니다. 초기 인터넷은 단순히 네트워크를 통해 공간 제약 없이 콘텐츠를 공유하고 조회하는 것에서 시작했습니다. 하지만 인터넷이 발전하면서 사용자들의 온라인 활동이 다양해졌고, 이를 기반으로 새로운 서비스와 사업 모델이 계속해서 등장하게 되었습니다.
인터넷 서비스들은 서비스 운영과 디버깅을 위해 사용자의 행동 데이터를 기록할 수밖에 없었습니다. 인터넷 사용이 증가하면서 서비스에 접속한 사용자들의 행동 로그와 생산한 콘텐츠 등이 쌓이면서 엄청난 양의 데이터가 축적되었습니다. 초기에는 이런 데이터를 활용하지 않고 그대로 휘발시켰습니다.
그러다가 이 데이터로부터 가치 있는 정보를 찾아 활용하는 시도가 시작되었고, 효과를 보는 곳이 생기면서 사용자 로그 데이터 활용이 확산되었습니다. 하지만 양적으로나 종류로나 다양한 대량의 데이터에서 의미 있는 사실과 가치를 찾기 위해서는 짧은 시간 안에 처리할 수 있는 분산 컴퓨팅 기술이 필요했습니다. 그리고 기계학습, 인공지능, 통계학을 활용해 이 많은 데이터를 가치화(Monetization)하고 직간접적으로 비즈니스에 변화를 주거나 새로운 비즈니스를 만들어 수익을 창출하려는 시도가 지속되었습니다.
이런 작업들을 현재는 통칭하여 데이터사이언스라고 부르며, 이러한 일을 하는 사람들을 데이터사이언티스트라고 새롭게 부르게 되었습니다.
데이터사이언스를 하기 위해서는 다양한 스킬이 필요합니다. 다음과 같은 것들이 주요 스킬입니다.
통계학은 오랜 역사를 가진 학문으로, 데이터를 분석하는 데 필수적입니다. 데이터사이언스에서 가장 중요한 작업은 데이터 분석이며, 이를 위해 필요한 다양한 기법과 과거의 지혜를 통계학을 통해 얻을 수 있습니다. 따라서 데이터사이언티스트에게는 통계학에 대한 깊은 이해가 요구됩니다. 그러나 통계학은 배우기 어려운 학문 중 하나로, 다루는 범위가 방대하고 오랜 학습이 필요합니다. 처음에는 기초를 익히고, 점차적으로 필요한 부분을 확장하여 꾸준히 학습해야 합니다. 통계학의 모든 것을 한 사람이 완벽히 아는 것은 매우 어렵습니다.
또한, 빅데이터가 대량의 데이터를 다루고 통계학이 소량의 샘플을 통해 추론한다고 해서 통계학이 빅데이터에 적용되지 않거나, 데이터사이언스보다 구시대적이라고 생각해서는 안 됩니다. 대부분의 기계학습 기법은 통계학에서 출발했으며, 데이터를 다루는 많은 방법과 연구는 여전히 통계학에 뿌리를 두고 있습니다.
컴퓨터 자원 활용 능력을 말합니다. Linux, Windows server를 잘 다룰 수 있고, 터미널(Terminal)에서 명령어를 통해 Linux/Unix 환경에서 원활하게 작업을 할 수 있어야 합니다. 당연히 몇 개의 스크립트 언어(Script language)를 잘 다룰 수 있어야 하고 때로는 소프트웨어 개발이나 플랫폼에 관련된 개발 업무도 어느 정도 할 수 있어야 합니다. 그리고 데이터 분석과 설명을 위해 Excel, PowerPoint와 같은 사무용 소프트웨어도 잘 다룰 수 있어야 합니다.
컴퓨터 활용 능력은 데이터사이언스에 있어서는 실행능력과 같습니다. 자신의 생각이나 아이디어, 가설 등을 확인하기 위해서는 스스로 컴퓨팅 자원을 구성하고 활용해서 데이터를 입수하고 처리를 해서 목표를 달성해야 하는데 큰 무리가 없어야 합니다.
앞에서 말했듯이 대용량 데이터 처리를 위한 기술은 현대의 데이터 처리에서 필수적으로 필요합니다. 현대의 데이터는 이미 대용량이 된 지 오래입니다. 1대의 컴퓨터에 장착된 연산 자원과 저장 장치로는 분석의 대상이 되는 데이터를 모두 저장하고 분석을 할 수 있는 환경이 되었습니다. 여러 대의 컴퓨터를 연결해서 데이터를 분산해서 저장하고 데이터 처리 및 계산도 분산해서 처리해야 하는 시대가 된 것입니다.
분산 컴퓨팅은 과거에는 사용하기 매우 어려운 기술이었고 설비를 갖추기 위해서 비용도 많이 필요했지만 Hadoop과 그 에코시스템(Ecosystem; Hadoop과 관련된 분산컴퓨팅 관련 소프트웨어들) 및 유사 소프트웨어들이 많이 생겨나고 각광을 받기 시작했고 그와 더불어 하드웨어의 가격이 낮아지고 성능이 점점 높아지게 되었습니다. 그 결과로 모두가 어렵지 않게 분산컴퓨팅을 사용할 수 있도록 일반화가 많이 되었습니다. 하지만 여전히 분산컴퓨팅을 사용하기 위해서는 역시 많은 연습과 활용에 필요한 제반 지식이 필요한 것이 문제입니다.
이제 분산컴퓨팅 환경에서 작업을 할 수 없다면 현실에서 데이터 분석이 어려운 상황에 맞닥뜨리는 경우가 많아질 것입니다.
Hadoop, Hive, Spark, Storm, Kafka와 같은 분산 컴퓨팅과 BigQuery, RedShift와 같은 클라우드컴퓨팅에서 제공하는 관리형 솔루션도 가리지 않고 잘 사용할 수 있어야 합니다.
분산컴퓨팅에 관련된 모든 소프트웨어 플랫폼을 다 배우고 활용할 수는 없겠지만 상황에 맞게 적절한 것을 빨리 도입해서 사용하고 문제를 해결할 수 있는 능력이 필요합니다. 그리고 그중에 몇 가지는 자신의 주력 플랫폼으로 사용할 수 있어야 합니다.
컴퓨터를 활용해서 어떤 가치를 찾는 작업이 분포를 통해서 통찰(insight)을 찾는 것에서 추가로 뭔가를 해야 한다면 자동화(automation)가 필요합니다. 기계학습도 자동화의 일종입니다. 데이터마이닝 또한 데이터에서 가치를 찾는 작업을 일부 자동화한 것이라고 볼 수 있습니다. 자동화 기술은 구현된 이후에는 편하게 사용할 수 있지만 구현 작업 자체는 매우 어렵습니다. 기계학습은 빅데이터와 데이터사이언스에 있어서는 필수라고 할 수 있으며 기계학습 기술이 포함된 데이터마이닝 기술 역시 필수라고 할 수 있습니다.
분석 결과의 적절한 표현이 필요합니다. 무엇을 하든지 시각적으로 표현해 주지 않으면 사람이 빨리 이해하는 것은 어려운 일입니다. 연구 또는 실행한 결과 검증한 가설 등을 누군가에게 설명하는 것은 반드시 필요한 과정이 되는데 이때 시각화만큼 주목을 빨리 끌고 설명을 쉽게 할 수 있는 것은 없습니다. 설명 이외에도 데이터 분석 결과나 기계학습의 모형에 대한 성능 확인, 시뮬레이션 등을 하기 위해서는 데이터의 상태와 모형의 결과를 눈으로 확인하기 위한 시각화가 사람에게는 매우 유용합니다. 더불어 동적인 시각화를 위해서 JavaScript를 이용한 웹 개발 기술도 습득이 필요합니다.
데이터과학을 배우는 것은 수학에서 시작해서 기계학습과 분산컴퓨팅을 거치고 통계학을 관통해서 다시 수학으로 돌아가서 끝을 맺는다고 할 수 있습니다. 데이터 사이언스의 시작과 끝은 사실상 수학입니다.
데이터사이언스에 관련된 일을 오래 하다 보면 알고리즘이나 모형의 깊숙한 부분을 보거나 수리적 모형을 고민해야 할 때 항상 마지막에 부딪히는 것은 수학입니다. 수학은 모든 과학과 공학의 기본이라고 할 수 있습니다. 특히 선형대수학, 미적분, 미분방정식까지는 어느 정도의 지식을 쌓아두어야 하며 위상수학과 해석학을 비롯한 다른 대수들도 경우에 따라 알아야 할 수 있습니다.
관련 비즈니스에 대한 깊이 있는 전문 지식이 필요합니다. 일반적인 직장에서는 회사의 핵심 비즈니스에 따른 전문 업무 지식이 요구됩니다. 예를 들어, 통신회사에 근무한다면 통신 비즈니스, 설비, 프로토콜, 상품에 대해 알아야 하며, 이를 통해 고급 지식을 습득해야 합니다. 자동차 회사에 근무한다면 자동차 부품, 조립, 생산, 각종 유닛, 역학 기술, 엔지니어링에 대해 알아야 합니다. 도메인 지식이 없다면 데이터 사이언스는 실질적으로 성과를 내기 어려운 상황이 됩니다.
도메인 지식은 근무하는 회사의 주력 사업, 연구소의 주력 연구 분야, 또는 창업을 준비 중이라면 그 사업 분야와 관련된 지식이 됩니다. 각 도메인과 관련된 일을 실제로 하지 않는다면 학습을 통해 배우기 어려우므로, 각자의 상황에 따라 달라질 것입니다. 즉, 자신의 환경에서 최대한 도메인 지식을 습득해야 데이터 사이언스를 효과적으로 수행할 수 있습니다.
앞서 언급한 기술과 지식을 모두 익히는 것은 한 사람에게 매우 어려운 일입니다. 학습에는 많은 시간이 필요하고, 학습량도 상당합니다. 이 때문에 데이터사이언티스트의 수는 여전히 적습니다. 물론, 필요한 스킬을 갖추지 못하고도 스스로 데이터사이언티스트라고 주장하는 사람들도 있습니다. 하지만 그런 사람들은 실제 업무 환경에서 문제를 해결하지 못하는 경우가 많습니다. 현실에서 데이터사이언티스트가 직면하는 문제는 복합적이고 어려우며, 결과를 예측하기 어려운 경우가 많습니다. 단순히 기계학습 모델을 만들고 정확도를 평가하며 모델을 실제로 적용하는 것만으로 데이터사이언티스트의 업무가 완성된다고 할 수 없습니다.
모든 것을 한꺼번에 익히는 것은 불가능하지만, 차근차근 배우고 연습한다면 누구나 데이터사이언티스트가 될 수 있습니다. 시간이 필요한 것들은 시간을 들여 천천히 익히고, 쉽게 배울 수 있는 것들은 빠르게 습득하여 점차적으로 데이터사이언티스트가 되도록 노력하는 것이 바람직합니다.