본문 바로가기

DM ML AD

데이터마이닝과 데이터마이너

다음 검색에서 '데이터마이너'라는 검색어가 갑자기 많이 들어온 날이 있었다. 강풀 작가의 '마녀'라는 작품 속에서 PC 캡쳐 화면과 함께 주인공이 데이터마이너가 됐다라는 짧은 문구가 등장했던 때다. 해당 캡쳐 화면에는 SAS라는 데이터분석툴 아이콘도 있었고 지금은 없어진 마이피플 아이콘도 등장했다 (유료화로 화면캡쳐는 생략. 9화였음.). 강풀 작가님이 웹툰을 그리기 위해서 예전 같은 팀의 팀원에게 자문을 얻었는데, 그 분의 (의도된) PC화면으로 유추된다. 당시에 내가 서울에서 근무했다면 미팅에 함께 참석했지 않을까?라는 생각도 해본다.

빅데이터, 데이터 사이언스, 인공 지능, 딥러닝, 머신러닝 (기계학습) 등의 많은 용어/개념들이 버즈buzz되고 있지만 관련 분야의 사람들이 아니라면 여전히 데이터마이닝 또는 데이터마이너라는 용어가 생소한 것 같다. 그래서 데이터마이닝/너에 대한 지극히 개인의 의견을 적으려 한다.

데이터마이너는 무엇을 하는 사람인가? 데이터를 보는 사람이다. 왜 데이터를 보는가? 데이터에 내재한 패턴 pattern을 찾거나 규칙 rule을 만들기 위해서다. 그런 패턴이나 규칙은 왜 찾고 만드는가? 문제를 해결하기 위해서다. 그렇다. 내가 생각하는 데이터마이닝은 여러 문제와 관련된 데이터를 관찰함으로써 규칙을 찾고 적용해서 문제를 해결하는 것이다. 문제를 해결하는 접근법은 다양하겠지만 데이터에 근거를 둔다는 점에서 다른 것들과 차별점이다. 물론 데이터가 데이터마이너만의 것은 아니다.

문제를 해결하기 위해서 데이터를 본다라고 표현했지만 때로는 문제를 찾아내기 위해서 데이터를 보는 경우도 종종 있다. 즉, 주어진 문제를 해결하기 위해서 근거 데이터를 수집하고 추론하는 것도 마이너의 일이지만, 이미 가진 데이터에서 시스템에 내재된 문제점을 찾아내는 것도 마이너의 역할이다. 그래서 단순히 수학적, 공학적 기술/기법 뿐만이 아니라, 다양한 경험과 (잡) 지식이 마이너에게 요구된다. 마이너가 활용할 수 있는 데이터는 단순히 시스템 구동에 필요한 데이터 (보통 DB나 텍스트 형태)나 시스템이 찍어내는 로그에만 한정된 것이 아니다. 

머신러닝 (또는 인공지능)은 데이터마이닝과 밀접한 관계가 있지만 같다라고 말하기는 어렵다. 밴다이어그램을 그린다면 상당한 공통 영역이 존재하지만 또 다른 영역이 분명 있다. 머신러닝은 특정 미션을 완수하기 위해서 근거 데이터로 학습시켜서 모사하는 것이 목적이다. 주어진 데이터 이상의 추론이 가능하다면 인공지능이라고 불러도 좋다. (Exploitation vs Exploration) 머신러닝/인공지능은 '기계를 사람처럼'이 모토이자 목적이다. 데이터마이닝은 많은 머신러닝 기술을 활용하지만 엄격함을 요구하지는 않는다. 인간 친화적이라고 표현하면 좋을 듯하다. 머신러닝에 일부러 모호함을 추가하는 연구도 진행되고 있지만...

데이터마이닝을 잘 하기 위해서 다양한 수학, 통계 지식이 필요하고, 고도의 알고리즘들도 만들어졌다. 그러나 그런 지식이나 알고리즘은 데이터를 잘 보기 위한 보조 기능을 하는 것일 뿐이다. 많은 지식과 알고리즘을 알고 있다고 뛰어난 데이터마이너가 되지는 않는다. 데이터를 잘 보는 능력과 그걸 돕는 기술을 많이 아는 것은 분명 같지 않다. 원시적이지만 -- 한계도 분명한 -- 텍스트나 엑셀의 테이블에 펼쳐진 (적은/제한된 양의) 수치나 데이터를 눈으로 확인해서 패턴/규칙을 발견할 수 있다면 HDFS에 쌓인 수 테라바이트의 데이터를 고도의 알고리즘으로 확인하는 것보다 더 낫다. 좀 극단적으로 표현했지만, 데이터마이닝은 기계가 이해하는 규칙이 아나라 사람이 이해하고 설명가능한 규칙을 찾는 것에 더 가깝다고 생각한다. (엄격함을 덜 요구한다는 의미도 이의 연장선에서 말한 것이다.)

R이나 SAS 등의 통계분석툴이나 파이썬이나 자바같은 프로그래밍 언어, 또는 Mahout이나 Spark MLlib 같은 (오픈소스) 라이브러리에 능한 것도 데이터마이너의 필수 덕목이 됐지만, 데이터를 보는 눈이 없다면 무용지물이다. 파리를 잡기 위해서 소잡는 칼을 휘두르는 모양새다. 수학이나 알고리즘 지식, 그리고 프로그래밍 스킬보다 도메인 지식 또는 비즈니스 로직을 개인적으로 더 중요하게 생각하는 이유도 데이터가 만들어지고 활용되는 곳을 잘 알아야지 데이터를 더 잘 볼 수 있기 때문이다. 물론, 때론 도메인 지식 (또는 지식 편향)이 데이터를 객관적으로 보는 것에 장애가 된다. 수학/통계/알고리즘과 프로그래밍 스킬, 그리고 도메인 지식은 데이터마이너가 되기 위한 일종의 트리니티라서 고른 역량이 필요하지만, 그렇지 않다면 각각의 능력을 가진 사람들을 모은 그런 팀을 구성하는 것이 필요하다. (그리고 모든 개발자들이 그렇듯이 영어를 읽고 이해하는 능력인 필수다. 유학 또는 취업으로 외국에 가지 않는 이상 영어를 듣고 말하고 쓸 기회는 별로 없지만 영어 문서를 읽어야할 일은 흔하다.)

수학이나 프로그래밍보다 도메인 지식이 더 중요하다고 얘기하는 가장 큰 이유는 우리가 일상에서 만나는 마이닝 문제 또는 해결책이 그렇게 복잡하지 않다는 점이다. 아주 간단한 연산으로 해결되는 경우가 많다. 물론 음성 인식이나 이미지 처리, 기계 번역과 같이 복잡한 태스크를 해결하기 위해서 사용되는 다양한 딥러닝 및 관련 기술들을 온전히 이해하고 구현하기 위해서는 수학과 프로그래밍 스킬이 필요하다. (딥러닝이 구조적으로 복잡해 보이지만 요소요소를 보면 사실 복잡한 연산은 아니다.) 하지만 일상에서 데이터를 가지고 하는 문제들은 그저 데이터를 연결하고 순위를 매기는 것에 불과한 경우가 허다하다. 대표적으로 추천 및 개인화 시스템이라는 것도 아이템과 아이템, 사용자와 아이템, 그리고 사용자와 사용자를 잘 연결시켜서 기준에 따라서 정열해서 상위 N개를 보여주는 것에 불과하다. 특히 독립적인 데이터 샘플이 많아지는 경우라면 더더욱 그렇다. 정성적인 추천의 품질을 가르는 것은 결국 도메인 지식이다. (정량적 지수는 다를 수 있다.) 흔히 말하는 클러스터링, 클래시피케이션 및 레그레션 등의 모든 개념들도 결국 데이터를 연결하고 나열하는 것, 또는 이를 잘 하도록 돕는 것 그 이상도 이하도 아니다.

야구 투수에 비유하면, 데이터마이너의 특기는 강속구가 아니라 제구력이다 (Control Artist). 데이터마이너는 데이터를 보는 사람이고 데이터에서 규칙을 찾는 사람이라는 정의의 연장선에서 생각하면 된다. 완벽한 모델을 찾고 모든 파라메터를 자동으로 최적화하려는 것도 연구의 한 축이겠지만, 여전히 대부분의 알고리즘들이 사람의 손을 타기 마련이다 (Human Intervention). 만능의 인공지능이 등장하지 않은 이상, 어떤 모델 또는 방법론을 선택하고 필요한 다양한 파라메터를 얼마나 잘 설정하느냐가 평범한 마이너와 좋은 마이너의 차이를 가른다. 도메인 지식과 경험이 중요하다는 이유도 제어 능력의 차이를 주기 때문이다. 딥러닝과 같은 강력한 한방 (강속구)를 가졌더라도 제어 능력이 없으면 의미가 반감된다.

데이터 엔지니어도 아닌 사이언티스타라는 사람의 입에서 경험 (또는 경험에 따른 감 — 고급지게 표현해서 인사이트)이 중요하다고 말하는 것이 참 이상할 법하다. 그건 내가 사이비라서 그렇기도 하지만, 실제 그렇기 때문이다. 문제 상황에서 가설을 세우고 데이터로 검증하기 때문에 데이터 사이언스라 불린다. 문제를 인식하고 적절한 가설을 세우고 실험 계획을 통해서 필요한 데이터를 모으고 분석 및 검증으로 얻은 결과를 해석해서 액션을 취하는 일련의 과정이 필요하다. 매우 간단한 과정이지만 이를 어떻게 실행하느냐에 따라서 투입되는 비용과 시간, 반복 그리고 승패가 결정된다. 이때 필요한 것이 -- 천재가 아닌 이상 -- 경험이다. 어차피 초보 마이너나 베테랑 마이너가 가지고 있는 기본 기술셋은 비슷하다.

이전 글에도 적었지만 데이터 문제가 아주 정확한 모델과 설정값을 요구하는 것 같지만 대부분의 경우 설명하기 쉬운 단조로운 모델과 설정하기 쉬운 근사값이 필요한 경우가 많다. 그리고, 경험이 쌓인다는 것 그리고 감이 생긴다는 것은 그저 오랜 시간동안 많은 데이터를 다뤘다고 해서 얻어지는 것은 아니다. 어쩌면 내가 이 글을 적으면서 그냥 데이터마이너라고 적었지만 실제 의미는 시니어 데이터마이너를 뜻했던 것 같다. 그냥 기계적으로 데이터를 분석하는 사람이 아니라 데이터로 생각하고 데이터와 함께 숨쉬는 사람을 생각했던 것이다. 오해를 막기 위해서 경험은 깊은 수학적 지식과 다양한 프로그래밍 연습 위에 쌓인다.

훌륭한 데이터마이너는 데이터를 잘 보는 사람이다. 특별한 재능과 기술을 가진 사람이 아니라 그저 데이터 위에 노는 사람이다.

P.S., 딱 4년 전인 2012년 3월 9일에도 같은 제목의 글을 적었습니다. http://bahnsville.tistory.com/546

===


반응형