왜 Python이 아니라 R로 강의하는거야? – R w/ TensorFlow

실리콘밸리에서 데이터 사이언티스트라고 소개하면 (당연히 직장이 어딘지 물어보고 난 다음에) 어떤 프로그램을 쓰는지 물어본다. 필자가 처음 실리콘밸리에서 직장을 찾던 시절에는 R과 Matlab, SPSS같은 패키지를 댔었고, 회사가서 일을 하면서 Tableau 같은 Visualization tool을 어떻게 빅데이터 셋에 적용하는지 배웠다. 보통은 개발자 출신들이 Python으로 데이터 사이언스에 접근하고, 통계쪽 백그라운드 있는 사람들이 R로 데이터 사이언스에 접근하게 되는지라, R vs. Python으로 나눠서 어떤 랭귀지를 주로 쓰는지로 어떤 백그라운드가 있는지 대충 감을 잡을 수가 있었다.

한국 와보니 일단 데이터 사이언스가 “컴공” 출신들만 할 수 있는 학문이라고 착각하는 사람이 대단히 많았고, 어디가서 데이터 사이언스 한다고 할려면 Python으로 머신러닝 패키지를 쓸 줄 아는게 곧 데이터 사이언스라는 고정관념을 가진 사람들, 그리고 Python은 개발자의 언어니까 개발자만 데이터 사이언스를 하는거라고 생각하는 사람들과 부딪히는 경우가 잦았다.

왜 그럴까를 곰곰히 생각해봤는데, 외람되지만 필자가 찾은 원인은 “시장 수준이 낮아서” 밖에 없다.

 

왜 Python 이 아니라 R로 데이터 사이언스?

우선 TensorFlow나 scikit-learn 등으로 외부에 알려진 머신러닝 샘플 코드가 개발자들 위주로 Python으로 나와있다. 그러다보니 머신러닝 이론 자체를 이해하고 이게 통계학을 이용하는 학문이다는 관점에서 머신러닝을 이용하는 사람은 거의 없고 (사실 이런 사람들 숫자 자체가 워낙 적으니까), 개발자들이 오픈 소스 머신러닝 코드들을 갖다 쓰면서 자기가 머신러닝 할 줄 안다고 주장하는 경우가 시장의 주류가 되어 버렸기 때문이(라고 생각한)다. 안타깝다.

사실 Kaggle에 나오는 Data science competition 보면 머신러닝에 쓰이는 이론들 몇 가지를 자신들만의 논리를 이용해서 잘 조합한 다음에 결과값을 찾아낸다. 예를들면 시계열 데이터를 트렌드, 주기, 에러로 구분해낸 다음에, 각 부분별로 어떤 변수를 써야하는지 Factor Analysis도 해보고, Lasso 알고리즘을 돌려보기도 하고, 나름대로 결론을 내리는 과정을 거친다음, 문제의 목적에 따라 Neural Network 기반한 방법으로 접근할 때도, 심지어는 단순하게 Logit을 쓸 때도 있다. 그냥 오픈 소스 머신러닝 코드들을 copy & paste하고 있는 사람들이 할 수 있는 작업이 아닌데, 저런 경험을 쌓은 사람이 진짜 Data Scientist인데…라고 생각은 하지만 정작 시장이 이해를 못하고 있으니…

필자도 처음에 TensorFlow 라는게 있다는 이야기를 듣고, 도대체 얼마나 쉽게 쓸 수 있도록 만들어놨길래 다들 이러는가 싶어서 어쩔 수 없이 Python을 배웠다. 온라인으로 좋은 Reference point가 있으니 궁금하신 분은 참고해도 좋겠다.

그렇게 시간을 꽤나 들였는데, 2016년 말 경에 R 패키지를 만드는 CRAN에서 TensorFlow를 R에서도 쓸 수 있도록 만들어 놓은 걸 발견했다. 진작에 알았으면 귀찮게 Python 안 배워도 됐는데….

링크: https://cran.r-project.org/web/packages/tensorflow/index.html

사실 간단한 머신러닝 소스 코드는 이미 필자가 R로 갖고 있어서 많이 쓰지는 않지만, 그래도 가끔 쏠쏠하게 쓰고 싶을 때 참 편하게 되었다.

R 유저층이 넓고 다양하기 때문에 시간이 지나면서 R로 머신러닝 돌리기 더 좋아질 것이다. 얼마전엔 단순 신경망 모델 (Neural Network)만 쓰는게 아니라, 하나 이상의 Node가 stochastic한 경우를 고려하는 (쉽게 말해서 중간에 필요없다 싶은 경우를 제거하는) Restricted Boltzman도 구현하는 패키지가 나와있더라. 자세한 내용은 여기에서 찾아볼 수 있다.

 

R로 배우는 데이터 사이언스

처음 데이터 사이언스 강의 한다고 했을 때, 개발자들 대상으로 “Python으로 TensorFlow 쉽게 쓰는 방법” 같은 강의를 할까도 생각했었다. 아마 개발자들 모으기는 좋았을지 모르지만, 데이터 사이언스는 “개발”이 아니라는 필자의 철학을 포기해야하는 수업이 될 것 같아 마음이 내키질 않았다. 더군다나 R로도 TensorFlow를 쓸 수 있도록 패키지가 나와있는 마당에 굳이 개발자에 국한된 언어를 써야할 필요는 없는 것 같다.

몇 번이고 반복해서 이야기하지만, 데이터 사이언스는 개발자의 기술이 아니라, 데이터를 활용하려는 모든 사람이 알아야하는 상식이라고 생각한다. 대학에서 너무 기초 수준의 통계학 밖에 배우지 못했고, 그마저도 다 까먹었고, 빅데이터를 다룬다고는 하지만 사실 하는 일이라고는 단순하게 그래프만 그려대는 데이터 분석가의 삶을 살고 있는 사람들이라고해서 데이터 사이언스를 배우지 못할 이유가 없다. 개발자들이 머신러닝 오픈소스에 기대듯이, 통계 초보나 데이터 분석가들도 얼마든지 데이터 사이언스 오픈소스에 기대서 다양한 작업을 할 수 있다.

이렇게 써 놓고보니 필자가 무슨 개발자를 악마라고 생각하는 것처럼 보이는데, 오해마시라. 필자도 개발자 좋아한다 ㅋㅋ

개발자들도 필자의 수업을 오면 얻는 부분이 많을 것이다. 당장 교과서 속에만 있는 머신러닝이 아니라 실제로 이걸 어떻게 적용하는지도 알 수 있고, 머신러닝 밖에 있지만 데이터 다루다보면 꼭 알아야하는 Forecasting, simulation과 더불어 Data visualization에 대한 다양한 지식을 배울 수 있다. Python이 최근에 많이 발전했지만, 그래도 여전히 R이 Data visualization이라는 측면에서 놓고보면 Python보다는 더 많은 옵션을 주는 프로그램이니만큼, R로 데이터 사이언스 강의를 하는게 Python으로 하는 것보다 더 많은 사람들을 대상으로 더 다양한 정보를 제공해 줄 수 있을 것 같다.

 

다음글 – R과 Python을 같이 쓰는 법

X