데이터를 공부하면서.


이 글의 내용은 지극히 주관적인 생각을 적은 것입니다 :)

용어

데이터 과학에서는 엄청나게 많은 용어, 엄청나게 많은 동의어, 엄청나게 많은 ‘영어’가 혼재한다. 대표적인 예로 ‘빅데이터’, ‘데이터 마이닝’, ‘데이터 과학’ 등이 있다. ‘데이터’라는 말 자체가 한국어가 아니고 그 속을 들여다보면 더욱 더 많은 영어를 만날 수 있다. 물론 실제로 모델을 구현할 때야 이런 용어들을 전부 알고 있지 않아도 괜찮을 수 있지만, 데이터 과학, 데이터 마이닝을 하고 싶다면 끊임없이 공부할 각오가 필요하다. 다른 이들의 논문을 읽고 코드로 구현하게 될 때도 있을 것이고, 새로운 오픈소스 라이브러리, 프레임워크 또한 주의 깊게 관찰하며 효율적으로 활용할 줄 알아야 할 것이다. 그리고 그런 새로운 정보를 이해하기 위해, 가능한 한 많은 용어를 알아두는 편이 좋을 것 같다. 또 2016년 2017년이 되며 관련된 한국어 자료도 늘어나고 있지만, 여전히 거의 절반 이상의 용어는 영어 원형과 별 차이가 없기 때문에 관련 용어를 원어로 받아들일 수 있으면 그것도 꽤 도움이 될 것 같다. 또 완벽하게 번역할 수 없는 용어들도 많기 때문에(ex : Data, Likelihood, Logistic…) 이들이 갖는 정확한 느낌을 잡아내기 위해서 위키피디아 문서를 많이 읽어보는 것도 좋을 것 같다.

자료 찾기

Wikipedia - (영문 한정) 카테고리와 출처 표기, 관련 문서 연결이 엄청 잘 되어 있다.
Awesome list - Awesome Data Science, Awesome Machine Learning, Awesome Big Data, Awesome Streaming, Awesome Data Engineering, Awesome Public Datasets …
O’Reilly - 좋은 책이 많은데 그 중에서도 저자가 PDF를 비롯한 e-book 포맷을 풀어놓은 책도 많다.
Kaggle - 다른 Data Scientist가 만들어 놓은 Kernel을 통해 공부할 수 있다.

데이터는 수학, 수학, 수학.

계산이야 컴퓨터가, 심지어 알고리즘의 방정식 조차도 방대한 라이브러리가 구현해주지만 아무래도 한 줄의 방정식이 무엇을 말하는 지 이해할 줄 알아야 하고 코드로 구현할 줄 알아야 한다. 수학적인 사고가 가능해지면 그 후에는 응용과 창의력의 영역이 아닐까 싶다. (완전 새로운 코드 짜기, 완전 새로운 방법론 제시, 방법론을 읽고 밑바닥부터 코드 짜기, 코드를 보고 수식 적기…)

그러기 위해 공부해야겠다.

선형대수 (주로 벡터 공간과 행렬)
기본 미적분, 고급 미적분
Frequentist 확률
Bayesian 확률 (Think Bayes)
통계 (Think Stats)
수학적 최적화
수학적 귀납법
이산 수학 (어느 정도)

Black box

I don’t know what’s going on with the code that I wrote.
내가 짠 코드가 무슨 일을 하고 있는지 알기 위해 노력하자.

시각화

코딩이 간단한 오픈소스 라이브러리를 적극적극적극적으로 활용하자. Data Science from scratch에서 좋은 데이터 과학자는 시각화 라이브러리를 그냥 Ctrl C+V해서 쓴다고 말한다. (…)