데이터 과학(data science)이란, 데이터 마이닝(Data Mining)과 유사하게 정형, 비정형 형태를 포함한 다양한 데이터로부터 지식과 인사이트를 추출하는데 과학적 방법론, 프로세스, 알고리즘, 시스템을 동원하는 융합분야다. 데이터 과학은 데이터를 통해 실제 현상을 이해하고 분석하는데 통계학, 데이터 분석, 기계학습과 연관된 방법론을 통합하는 개념으로 정의되기도 한다.
데이터의 구체적인 내용이 아닌 서로 다른 성질의 내용이나 형식의 데이터에 공통으로 존재하는 성질, 또는 그것들을 다루기 위한 기술의 개발에 착안점을 둔다는 특징을 가진다.
튜링상을 수상한 짐그레이(Jim Gray) 박사는 데이터 과학은 과학의 네번째 패러다임으로 정의하고 과학(경험, 이론, 계산, 그리고 이제 데이터)에 관한 모든 것이 바뀌고 있는데 이유는 정보기술과 데이터 범람(data deluge) 때문이라고 주장했다.
즉 다양한 데이터 예를 들면, 텍스트 데이터, 직사각형 데이터, 시각 데이터, 네트워크 데이터, 공간정보 지도데이터, 문서 데이터 등 다양한 형태의 데이터를 취합할 수 있고 이용할 수 있는 세상이 되었다.
이와 더불어 빅데이터 - 스파크, 고성능 컴퓨팅(HPC), 클라우드 컴퓨팅 소개, R 병렬 프로그래밍 등을 활용하여 정형, 비정형 데이터를 저장하고 쉽게 접근하여 가치를 창출할 수 있는 시대가 열렸다.
다양한 데이터를 발굴하고 이를 축적하게 되면 이를 이해할 수 있는 과정이 필요하다. 이를 위해서 반듯이 필요한 것이 시각화다. 이유는 복잡한 것을 단순화하고 빠른 시간내에 의사결정을 내릴 수 있는 최대한 많은 정보를 제공하는 것이 시각화외에는 다른 대안이 없다. 이를 위해 필요한 것이 대쉬보드다. 시각화에 대한 다양한 구성요소가 준비되어 있다.
마지막으로 가치를 창출하는 부분이 필요한데 이를 위해서 다양한 비즈니스 사례를 발굴하고 적합한 통계모형/기계학습(machine learning) 알고리즘 적용과 다양한 통계 이론과 기법을 적용하는 것이 필수적이다. 이를 위해서 xwMOOC 기계학습, 데이터 과학 - 모형에 대한 내용을 참고한다. 그외 빠질 수 없는 내용이 Deep Learning, 자연어 처리(NLP)를 들 수 있다.
데이터가 엄청 많아지고 유용한 가치를 많이 지니고 있는 것은 알겠는데 데이터로 할 수 있는 것은 무엇인지 알아보자.
KDnuggets 웹사이트에 올라오 데이터과학에 관한 불편한 진실을 김재광 교수님께서 번역하여 페이스북에 공유해 주셨습니다. 가슴이 아프지만, 실무를 해보신 분은 누구나 공감하실 듯 싶습니다. 하지만, 채용과정에서는 딥러닝, 인공지능, 기계학습에 대한 내용에 상당부분 할애하는 경우가 다반사입니다. 그런 이유인지 몰라도 신입직원에 대한 조기 퇴사율이 높은 이유를 설명하는데 도움이 될 듯 싶습니다.
컴퓨터(Computer)라는 말은 라틴어 “computare”에 기원하는데 계산하고 더한다는 의미를 지니지만, 오늘날 컴퓨터는 거대한 계산기 이상이다. 컴퓨터는 도서관도 될 수 있으며, 컴퓨터로 글을 작성할 수 있으며, 정보를 찾고, 음악을 연주하고, 영화를 보기도 한다. 그런데 컴퓨터는 이렇게 많은 모든 정보를 어떻게 저장할까? 믿든 믿지 않든, 컴퓨터는 단지 두 가지만을 사용한다. 영(‘0’)과 일(‘1’)이다.
빅데이터 시대를 맞이하여 데이터는 도처에 널려있지만, 오랜 세월을 거치면서 데이터는 나름대로 각자의 서식지를 가지게 되었다. 과거 중요한 정보를 관계형 데이터베이스에서 체계적으로 관리를 했다면 빅데이터를 저장하고, 처리하고, 활용할 수 있는 기술은 비약적으로 발전하여 최근에는 이를 기계학습과 딥러닝 기법을 적용하여 혁신을 통해 가치를 창출하는 단계로 넘어가고 있다.
데이터는 사방에 널려 있지만, 데이터를 특정 기준으로 나눠서 살펴보는 것은 향후 지적재산과 연관된 다양한 법적인 문제를 푸는데도 큰 도움이 된다.
다양한 데이터 원자재를 산업화하는 과정은 다양한 실험을 통해서 성공했던 과학기술이 비로소 사업화와 접목되어야만 가능하다. 데이터 원자재를 엑셀과 같은 형태의 직사각형 정형데이터로 가정한다면 이를 사업화하여 얻을 수 있는 실익은 크지 않다. 하지만, 데이터 원자재를 정형 데이터 뿐만 아니라, 이미지, 텍스트, 소리, 로드 등 비정형 데이터를 아우르게 되면 데이터의 양과 질, 그리고 속도에서 비교가 되지 않는 고도의 기술을 필요로 한다.
빅데이터(Big Data)를 일반적으로 통칭해서 말하고 있지만, 보통 노트북이나 PC에 저장해서 메모리로 불러 작업할 수 있는 데이터를 Small Data, 성능 좋은 서버에 데이터를 저장하고 RDMBS 등으로 관리하여 필요한 경우 SQL로 가져오는데 적합한 데이터를 중간 데이터라고 한다. 빅데이터는 처리에 많은 비용이 수반되기 때문에 클라우드 저장소 예를 들어 S3와 같이 저렴(?)한 Object Storage에 저장하고 클러스터를 구축하여 임시로 데이터를 분석, 모형개발 등 작업을 마친 후에 동원된 컴퓨팅 자원을 회수하는 방식으로 처리되는 데이터를 빅데이터로 통칭한다.
구분 | 데이터 크기 |
---|---|
작은 데이터 | 노트북 컴퓨터 메모리에 저장할 수 있는 크기 : 10 GB 이하 |
중간 데이터 | 서버 컴퓨터 메모리에 저장할 수 있는 크기 : 10 GB – 5 TB |
매우 큰 데이터 | 컴퓨터 한대 메모리에 저장될 수 없는 크기 : 5 TB이상 |
본격적으로 데이터 과학을 시작하려면 데이터 저장부터 시작해야 한다. 이를 위해서 데이터 유형을 먼저 파악하고 이에 맞는 적절한 저장방법을 찾아야 한다.
이제 데이터를 추출하고, 변환하고, 적재하는 ETL(Extract Transform Load) 작업을 유닉스 쉘의 CRON 혹은 아파치 Airflow 등을 통해서 자동화 시킨다. 관련된 자세한 사항은 다음 링크를 참조한다.
통계학은 영어로 ‘Statistics’인데 이는 국가(State)를 통치하는 데 필요한 학문이라는 어원을 갖고 있고, 통계학은 크게 세 단계로 정의된다.
“자료 그 자체에 충실하라(Let the data speak for themselves)”는 말이 있다. 과학적 성과의 입증이나 정부의 정책을 뒷받침하는 과정에서 자료나 통계가 조금이라도 왜곡되거나 조작되면 안 된다. 이를 흔히 우리는 통계의 중립성과 독립성이라 부른다.
과거 통계학이 경제학의 보조학문 정도로 사용됐으나 현재는 경제학·의학·생물학·공학·사회과학 등 여러 학문 분야에서 통계학적 기법을 빌어서 활용하고 있다. 국가 통계 담당 통계청의 역사는 다음과 같다.
논리적 사고의 근간을 이루는 가장 중요한 밥법론이 귀납법과 연역법이다. 개별적인 특수한 사실이나 원리를 전제로 하여, 즉 데이터를 바탕으로 하여 일반적인 사실이나 원리로서의 결론을 이끌어 내는 연구 방법으로 인과 관계를 확정하는 데에 주로 사용된다. 반면 연역에 따른 추리의 방법은 일반적 사실이나 원리를 전제로 하여 개별적인 특수한 사실이나 원리를 결론으로 이끌어 내는 추리 방법으로 경험에 의하지 않고 논리상 필연적인 결론을 도출하는 것이 가능하고, 흔히 삼단 논법이 그 대표적인 형식으로 자리 잡고 있다. 하지만, 최근에 통계검증과 결합하여 논리적 사고에 따른 오류를 바로잡고 새로운 인사이트를 찾고자 하는 시도가 일반적이다.
자료 그 자체에 충실하기 위해서는 데이터가 만들어지는 과정에 대한 이해가 반듯이 필요하다. 데이터는 관측 데이터(Observational data)와 실험 데이터(Experimental Data)로 나뉜다. 데이터 자체가 두집단을 표현하더라도 생성과정이 달라 이를 통해서 얻을 수 있는 추론 결과도 다르게 된다.
무작위 추출을 하게 되면 일반화(Generalization)가 가능하지만, 무작위 표본 추출이 아닌 데이터에서 얻은 정보는 일반화를 하면 안된다. 유사하게 무작위 할당을 해서 얻게 된 정보를 바탕으로 인과관계를 도출할 수 있지만, 무작위 할당을 하지 않은 경우는 인과관계를 예단할 수는 없다.
데이터 사이언스 작업흐름은 데이터를 수집하고 이를 이해하는 과정과 추상화하는 과정을 거쳐 최종 산출물로 사람이 최종 소비자가 되는 보고서/대쉬보드와 기계가 최종 소비자가 되는 API/코드 형태로 최종 작업이 이뤄지게 된다.
데이터 사이언스 팀은 크게 3가지 역할로 나눌 수 있다.
데이터 엔지니어는 기본적으로 대량의 데이터를 수집하고, 저장하고, 관리하는 역할을 주된 업무로 한다. 이를 위해서 SQL
이 기본 기술이고 데이터 수집과 자동 처리를 위해서 자바, 스칼라, 파이썬이 필요한 주된 기술로 전산 기본기가 특히 중요하다.
데이터 분석가는 대쉬보드를 생성하고, 가설 검정, 데이터 시각화를 주된 업으로 하며 일차적으로 누군가 혹은 특정 장소에 저장된 데이터를 바탕으로 탐색적 데이터 분석을 수행하는 것을 업으로 한다. 이런 업무를 무리없이 수행하기 위해서 엑셀 혹은 구글 쉬트와 같은 스프레이쉬트를 자유자제로 다룰 수 있는 기본기가 필요하고, 데이터를 추출하기 위해서 SQL 쿼리 기술, 대쉬보드 작성을 위해 루커(looker), 타블로(Tableau), 파워 BI (Power BI) 더 나아가 R Shiny 대쉬보드를 활용할 수 있어야 한다.
vloopup
, 매크로 등을 다루는 역량데이터 과학자(Data Scientist)는 오랜 동안 통계학을 공부하여 주로 A/B 테스트와 같은 실험을 설계하고 운영하며 결과를 토대고 인과(causality)를 추론하고 전통적인 기계학습(traditional machine learning) 즉 정형 RDBMS에서 SQL을 사용해서 데이터를 추출하여 통계 모형 개발을 개발하는 업무를 주로한다.
tidyverse
를 기반으로 다양한 보고서(interactive, parameterized documents)를 제작하고, A/B 테스트 등 데이터에 기반한 인과관계를 추론할 수 있는 실험을 설계하고 운영하고 의사결정을 할 수 있는 강한 통계지식과 회귀분석, 다변량 분석, 시계열 분석, 공간통계 모형, 네트워크 모형 등을 이해하고, 개발 및 배포할 수 있는 역량기계학습 데이터 과학자는 예측(Prediction & Extraploation)과 분류를 주된 업으로 하고 최근 들어 강조되고 있는 비정형 데이터 이미지와 텍스트를 딥러닝 방법론을 활용하여 개발하는 작업을 주된 업무로 한다. 이를 위해서 R과 파이썬을 주된 프로그래밍 언어로 강한 통계, 확률, 미적분, 선형대수 지식을 갖춰야 한다.
spark
)로 다룰 수 있는 역량과 딥러닝 모형을 텐서플로우(tensorflow
) 등 라이브러리를 사용해서 텍스트 혹은 이미지를 데이터 자원으로 사용해서 딥러닝 모형을 개발하고 배포할 수 있는 역량데이터 과학(Data Science)는 2012년을 변곡점으로 해서 급격하게 관심도가 높아지고 있다. Google Trends 초창기 데이터 과학자가 데이터에 대한 수집, 분석, 모형개발, 추론, 제품/서비스 개발 및 운영을 모두 했다면 최근 2~3년 동안 업무의 분화가 가속화되어 일어나고 있다.
분석(Analytics) 데이터 과학자는 좋은 질문을 던질 수 있고, 탐색적 데이터 분석을 통해서 명확히 하는 재주가 있고, 대쉬보드와 시각화를 통해 데이터 분석을 자동화하고, 추천 결과물로 비즈니스를 변화시킨다. 알고리즘(algorithm) 데이터 과학자는 기계학습에 특기가 있는 사람에 적합하고 제품/서비스, 프로세스에 데이터를 녹여내서 비즈니스 가치를 창출한다. 추론(inference) 데이터 과학자는 통계를 사용해서 의사결정을 향상시키고, 업무의 영향도를 측정하는데 주로 통계학자, 경제학자, 사화과학자에 적합하다.
구분 | 설명 |
---|---|
기술 | - Analytics - Defines and monitors metrics, creates data narratives, and builds tools to drive decisions |
- Algorithms - Builds and interprets algorithms that power data products | |
- Inference - Employs statistics to establish causal relationships | |
- Foundation - Demonstrates ownership and accountability for data quality and code (expected for all tracks) | |
사업 | - Ownership - Able to drive projects to success, enables others, owns impact |
- Influence - Communicates clearly, demonstrates teamwork, and builds relationships | |
- Enrichment - Contributes to team-building through mentorship, culture, recruiting, and diversity efforts |
데이터를 원재료로 이를 공학적으로 제품과 서비스를 개발하는데 있어 크게 3가지 기능이 필요하고 이를 어떻게 조합하냐에 따라 데이터 사이언스 팀구조가 다음과 같이 나눠진다. 먼저 데이터 엔지니어로 구성된 팀, 데이터를 통해 뭔가 유용한 제품과 서비스를 만들어 내는 공학팀, 데이터 사이언스 제품과 서비스를 설계하고 기획하는 팀으로 명확히 구분된 데이터 사이언스 조직을 운영할 수 있다.
다른 대안으로 데이터 엔지니어, 데이터 과학자, 기획자가 각각 팀을 이뤄 다양한 데이터 제품과 서비스를 기획하는 것도 가능한 형태다.
마지막으로 상기 두 조직을 합친 형태로 데이터 사이언스 팀구조를 가져가는 것도 가능하다. 즉, 매트릭스 형태로 각 기능별 특징은 유지하면서 데이터 엔지니어와 분석가/모형 개발자, 그리고 제품 기획자가 하나의 팀으로 구성된 사례를 들 수 있다.
데이터 사이언스 응용분야로 최근 떠오르는 분야를 포함하면 다음과 같다.
기계학습(Machine Learning) 예측모형을 개발하여 성공적으로 적용시키기 위해서는 다음 세가지 질문에 대해서 답을 할 수 있어야 한다.
전통적인 기계학습 알고리즘 방식을 기반으로 응용분야가 기존 전산 시스템을 넘어 IoT 기기를 통해서 확산되고 과거 정형데이터에서 이미지와 자연어를 다룰 수 있게 됨에 따라 파급력을 급격히 확대시켜 나가고 있다.
’데이터 과학(Data Science)’은 석유 자원에 경제적 가치를 부여하는 정제 프로세스에 비유될 수 있습니다. 원유가 여러 단계의 공정을 거쳐 플라스틱, 섬유, 고무와 같은 상품으로 재탄생하듯이, 데이터 자원도 여러 단계를 거치면서 기존에 없던 가치를 창출합니다. 기업은 데이터 업무 수행 단계별(수집, 저장, 처리, 분석, 활용) 이슈 사항의 검토를 통해, 효과적인 운영 혁신을 추진할 수 있습니다.
저자는 10년이상 파이썬 응용프로그램을 작성했지만, 지금은 R을 사용하고 있다. R을 사용하진 2년이 지난 시점에서 파이썬 보다 R의 우수성에 대해서 10가지로 요약하고 있다.
간략히 요약하면, R은 데이터 과학과 기계학습 프로젝트에 이례적인 도구라고 볼 수 있다. R로 개발할 때 생산성은 훨씬 더 크게 느껴진다. 하지만, R을 익숙하게 다루는데는 시간이 다소 소요되기 때문에 시간에 대한 투자도 당근 고려되어야 한다. 특히, 파이썬이 근접할 수 없는 분야는 프로토타입을 개발할 때 재현성을 비롯한 상당한 매력과 장점이 있다. 파이썬은 다용도 언어로 데이터 과학 선택지로서 입지를 다져가고 있다.
한글 번역
matplotlib
에 관해 무엇을 언급하든, Base 그래프, 그래프 문법 ggplot2 그래프에는 근접하지 못한다. Alfonso R. Reyes는 matplotlib을 오랜동안 사용했지만, 비표준 그래프는 뭐든지 맨땅에서부터 작성해야 했다. 반대로 R은 ggplot2를 비롯한 방대한 기능을 아직도 모두 소진해본적은 없는듯 싶다. 물론, 그래프에 대해 지켜야할 몇가지 기본 규칙이 부수적으로 따라온다: 다중 y축을 사용하지 말고, 원그래프는 피하고, 3D 그래프를 과사용하지 말고, 특별한 이유가 없다면 맨 처음부터 그래프 작성을 시작한다.영어 원문
과연 우리나라에서 좋은 데이터과학은 어떤 것일까에 대한 고민이 한국 Tidyverse에서 “대중의 지혜(wisdom of the crowd)”를 동원하여 풀어보고자 하네요.
지금(2020-07-06)까지 논의된 사항을 정리하면 다음과 같습니다. 네가지 강의유형이 있지만, 모든 강의가 공개되어 있고 유료로 진행되는 강의가 가장 좋은 데이터과학 교육과정으로 검토되고 있습니다.
그외 @김정훈님이 언급하신 vicious circle도 있습니다.
데이터 사이언스 언어인 R이나 파이썬 모두 그렇지만 사람들이 갖고 있는 편견이 무섭습니다. 무료라면 질이 떨어질 것으로 짐작하고 쳐다보지도 않는데 다음 데이터 사이언스 특히 R 교재를 살펴보면 달라질 것입니다.
데이터를 시각화해서 인지부하(cognitive load)를 줄여 인사이트를 얻거나 의사결정에 도움이 되지만, 시각화 산출물이 정말 많은 경우 어떻게 할 것인가? 먼저 데이터에서 시각화하는 사례를 다양한 방법을 살펴보자.
다음 대쉬보드를 잘 만드는 방법 → 작업 중…
구글 추세로 본 미국과 한국의 차이점을 데이터를 통해서 살펴보자.
대한민국을 추출하기 위해서 gtrendsR
팩키지에서 담고 있는 국가코드를 추출한다. 이를 바탕으로 미국과 대한민국 geo
가 각각 KR
, US
를 파악한다.
library(tidyverse)
library(gtrendsR)
data("countries")
countries %>%
filter(str_detect(name, "KOREA|UNITED"))
country_code sub_code name
1 GB UNITED KINGDOM
2 KP KOREA (NORTH)
3 KR KOREA (SOUTH)
4 AE UNITED ARAB EMIRATES
5 US UNITED STATES
6 US US-UM UNITED STATES MINOR OUTLYING ISLANDS
7 KP KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF
8 KR KOREA, REPUBLIC OF
9 TZ TANZANIA, UNITED REPUBLIC OF
10 UM UNITED STATES MINOR OUTLYING ISLANDS
구글 추세 데이터를 추출하는데 지역을 미국으로 한정하고 검색어를 “big data”, “data science”, “machine learning”, “deep learning”으로 놓고 데이터를 추출하여 us_df
에 저장한다. 동일한 방식으로 지역을 한국으로 한정하고 4차 산업혁명시대 검색어를 동일하게 “빅데이터”, “데이터 과학”, “기계 학습”, “딥러닝”으로 놓고 kr_df
로 저장한다. 시간은 “2010”년부터 최근까지 시간으로 삼는다.
# 미국
us_df <- gtrends(c("big data", "data science", "machine learning", "deep learning"), geo = c("US"), time="2010-01-01 2018-10-09", hl = "en-US")
# 대한민국
Sys.setlocale("LC_ALL", "C")
kr_df <- gtrends(c("빅데이터", "데이터 과학", "기계 학습", "딥러닝"), geo = c("KR"), time="2010-01-01 2018-10-09", hl = "ko-KR")
Sys.setlocale("LC_ALL", "Korean")
# us_df %>% write_rds("data/us_df.rds")
# kr_df %>% write_rds("data/kr_df.rds")
구글 추세 데이터를 다운로드 받아 이를 ggplot
으로 시각화한다. 2017년을 기준으로 빅데이터에 대한 검색어보다 기계학습과 데이터과학에 대한 인기도가 급상승하는 것으로 나타나고 있다. 가능한 해석은 미국 사회는 데이터 축적을 넘어 데이터과학, 기계학습, 딥러닝을 통해 가치를 창출하는 단계로 넘어간 것으로 파악된다.
library(extrafont)
loadfonts()
us_df <- read_rds("data/us_df.rds")
kr_df <- read_rds("data/kr_df.rds")
us_df$interest_over_time %>% tbl_df %>%
mutate(hits = as.integer(hits)) %>%
ggplot(aes(x=date, y=hits, color=keyword)) +
geom_line() +
labs(x="", y="구글 인기도", color="구글 검색어", title="미국 4차 산업혁명 구글 추세") +
theme_minimal(base_family = "NanumGothic") +
theme(legend.position = "top")
대한민국은 상대적으로 빅데이터와 딥러닝이 인기를 얻어가고 기계학습과 데이터과학은 거의 회자되지 않는 것으로 나타난다.
Kamil Bartocha (lastminute.com), “The Inconvenient Truth About Data Science”↩︎
Elena Grewal(July 25, 2018), “One Data Science Job Doesn’t Fit All”↩︎
Alfonso R. Reyes, Chief Data Scientist at AEM Enersol (September 11, 2018), “For what things R programming language is better than Python?”, LinkedIn↩︎
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com