데이터과학 탐구노트 #0. 시작하며
개인적으로 필자가 최근 들어 관심이 부쩍 늘어버린 것이 하나 있다. 바로 최근 이슈가 되어, 필자가 진학하려고 하는 과학계는 물론이거니와 기업, 사회 곳곳에서 그 사용 빈도가 늘고 있는 아름다운 기술, ‘데이터 분석’이다.
컴퓨터나 기타 전산 장비를 이용하여 주어진 데이터들에서 공통점이나 특이점을 찾아내고, 통계학적인 분석을 통해 이들에서 얻어진 특징들을 이용하는 것이 주된 목적에 해당할 것인 이 ‘데이터 분석’은, 요즘에는 ‘데이터과학(Data Science)’라는 이름으로 불리고 있기도 하다.
필자가 예전에 초등학교 5학년 때 처음 담임 선생님의 주선으로 접했던 C언어는, 어느새 고등학교 2학년이 되어 대학 진학을 앞두게 된 지금 Python과 Java와 같은 다양한 언어들을 접한 7년차 아마추어 프로그래머로 이끌어주었다. 지금 와서 그 중간 과정을 되돌아보면 쉽게 올라온 것은 분명히 아니었다. 대부분의 초보 프로그래머들이 그렇듯, 뭔가 예제를 따라해보고, 뭔가 빨간 글씨로 오류 메시지가 출력되면 그대로 에러 메시지를 복사해서 Stackoverflow와 같은 사이트에 이미 알려진 해결책이 있는지 찾아보기도 하고, IDLE가 문제가 있는 것 같아 지우고 다시 설치하는, 이른바 노가다를 통해 빚어진 것이 오늘이었다.
하지만 불행하게도 그 당시에는 대한민국에 코딩 열풍이 불지 않은 차였기 때문에, 필자의 경우는 한국어로 되어 있는 가이드나 튜토리얼을 접하지 못하고, 어렵게 영어로 된 튜토리얼을 맨땅에 헤딩하는 식으로 번역해서 공부했던 것 같다. 이제 배우는 머신러닝의 경우도 마찬가지인데, 대한민국은 여전히 코딩 열풍이 불고 있으나, 그 코딩에 관한 전문적인 지식을 누구나 쉽게 엑세스할 수 있는 인프라는 외국에 비해 다소 부족하다. 그렇기 때문에, 지금 데이터과학에 대하여 관심을 가진 끝에 필자가 찾아낸, Coursera와 같은 영미권 사이트에서야 이러한 내용을 좀 체계적으로 공부할 수 있는 것이 실정이다.
필자는 데이터과학에 처음 입문하지만, 이러한 생각을 바탕으로 하여, 필자가 공부하는 내용을 한국어로 정리한 이번 ‘데이터과학 탐구노트’ 시리즈를 시작하게 되었다. 혹여나 필자의 포스트가 데이터과학에 입문하려는 많은 이들에게 도움이 되지 않을까 하여, 최대한 정성을 다해서 작성할 생각이다. (그런 생각으로 특별히 이 시리즈는 커버도 따로 준비했다!)
함께 공부해나가는 여러분들을 위하여, 필자가 어떤 책과 사이트를 참고할 것인지를 서두에 밝혀둔다. 혹자 필자가 공부해나가는 과정에서 추가적인 웹페이지나 서적을 참고하게 된다면, 이 글에 추가할 것이니 참고하기 바란다.
필자가 참고하는 책과 온라인 문헌 자료 일람
– Coursera, Machine Learning, Stanford Univ.
– “처음 배우는 데이터 과학” – 한빛미디어, 2018. 필드 케이디 저, 최근우 역.
필자는 이번 ‘데이터과학 탐구노트’ 시리즈를 크게 3개 서브 시리즈로 나누어 포스팅할 생각이다. 물론, 워드프레스 ‘시리즈’ 플러그인의 서브 시리즈를 지원하지 않는 한계로 인하여, 이들 포스트들은 모두 ‘데이터과학 탐구노트’ 시리즈의 형태로 묶여 포스팅될 것이다. 하지만 독자 여러분들의 이해를 돕기 위하여, 타이틀과 커버 이미지에, 이를테면 “데이터과학 탐구노트 – Mathematical Basis”와 같은 형태로, 그 서브 시리즈명까지 명시하여 포스팅할 예정임을 밝혀둔다.
필자가 나눈 서브 시리즈 3종은 다음과 같다:
- 데이터과학 탐구노트 – Mathematical Basis
데이터과학은 기본적으로 선형대수학적 지식이나 통계학적 고급 기술을 요구하는 경우가 많다. 당장에 머신러닝의 분류기를 공부하는데에도, 행렬과 벡터에 관한 연산 지식을 요구한다. 따라서, 필자는 처음 입문하는 독자들과 함께, 공부하는 수학적 지식들은 이 서브 시리즈로 묶어 포스팅할 것이다. - 데이터과학 탐구노트 – Programmatic Basis
당연하게도 전산학에서 출발한 데이터과학은 컴퓨터 프로그래밍에 관한 기술과 지식들을 요구로 한다. 필자는 기본적으로 Python과 같은 프로그래밍 언어는 독자 여러분들이 기본적으로 알고 있다고 가정하고, Octave와 같은 생소한 언어들이 등장하는 경우, 그 문법을 함께 알아가는 식으로, 그리고 실제 머신러닝이 컴퓨터 상에서 어떻게 구현되는지는 이 서브 시리즈로 포스팅할 것이다. - 데이터과학 탐구노트 – Conceptional Basis
데이터과학에서 어떤 기본적인 지식이나 개념들이 등장하는 경우, 즉 예컨대 머신러닝의 정의나, 학습 방법, 분류기의 종류와 특징과 같은 개괄적인 개념들의 경우는 수학적이거나 코드를 통해 구체적으로 구현하는 것이 아니라면 이 서브 시리즈로 묶어 포스팅할 것이다.
다시 한 번 강조하지만, 필자도 데이터과학에 처음으로 입문하고 있다. 따라서 이 연재 시리즈의 경우는 항상 정확한 정보를 포함하고 있지 않을지도 모른다. 독자 여러분들은 이 점을 항상 주의해야 할 것이라 생각된다.
하지만, 함께 공부해나가는 여정에, 여러분들과 함께할 수 있다는 것은 커다란 행운임이 분명할 것이다.
이제, 출발해보자!