(이 포스팅은 '하둡과 스파크를 활용한 실용 데이터과학'책의 리뷰이다.)
데이터에서 어떤 의미나 통찰을 발견하려고 과학적 방법을 이용하는 '데이터 탐색'과 발견한 의미와 통찰을 비즈니스 맥락에서 활용하는 '소프트웨어 시스템의 구축'을 아우른다.
핵심적 측면
데이터 과학은 과학적 방법으로 데이터를 탐색하는 행위, 의미나 통찰을 발견하는 과정이 다른 과학 분야의 발견 과정으로 '질문-> 가설 수립-> 구현 및 테스트-> 결과 평가'로 이어지는 일련의 단계를 반복하는 과학 실험 과정과 유사하다는 것을 의미한다.
데이터 과학은 비즈니스 맥락에서 실제로 활용할 수 있는 소프트 웨어 시스템을 구축하는 행위로 데이터 과학으로 구현된 기술이나 알고리즘이 하루하루 굴러가는 비즈니스에 즉시 활용할 수 있는 결과를 만들어낸다.
데이터 과학의 등장 배경은 지난 수십년간 일어난 기술적, 과학적 진보와 밀접함
회귀 분석(Regression), 우도(Likelihood), 분산 분석(analysis of variance), 상관 분석(correlation)등의 널리 알려진 통계기법이 있다.
20세기 중반에 이르러 통계학은 데이터 분석에서 본격적으로 사용되기 시작했으며 1962년 발표된 <데이터 분석의 미래(The Future of Data Analysis)>의 저자 존 터키는 "결국 나의 가장 큰 관심은 데이터 분석에 있다."고 언급했으며 이는 응용 통계학의 중요한 이정표로 받아들여졌다.
이후 수십 년간 통계학자들은 응용 계산 통계학 분야에 많은 관심을 보이며 관련 연구를 지속했다. 하지만 그 당시 통계학자들의 노력은 컴퓨터 과학 분야의 머신 러닝 연구와 상당히 동떨어져있었다.
1950년대 후반 컴퓨터의 발전이 유아기에 접어들면서 컴퓨터 과학자들은 사람의 신경 전달 모델에서 착안한 인공지능 시스템, 즉 인공 신경망(neural networks)을 연구하기 시작했으며 프랭크 로젠블렛의 선구적인 퍼셉트론(perceptron)알고리즘과 그 뒤를 이은 위드로와 홒프의 연구는 새로운 분야에 대한 연구자들의 폭발적인 관심을 불러일으켰다.
인공 신경망의 초기 성공에 뒤이어 수십 년간 데이터로부터 패턴을 자동으로 학습하는 다양한 머신 러닝 기법(최근접 이웃(nearest neighbor), 의사 결정 트리(decision tree), k-평균 군집화(k-means clustering), 서포트 벡터 머신(support Vector Machine, SVM)등이 고안되었다.
그렇다면 어떻게 데이터 과학자가 될 수 있을까?
데이터 과학자로 성공하려면 일반적으로 데이터 엔지니어링(data engineering)과 응용과학(applied science) 두 가지 컴퓨터 과학 기술 역량을 모두 보유하고 이들을 결합해야한다.
고속 분산 파이프라인을 구축할 수 있는 전문 지식을 갖추고 운영 등급(production-grade)에 걸맞은 고품질 소프트웨어 시스템을 능숙하게 구축하는 숙현된 소프트웨어 엔지니어다.
최소 하나 이상의 주요 프로그래밍 언어(JAVA, Python, 스칼라, 루비,C++)와 소프트웨어 개발에 관련된 툴셋(메이븐(Maven), 앤트(Ant)같은 빌드 도구, 단위 테스트(unit test) 프레임 워크, 다양한 소프트웨어 라이브러리)에 대한 높은 전문성을 보유한 경우가 많다.
또한 데이터 엔지니어는 데이터의 수집, 저장, 처리 시스템 전반을 구축할 수 있는 전문 역량을 갖춘 경우가 많다. 데이터 시스템의 구체적인 기술에는 기존의 관계형 데이터베이스부터 NoSQL 데이터베이스, 하둡 스택(HDFS, HBase, 피크, 하이브 스톰 등)까지 포함된다.
주로 컴퓨터 과학, 응용 수학, 통계 분야의 학위를 보유하고 학계에서 연구를 수행한 배경을 가진 인력을 말한다.
응용과학자는 여러 알고리즘(k-평균 군집화, 랜덤 포레스트, ALS 등)에 내포된 수학적 이론에 대한 지식을 보유하고 이러한 알고리즘을 최적화하는 방법과 알고리즘을 실세계 데이터에 적용하면서 직면하는 다양한 선택, 그리고 이러한 선택 간의 상충관계(trade-off)에 대해서도 깊이 이해한다.
학술적 연구와 논문 게재에 중점을 두는 연구과학자와 달리 응용과학자는 주로 실세계의 문제를 해결하는 데 중점을 두며 데이터에 가장 적절한 알고리즘을 적절한 방법으로 적용해 당면한 문제를 해결하는것에 중점을 둔다.
데이터 과학자로 성공하려면 분류(Classification), 회귀(Regression), 군집화(Clustering), 이상 탐지(anomaly detection) 등 데이터 과학 업무를 수행하는데 필요한 통계학과 머신 러닝 기법을 더 깊게 이해하고 이에 대한 실무 경험을 쌓아야한다.
응용과학자이며 이미 머신 러닝과 통계학을 잘 알고 있다면 데이터 과학자가 되기 위해 더 강력한 프로그래밍 기술을 습득하고 기본적인 소프트웨어 아키텍처와 개발 역량을 갖춰야한다.
데이터 과학자로서 일하는 것은 머신 러닝, 프로그래밍 같은 기술 분야의 구체적인 전문성 외에도 다음과 같은 자질을 갖춰야한다.