본문 바로가기

DM ML AD

데이터 과학자와 머신러닝 개발자

별로 대수롭지 않은 주제지만 타임라인에 왕왕 등장해서 그냥 짧게 적는다. 평소에 나는 데이터 과학자 (Data Scientist)인지 아니면 머신러닝 개발자 (ML Enginerr)인지를 궁금해한 적이 별로 없었다. 데이터 과학자가 머신러닝 개발자인 듯하고 머신러닝 개발자가 데이터 과학자인 듯하고 그게그거라 생각했다. 데이터 과학을 오래 하다 보면 머신러닝 개발자가 돼있고 반대로 머신러닝 개발을 오래 하다 보면 자연스럽게 데이터 과학자가 돼있다고 본다. 그럼에도 굳이 구분을 해야 하는 걸까?

데이터 과학자든 머신러닝 개발자든 공통적으로 수학 지식, 프로그래밍 스킬, 그리고 도메인 이해가 필요하다. 이것에 이견을 갖는 사람은 거의 없을 거다. 기본 기술 세트가 같으니 '데이터 과학자 = 머신러닝 개발자'인 듯한데, 또 곰곰이 생각하면 용어 (데이터 vs 머신러닝)에서 오는 어감 때문인지 몰라도 '데이터 과학자 != 머신러닝 개발자'인 듯도 하다. 이젠 헷갈린다. 어쨌든 이제껏 달고나 시리즈에서 데이터 과학자라 했을 때는 머신러닝 개발자를 포괄해서 적은 거였다.

데이터 과학자와 머신러닝 개발자는 과연 다른 존재인가? 굳이 구분을 짓는다면 데이터와 기술 중 어디에 초점을 두느냐에 따른다고 본다. 데이터 과학자는 데이터를 분석해서 인사이트를 얻기 위해서 여러 기술 (알고리즘)을 이용하고, 머신러닝 개발자는 기술 (알고리즘 또는 모델)을 잘 구축하기 위해서 데이터를 활용한다. 즉, 데이터 과학자는 데이터가 중심이고, 머신러닝 개발자는 기술이 중심이다. 

데이터 과학자가 데이터를 분석할 때 항상 머신러닝 기술이 필요한 건 아니다. 단순한 EDA 작업을 통한 데이터의 통계치를 뽑아본다거나 여러 관점에서 그래프를 그려보는 것으로도 데이터 분석이 끝날 수도 있고, 때론 PCA나 t-SNE 같은 디멘전 리덕션 기술을 활용해서 복잡한 시각화를 간단히 한다거나 클러스터링 기술을 이용해서 데이터를 세그먼트별로 나눈다거나 분류나 회귀 기법을 이용해서 미지의 unseen 데이터를 예측해보기도 한다. 데이터 과학자에게 뒤에 나열한 디멘전 리덕션이나 클러스터링, 분류 등은 그저 데이터를 더 잘 분석하기 위한 도구일 뿐이다. (날이 갈수록 단순 도구 이상이지만)

반면 머신러닝 개발자 (또는 엔지니어)는 더 나은 모델을 만드는 것에 집중한다. 그런데 더 나은 모델이라는 것은 결국 데이터로 표현된 현상을 더 잘 설명해야 한다는 거다. 어떤 개발자가 X라는 알고리즘/모델을 만들었다고 치자. 이 알고리즘 X는 양자역학 이론을 기반으로 아주 복잡한 수식으로 표현된다고 하자. 그런데 주변에서 얻은 데이터를 이 알고리즘에 대입했을 때 예측 정확도가 30%였다면 알고리즘 X는 좋은 모델이 아니다. 그냥 임의 (Random)로 예측해도 평균 50%는 맞을 테니... 결국 좋은 모델을 만든다는 것은 데이터에 부합하는 알고리즘을 만든다는 거다. 다소 부차적인 작업이지만 데이터를 분석해서 인사이트를 얻는 것이 머신러닝 개발자가 더 나은 모델을 만드는 과정에 있다.

머신러닝 개발자가 도구를 만들면 데이터 과학자가 그걸 활용한다 정도로 굳이 구분할 수는 있다. (지엽적인) 관점에 따라서 둘의 역할이 다소 다를 수가 있지만 경력이 쌓이면 결국 같은 지점에서 만난다고 본다. 도구의 기능이 부족하면 그냥 데이터 과학자가 그걸 수정하거나 개선할 수도 있는 거고, 머신러닝 개발자도 자신의 도구를 다양한 데이터/문제에 적용해볼 수도 있다. 검법을 수련하는 무도인에게 칼춤을 잘 춘다고 하거나 칼춤을 추는 무용수에게 검법이 좋다고 말하면 실례다. 하지만 경지에 오른 고수의 몸동작은 그게 검법인지 칼춤인지 구분하기 어렵다. 데이터 과학자와 머신러닝 개발자의 구분은 결국 무의미하다.

반응형