'데이터 사이언티스트'에 해당되는 글 2건

  1. 2016.03.06 데이터마이닝과 데이터마이너
  2. 2013.12.15 [Q&A] 데이터 사이언티스트가 되고 싶은 학생입니다.
Share           Pin It
다음 검색에서 '데이터마이너'라는 검색어가 갑자기 많이 들어온 날이 있었다. 강풀 작가의 '마녀'라는 작품 속에서 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

===
B: https://brunch.co.kr/@jejugrapher
F: https://www.facebook.com/unexperienced


댓글을 달아 주세요

Share           Pin It

오랜만에 페이스북을 통해서 데이터 사이언티스트가 되고 싶은 학생의 고민상담이 들어와서 글을 적습니다. 질문을 요약하면 다음과 같습니다.

캠프에 참석했다가 다음소프트의 송영길 부사장의 발표를 보고 데이터 사이언티스트가 되고 싶어졌다.
(범죄예약이나 사회정책 등) 주어진 문제를 다각도로 조사 이해해서, 이를 분석하고, 솔루션을 찾아내는 일을 하고 싶다.
빅데이터 연구센터 및 연구실 등을 고려해서 산업공학과에 진학하면 될 것같아서 준비해오고 있었다.
평소보다 수능성적이 낮게 나와서 지원했던 대학에서 좋은 결과를 얻지 못했다.
현재 성적으로는 중상위권 대학에서 장학금을 받으면서 입학도 가능하다.
재수를 해서 원하던 대학의 학과 (컴공으로 수정)로 진학하는 것이 나을까요?

지난 번의 문과학생의 진로고민이나 타대학으로 편입을 고려중인 분의 질문에 비해서는 덜 기술적으로 답변을 드려야할 것같습니다. 이런 저런 다양한 측면에서의 진로에 대한 답변이 될 듯합니다. 어쩌면 -- 각자의 상황을 면밀히 모르는 상황에서 -- 아주 원론적인 답변만 해드릴지도 모르겠습니다.

요즘은 미디어의 영향이 개인의 진로에도 많은 영향을 미치는 듯합니다. 어느 시대나 인기 직업이나 인기 학과가 존재했지만, 지금처럼 특정 분야의 특정 직업을 콕 찝어서 말하지는 않았던 것같았는데, 최근에 진로를 고민하시는 분들은 아주 구체적이라서 보기에 좋습니다. 확고한 신념이나 비전을 가지고 무엇이 되겠다 (어떤 직업을 갖겠다)고 마음을 먹었다면, 어떻게 그것을 이룩하겠다는 다양한 방법 (테크트리 또는 커리어패스)들이 존재합니다.

데이터 사이언티스트가 되는 것이 진정 원하는 것이라면 수학과 (응용통계), 산공과, 컴공과 등 어느 학과를 선택하느냐는 어떤 측면에서 별로 중요한 문제는 아닌 듯합니다. 각 학과마다 특징이 있고, 다른 다양한 경로를 통해서 최종 원하는 꿈을 이룰 수는 있기 때문입니다. 그럼에도 불구하고 학과를 선택하는 것이 중요한 이유는 학과마다 조금 다른 관점/시각을 가지고 있기 때문입니다. 특히 세계관이 형성되는 젊은 시절에는 특정 학과의 가치관, 그리고 주변의 친구들의 생각들이 나의 평생 세계관을 형성하는데 결정적입니다.

특정 학과의 특성을 짧게 모두 설명할 수 없지만, 학과마다 문제와 해법에 대한 접근방법에 차이가 있습니다. 다른 글에서 과학자는 해법을 가지고 문제에 접근하고, 엔지니어는 주어진 문제에서 다양한 해법을 찾아서 적용한다는 말을 했습니다. 수학, 컴사/컴공, 산공의 순으로 과학과 공학의 정도가 차이가 나기 때문에, 30대의 전문 직업인이 되었을 때 다르게 생각하고 다르게 행동할 가능성이 매우 높습니다. (극단적으로 단순하게 말해서 산공은 다양한 문제 이해, 수학은 정확한 문제 모델링, 컴공은 솔루션 실행에 강점이 있는 듯함)

그래도, 데이터 사이언티스트들에게 컴사/컴공을 추천하는 이유는 좀 더 어린 나이에 프로그래밍이나 알고리즘에 더 친숙해져라는 의미입니다. 데이터 사이언티스트가 목표이므로 전공필수가 아니라면, 당연히 복수전공/부전공/수강 등을 통해서 타과의 수업들을 미리 들어둬야 합니다. (당연히 수학과를 진학하더라도 필요한 컴공, 산공과 수업을 들어둬야할 것이고, 산공과에 가더라도 수학이나 컴공 수업을 들어둬야 합니다.) 특히 질문자처럼 다양한 '문제/애플리케이션'에 관심이 있는 경우라면, 그래서 산업공학도 나쁘지 않겠다고 짧게 답변드렸습니다. 어쨌든 학부 졸업만으로는 원하는 분야의 직업을 얻기는 힘듭니다. 가능하더라도 대학원에서 보낸 시간 이상의 사회경험이 축적된 이후에서야 원하는 수준에 이릅니다.

저는 재수를 하지 않아서 재수하면서 보내는 1년이 어떤 시간인지 잘 모릅니다. 일단 붙어놓고 재도전하라라는 조언은 하지 않겠습니다. 국내에서는 타대생들의 대학원 진학이 (또는 타과로의 전과 진학) 자대생들보다 어려운 것은 사실이나, 불가능한 것도 아니고 또 예전보다 빈번해졌습니다. 그리고 어떤 경우에는 일부러 다른 대학 또는 다른 과의 학생들을 선호하는 경우도 있습니다. (지금 생각해보면 저도 용기가 부족해서 다양한 도전을 해보지 못했던 점이 매우 아쉽습니다.) 졸업 후에 다른 상위권 대학의 대학원에 진학하지 못할 것을 두려워서 진학을 포기하는 우는 범하지 않았으면 합니다. (사회 문제이기도 하지만, 전반적인 자연대/공대에서 대학원 진학률이 떨어지는 상황이기 때문에 타대학/타과로의 대학원 진학의 문이 매우 넓어졌습니다.)

만약 1년 뒤에 재도전을 확신한다면 굳이 4년동안 원하지 않던 대학에서 (후회하면서) 시간을 허비할 이유도 없습니다. 길게 보면 지금 1년은 별로 아까울 것도 없습니다. 결과론적으로 얘기하고 있지만, 실제 결과론적 상황 (데이터 사이언티스트)를 염두에 두고 있기 때문에 이렇게 얘기할 수 밖에 없습니다. 원하는 바 (사회/주변으로부터 인정받는 데이터 사이언티스트라는 타이틀)를 얻기 위해서 최소 10년의 시간이 필요합니다. 조금 낮은 곳에서 시작하거나 (올해 성적에 맞는 대학에 진학) 조금 늦게 시작하거나 (재도전 후에 원하는 대학에 진학), 결국 원하는 포지션/높이에 오르려면 필요한 노력과 수고는 같을 수 밖에 없습니다. 불가능을 전제로 다양한 가능성을 배제하지는 말라는 당부드립니다.

적으면서 답변의 뉘앙스가 조금 바뀐 점도 있고, 또 질문자가 원했던 답변이 아닐 수도 있습니다. 질문자와의 면밀한 관계 (?)가 없는 상황에서 아주 원론적인 답변밖에 못 드리는 점은 양해 바랍니다. 최소 10년을 염두에 두고 고민하고, 가능성을 미리 제거하지는 말라는 답변을 드립니다.

==

페이스북 페이지: https://www.facebook.com/unexperienced

댓글을 달아 주세요