빅데이타 & 머신러닝

빅데이타 팀을 이루기 위해서 필요한것 3가지

Terry Cho 2015. 1. 12. 07:55

빅데이타 팀을 이루기 위해서 필요한것 3가지

조대협(http://bcho.tistory.com)


요즘 모가 그렇게 바쁜지, 블로그 업데이트를 한참 못했습니다.

모처럼 주말에 시간이 있어서, 그간 정리한번 해야지 했던 내용들을 올려봅니다.

먼저 빅데이타 팀에 대한 이야기인데, 아래 그림은 빅데이타에서 유명한 그림입니다. 데이타 사이언티스트가 가져야할 그래프로 표현한것인데, 제가 해석하기에는 데이타 사이언티스트 보다는 빅데이타 팀이 가져야할 영역으로 보입니다.



각 영역별로 설명을 해보자면


1.Math & Statistics (수학과 통계학에 대한 지식)

빅데이타 처리는 수학과 통계학적인 지식을 전제로 합니다. 데이타의 상관관계를 분석하거나 데이타의 특성을 파악하는 등의 기술은 수학 특히 통계학적인 지식을 필요로 합니다.

얼마전 부터 빅데이타 영역을 공부하다 보니, 결국은 통계학쪽을 보지 않을 수 없게 되더군요. 그런데, 빅데이타에서 사용되는 수학적 지식 및 통계학적인 지식이 실제로 공부를 해보니 고등학교때 배운 그것과는 다르다는 겁니다.

이야기를 해보면, 학교때에서는 미분과 적분을 어떻게 하는지를 배웠지만, 이 미적분이 어디에 사용되는지? 왜 사용해야 하는지에 대해서는 그 다지 심각해게 생각해본적이 없습니다. 평균값에 대한 값에 대한 편차를 표현하는 표준 편차에 대해서도, 왜 편차에 대한 제곱을 평균으로 해서 사용하는지에 대해서는 설명을 들어본적이 없습니다. 상식적으로 생각하면 편차의 절대값에 대한 평균을 사용하는 것이 평균값에 대한 편차로 사용하기에는 조금 더 정확하겠지요. (자세한 설명 : http://bcho.tistory.com/974)

어쨌거나, 미분이나 적분은 R이나 매트랩과 같은 수학용 프로그래밍 도구를 사용하면 그냥 풀어줍니다. 어떤 공식을 왜? 언제 사용하는지 그리고 통계학 모델이 어떤것이 있는지 이해하는 것이 더 중요하다고 봅니다.

이 부분은 엔지니어가 단시간에 따라 잡을 수 없는 영역이기도 하지만, 반대로 이 부분을 커버할 수 있다면 다른 엔지니어들과 그만큼 차이를 만들어낼 수 있는 부분이기도 합니다.


2.Hacking Skills (도구에 대한 이해 능력)

수학 및 통계학적인 지식을 이용해서 데이타를 분석하고 알고리즘을 정의하였으면 이를 실제로 컴퓨팅 환경에 옮겨야 합니다.이를 위해서는 도구에 대한 이해 능력이 필요합니다.

즉 하둡,NoSQL,R 프로그래밍 언어,클라우드 컴퓨팅과 같은 구현에 필요한 기술을 이야기 합니다.


3. Substantive Expertise (특정 업무/도메인에 대한 전문성)

마지막으로 도메인에 대한 전문성입니다. 데이타가 있고 수학적인 지식이 있더라도, 이 데이타의 의미를 파악하는데는 업무 지식이 필 수 입니다. 게임에서 아이템 구매등에 대한 데이타가 있다하더라도 이것이 어떤 의미를 가지는지를 알 수 없으면 데이타를 분석할 수 없습니다.

은행에서 원장거래에 대한 데이타가 있더라도 지식이 없다면, 데이타는 그냥 숫자에 불과 합니다.


커뮤티케이션과 수평적 조직 구조 

이렇게 종합적인 부분이 필요한것이 빅데이타 분석 영역인데, 이 세가지를 골고루 가지고 있는 사람을 찾는 것은 매우 어렵습니다. 그래서 각 영역의 전문가들이 모여서, 하나의 팀을 이루어서 데이타를 분석하게 되는데, 이때 중요한것은 동등한 발언권 즉 커뮤니케이션입니다.

하둡을 잘 아는 사람이 팀장이라서, 통계적인 지식을 무시하고 무조건 구현 위주로 시스템을 만들거나, 또는 수치해석에 뛰어난 사람이 알고리즘을 매트랩으로만 구현하려고 한다거나, 이렇게 되었을때 제대로된 데이타 분석이 이루어질 수 없습니다.

각 분야에 전문성을 가진 사람이 동등한 발언권을 가지고 각 분야에 대한 전문성을 발휘한것이 합쳐 졌을때 제대로된 데이타 분석을 이룰 수 있기 때문에, 빅데이타 분석에 있어서 가장 중요한 것은, 기술이나 수학 보다는, 팀 셋업과 평등한 커뮤니케이션 구조라고 볼 수 있겠습니다.

그래서 요즘 실리콘 밸리나 앞서가는 기업들이 애자일 문화를 기본으로 한 수직적인 소통 구조보다는 수평적인 소통 구조를 선호하고, 특정 기술에 대한 전문성이 있는 사람보다는 협업을 잘하고 새로운 지식을 잘 받아드리는 재능이 있는 사람을 선호하는 것 같습니다.


아직도 삽질하면서 공부하고 있는 분야이기는 합니다만, 대용량 분산 서버 기술이 점점 보편화 되가는 이 상황에서 차별화된 개발자가 되려면, 빅데이타 부분은 꼭 준비해야 하는 부분이 아닌가 싶습니다. 단기간에 준비하기는 어려우니 2~3년 시간을 가지고 준비를 해야 하지 않을까 싶네요