카테고리 보관물: 미분류

타임라인 광고 타겟팅 – timeline ad targeting

 

지금 하는 일과 관련이 있는 것이라서 zdnet기사에 앱넥스트라는 회사에서 제안했다고 하는 타임라인 타겟팅이라는 기법(아이디어)에 대한 기사를 스크랩해 놓은적이 있는데 내용도 정리할겸 그림툴도 써볼겸(사실은 이게 본래의 포스팅 목적입니다 ‘ㅡ’;;) 해서 포스트를 올립니다.

직접 기사를 읽어보시면 되겠지만 저는 그림툴을 사용해 보는 것이 목적이므로 정리를 좀 해보자면 이렇습니다.

최근의 앱인스톨 광고 그러니까 앱인스톨을 유도하는 배너 광고들이 실적이 좋지 않다고 합니다.  그 이유 중의 하나가 이제 사람들은 자기 스마트폰에 더 이상 새로운 앱을 설치하지 않는다고 합니다.

  1. 이미 필요한 것을 대부분 설치했고 사용하는 것들이 몇개에 한정되어 있기 때문입니다.
  2. 그리고 필요한 것이 생기면 그때그때 찾아서 설치해도 되니 미리 설치해 둘 필요는 없습니다.
  3. 게임이 아니라면 그런 배너에 반응을 잘 안하게 되는 게임도 설치 광고가 그렇게 큰 효과를 보지 못한다는 말이 많습니다. (다 그런것은 아니겠지만요)

그래서 위 기사에서 말하는 아이디어는 이렇습니다.

일종의 개인화 타겟팅(personalized targeting)인데 위의 그림처럼 사람들의 타임라인을 추적(감시한다기 보다는 엿본다는 것이 맞겠습니다)해서 상황들을 모니터링하다가 특정 상황이 되면 그 상황에 필요한 앱인데 아직 사용자가 설치하지 않은 앱이 있다면 광고로 추천해서 바로 설치하도록 유도한다는 것입니다.

그러기 위해서 사용자가 사용하고 있는 스마트폰에 항상 사용자의 액션을 모니터링하는 앱이 필요한데 사실 대부분의 회사들이 이걸 하기가 현실적으로 불가능합니다. 스마트폰의 모든 상황을 전역으로 감시하는 장치를 스마트폰에 심을 수가 없기 때문입니다.

앱넥스트라는 회사는 자사의 SDK(스마트폰 애플리케이션에 광고를 노출할 수 있도록 해주는 킷)를 사용한 제휴 앱들을 이용해서 사용자의 행적(activity)를 보고 있다가 다른 앱을 설치하도록 유도할 수 있다는 것입니다. 알려주는 것은 아마 Push 기능 같은 것을 사용하지 않을까 싶습니다.

실현이 가능하다면 “앱을 설치할 수 밖에 없는 적절한 상황을 찾아서 그때 광고를 보여주면 설치를 많이 하겠지” 라는 것을 이용한 것인데요.

이걸 하기 위해서는 사실 앱 매체(광고를 보여주는 앱들)을 많이 제휴하고 있어서 그 앱들을 사용자가 늘 쓰고 있거나 빈번하게 쓰고 있어야 합니다. 즉 앱 매체 커버리지가 좋아야 합니다. 이것은 사실 진입장벽이 매우 높아서 말이 후발주자(모바일 광고 플랫폼 회사)들이 제휴한 앱들이 많지 않으면 힘듭니다. 아니면 끝판왕 하나를 제휴하던지요(카카오톡 같은 것?)

위의 앱 매체 제약 조건이 걸린다면 일반적인 PC 온라인 광고에서는 응용할 수 있는 방법은 라이프타임에 대한 모니터링을 길게 해서 상품을 추천해 주는 방법을 얼른 생각해도 할 수 있을것만 같습니다.

어떤 온라인 사용자가 추정 모델 또는 데이터온보딩(data on-boarding)으로 20대 여성이라는 것을 알고 다음과 같은 순서로 제품에 관심을 보였거나 구매를 했다면 그 다음 상황에 필요한 것을 유추해서 추천해 줄 수 있습니다.

청바지 → 워킹용 신발 → 워터프루프 화장품 → 수영복 → 카메라방수팩

다소 억지로 만든 예입니다만 저런 시퀀스가 있다면 카메라방수팩을 광고해서 구매하도록 유도할 수 있습니다.  물론 이것도 앱매체의 커버리지 문제처럼 온라인 웹페이지와 제휴가 많이 되어 있어야 하고 제품도 골고루 보여줘서 어떤 행동(behavior)를 하는지 시차를 두고 기록해 둬야 하는 문제가 있습니다. 물론 광고에 잘 반응하는 사람일 수록 하기 쉽고 그렇지 않은 사람이나 특정 쇼핑몰(G마켓 이랄지)에서만 구매를 하는 사람들이라면 조금 어렵습니다.

이런 사람들에게는 다 포기하고 조건을 만족하는 사람들에게만 해도 충분할 것 같은 느낌입니다.

필요한 상품의 세트나 연관상품의 세트는 데이터만 있다면 노출이나 클릭, 구매 기록으로부터 연관 규칙 탐사(sequence association rule mining)같은 간단한 방법으로도 정보를 추출해서 확보 할 수도 있을 것 같은데  실제로 해보지는 않았지만 간단한 시뮬레이션 정도는 해볼 수 있을 것 같습니다.

다시 앱의 문제로 돌아와서 만약 카카오톡 같은 사람들이 매우 많이 쓰는 앱이라면 사용자의 메세지 텍스트를 분석해서 (윤리적으로 그러면 안되는 것은 당연하고) 문맥을 파악한 뒤 필요한 것을 알아내서 카톡내에서 광고를 보여주고 추천해 주는 방법도 고민해 볼 수 있겠습니다. (그냥 상상입니다. 현실적으로 안되겠지요)

 

SPSS syntax를 R로 변환해주는 웹서비스 translate2R

SPSS 신택스를 R 코드로 자동변환해주는 웹사이트가 나왔습니다. Use R! 2014에서 발표했나보네요.

Use R! 컨퍼런스는 쓸만한 것이 꽤 많이 발표되는 좋은 컨퍼런스입니다.

온라인에서 SAS나 다른 랭귀지를 R 로 변환해 주는 곳을 볼 수 있는데요. 주로 용역인 곳이 많습니다.

그러니까 코드를 등록해주거나 요청을 하면 실제로는 사람이 하는 것이죠. 자동 변환이 잘 안되기 때문일텐데요.

제가 SPSS를 쓰지 않으니 모르겠지만 서서히 자동변환이 나오긴 하는 군요. 웹사이트 도메인을 보면 독일에서 만든 것 같습니다.

자세한 내용은 eoda의 사이트를 참조하세요. 현재는 무료 베타인데 나중에 상용화될지 어떨지는 잘 모르겠습니다.

참조: eoda 웹사이트

Reproducible Research – 재현가능연구

Reproducible Research에 대한 포스팅입니다.

이게 뭔지? 어떻게 하는 것인지? 이런 것들에 대한 내용입니다.

Reproducible Research는 연구나 분석을 할 때 사용한 코드, 데이터, 리포트를 한꺼번에 넣어서 다른 사람들이 받으면 그대로 재현이 가능하도록 하게 배포하고 공유하자는 계몽운동입니다.

어헐… 리서치 분야의 새마을운동인가?

사실 히스토리는 꽤 오래되었습니다. 17세기 부터라고 하는데 그 시대 사람이 아니어서 모르겠구요.
제가 알고 있는 최근 관련 사건은 2006년 Duke 대학의 논문(암세포 관련) 사건인데, 배포된 논문을 재현하는데 시간이 너무 걸려서 문제점을 나중에야 발견했고 그 사이에 그 논문을 근거로 시작한 연구 5개가 졸지에 중단된 사건입니다.

코드와 데이터와 리포트를 한꺼번에 배포하는 것이라고 했는데.
그러면 “Reproducible Research는 코드하고 데이터하고 PDF를 한꺼번에 압축해서 주면 되는거네?” 라고 생각할 수 있습니다.

그렇게 하는 사람도 아직 많습니다. ^^. 하지만 핵심요체는 이런걸 더 쉽게 하자는 것이고 피드백도 쉽게 받을 수 있어야 한다는 것입니다.

Reproducible Research는 소프트웨어 구현체를 위한 개발소스를 배포하는 것에 대한 것이 아닙니다. 단편적인 예로 논문을 배포할 때 논문에 사용한 코드와 데이터와 설명을 한꺼번에 배포하는 것 정도로 이해하면 빠를 것 같습니다.

압축파일로 전달하거나 하는 것은 완전히 종료된 연구결과는 그렇게 해도 되겠지만 어떤 것들은 자신의 연구 결과물도 계속 고쳐나갈 수도 있기 때문에 그렇게 하면 번거롭습니다. 그래서 코드를 계속 형상관리하고 자동으로 생성해서 배포하려고 많이 합니다.

우선 하기전에 몇가지 의문에 대해서 살펴보면…

어느 분야에서 쓰는 것이냐?

  • 연구소, 아카데미 등 학술쪽이 메인입니다.

    각종 논문 양산소들

  • 데이터 분석

    굉장히 좋습니다.

  • 데이터 사이언스

    설마 데이터 사이언스가 주구장창 구현체 개발만 하는 것이 아니라면…

꼭 논문을 쓰거나 어떤 연구소에서 연구를 하는데만 쓰는 것은 아닙니다. 메인이 그쪽이이긴 하지만 인터넷기반의 온라인의 발달로 R&D쪽과 관련이 있다면 모두 해당됩니다.

흐름상 꼭 해야 하는 거야?

남들이 한다고 다 따라할 필요는 없다고 봅니다만 흐름이 있는 것은 분명합니다. 꼭 해야 하는 것은 아니지만 어느덧 많은 사람들이 자기의 연구결과나 분석결과를 온라인에 배포하는 것이 일상화되었습니다.

내 피땀어린 연구물을 왜 배포 하나?

  • 첫번째는 Personal Branding 이유가 많아 보입니다. 어필하는 것이지요. 개인을 상품화
  • 두번째는 연구물을 공유해서 다른 사람들의 피드백을 받음으로써 자기 발전에도 도움이 된다고 생각하는 것입니다
  • 세번째는 논문 점수… 패쓰!

개인의 취향이고 하기 싫으면 안해도 되지만 추세는 배포해서 검증도 받고 성과도 알리는 것입니다. 일종의 자신감 표현일 수도 있고 우물안 개구리로 살지 않겠다는 생각일 수도 있겠구요.

배포를 걱정하는 이유가 내가 고생해서 연구한 것을 왜 남에게 거저 주느냐? 라는 이유일텐데요. 자신의 연구 결과물이 매우 좋다면 배포를 당연히 하지 않겠지요. 하지만 그런 뛰어난 결과물을 만드는 경우가 얼마나 될까요?

내 연구물은 약간의 불가피한 어쩔수 없이 안타깝고 애절한 이유로 조작을 했기 때문에 다른 사람들이 절대 재현해서는 안돼! 아~ 님! 그러시면 안돼요!

Reproducible Research에 필요한 것

온라인 IT활용능력이 필요합니다. 압축파일을 USB에 담아서 주는 세상이 어느덧 지나버린 것 같습니다.

형상관리 또는 코드 보관용 스토리지

보통 리서치를 전문으로 하시는 연구원들을 보면 연구성과물의 백업에 대해 예민한데요. 당연한것 이 성과물이 날아가면 인생이 과거로 회귀하기 때문입니다.

지능은 그대로 나이는 젊어지는 그런 회귀가 아니라 나이는 그대로 성과는 예전으로 돌아가는 회귀. @.@

보통 Reproducible Research에서는 온라인 소스코드 레파지토리를 많이 사용합니다.

물리백업은 외장하드를 여러개 사용하시던지 스토리지를 쓰시던지 각자의 방법이 있잖아요?

많이 발견되는 순서대로 보면

  • Github: 공짜인데 private은 돈 받아요
  • Bitbucket: 공짜인데 private 1개 공짜. 추가는 돈 받아요
  • Dropbox: 형상관리는 아니지만 물리백업의 위험을 최소화하기 위해서
  • 기타: 찾아보면 더러 있습니다.

private repository는 남들에게 안 보이게 숨기는 레파지토리입니다.

온라인을 사용하는 이유는 링크만 던져줘도 자료를 쉽게 공유할 수 있기 때문입니다. 게다가 삭제해도 복원이 가능하고 매우 안정적입니다. 대신 형상관리 소프트웨어를 사용하는 방법을 익혀야 하겠지요. SVN, CVS, GIT 등을 잘 쓰신다면 문제가 별로 없습니다.

살펴보면 대체로 Github을 많이 쓰는 것 같습니다.

형상관리를 회사나 연구소내에서 따로 구축해서 사용하는 경우도 많은데요 백업이나 관리가 잘 되야 하겠지요. 자료를 찾아 보시면 구축하는 방법등이 잘 나와 있습니다.

내부 형상관리가 통째로 날아가면 연구소 폐쇄 또는 폐업… 하지는 않더라구요.

데이터 배포용 레파지토리

연구물을 배포할 때 코드와 함께 사용한 데이터를 같이 주어야 하는데요. 알고리즘을 만들거나 분석기법을 만들거나 응용 분석을 하거나 해도 사용한 데이터가 있을 것입니다.
포함해야 하는 이유는 다른 사람이 재현을 해야하기 때문입니다. 코드만 가지고는 정확히 재현이 안되니까요.

데이터를 배포하는 방법은 크기나 데이터의 출처에 따라 배포하는 방식이 달라집니다.

  • 데이터의 사이즈가 매우 작은 경우

    코드에 넣어 줍니다. 코드에 변환해서 넣는 것이 대부분 가능합니다. 최근에는 데이터들의 크기가 커지기 시작하면서 이 방법은 점점 어렵게 되고 있습니다.

  • 데이터가 오픈데이터인 경우

    오픈데이터는 공개된 곳의 링크를 걸어주면 됩니다. 보통 코드내에서 자동으로 오픈데이터를 긁어오게 만들어 코드를 작성합니다.

  • 데이터가 매우 크고 오픈데이터가 아닌 경우

    웹사이트에 올리거나 Dropbox같은 클라우드 스토리지로 공유합니다. Dropbox외에도 Google Drive라든가 One Drive라든가 여러가지가 많습니다. 대부분 기본 용량은 공짜이고 용량 추가는 비용 지불입니다.

Reproducible Research 작성도구

분석 도구라면 뭐든지 가능하지만 우선 특화된 UI가 있는 분석툴들은 어렵습니다. R, Python, SAS, Matlab은 가능할 것입니다.

Excel로도 하긴합니다만 불편하더군요. 나 퀀트여서 C++, Excel만 하는데? 네.. 알아서 잘!

보통 R을 많이 사용하는 것을 볼 수 있는데요.
이유는 보통 이렇습니다.

  • 공짜입니다.

    받아보는 사람이 결과물을 보기 위해서 소프트웨어를 구매해야 한다면 힘드니까요. 나 오라클에 SQL로 코드짜고 연구했어. 그래서 내가 너에게 오라클 라이센스를 주마! 네! 님짱!

  • 코드가 간결하고 분석이나 리서치하기에 편합니다.

    원래 그런 용도로에 많이 특화되어 있습니다. 나 perl로 무지 간결하게 짤 수 있는데 대신 난독화가 심해져서 읽는 것은 너의 능력문제야! 네! 님짱!

  • 코드와 설명을 함께 넣어 리포트를 쉽게 만들 수 있습니다.

    Sweave나 Knitr같은 패키지로 쉽게 가능합니다. 코드에 주석으로 설명을 적기에는 너무 부담도 크고 할일도 많지요. 보고서나 논문 형태로 포맷팅을 쉽게 할 수 있습니다.

분석결과물이 코드와 데이터만 있는 것이 아니라 설명이 들어 있어야 하는데요. 보통 논문같은 형식이나 보고서 형식을 생각하시면 됩니다. 코드와 데이터만 덜렁 주지는 않습니다.

이정도 코드는 알아보겠지? 하실 수도 있겠지만 간단한 것을 제외하고 내가 만든 알고리즘이나 데이터 분석 절차와 대응 방법을 받는 사람이 쉽게 이해하기 어려우니까요.

참고로 위의 요소를 만족하는 도구로 대안은 Python, Ruby가 있습니다. 그 이유가 전부인 것은 아니지만 저런 이유도 있어서 데이터 사이언티스트가 많이 쓰는 도구로 Python, R이 상위권이기도 합니다.

Reproducible Research 배포처

준비를 다 했다면 배포할 곳이 필요합니다.

헐 @.@ 나는 누군가? 지금까지 뭘 했는가?

학회에 논문 제출?도 하겠지만 그 외는 온라인 커뮤니티에 배포를 많이 하게 되는데요. 커뮤니티에 배포를 하더라도 링크를 주고 링크를 누르면 어떤 사이트로 이동해서 결과물을 보게 하는데요. 그래서 결국 웹사이트가 필요합니다.

네. 도메인따고. 호스팅받고. 설치하고. 세팅하고. 하고. 하고. 하고…

웹블로그는 공짜가 많습니다. 괜찮은 것 하나를 선택해서 쓰면 됩니다. 도메인을 구매해서 연결하는 것도 좋습니다.
많이 쓰는 것으로는 다음과 같은 것들이 있습니다.

  • WordPress 또는 다른 블로그

    Tumblr나 Scriptogr.am 등 많습니다만 WordPress가 가장 만만해요. 공짜로 도메인 연결도 해주는 곳이 많습니다.

  • Github

    웹페이지를 볼 수 있게 지원합니다. 공짜로 도메인 연결도 가능해요. 다른 것들도 있습니다만 Github이 가장 만만해요.

  • 개인 웹사이트

    생각보다 많습니다. 클라우드를 이용해서 쉽게 구축하는 서비스를 제공하는 곳도 많습니다.

이런 추세는 R로 Reproducible Research를 하는 사람들의 트렌드때문인데요. R의 Knitr가 WordPress로 리포트를 배포하는 기능을 지원하기 때문입니다. Rmarkdown을 작성해서 배포하면 WordPress로 플롯과 코드와 설명이 모두 배포됩니다.

Github을 이용하려면 HTML 코드를 작성해서 업로드 해야 하는데 Knitr, Jekyll 조합으로 가능합니다. 요건 설정하기가 조금 까다롭습니다.

많이 알려진 플로우

Reproducible Research는 R 사용자들이 많이 주도하고 있는 상황이라서 R과 관련된 것이 아직까지는 대부분입니다.

많이 쓰는 플로우입니다.

  1. R과 Rstudio를 설치합니다.
  2. Rmarkdown이나 Sweave 형식으로 작성합니다.
  3. 작업하면서 소스코드를 계속 형상관리에 저장합니다.
    1. Github, Bitbucket, …
  4. 사용한 데이터는 오픈 스토리지에 올려 놓습니다.
    1. Dropbox, One Drive, Google Drive, Drive.., Drive.., …
  5. 리포트를 빌드합니다.
    1. 잘되는지 확인해야 합니다.
  6. 배포합니다.
    • WordPress로 배포
    • 또는 Jekyll로 빌드해서 Github에 Push

Reproducible Research 준비가 사실 번거롭고 할 일이 많습니다. 그런데도 하는 사람이 많은 것을 보면 신기하기도 합니다. 이 유행이 언제까지 일지는 모르겠지만 제 생각에는 그래도 앞으로도 당분간은 계속 될 것 같습니다.

세상이 너무 빨리 바뀌고 있네요.

빅데이터와 텍스트마이닝

빅데이터와 테스트 마이닝에 대해서 조금 적으려고 합니다.

빅데이터(Big data)

빅데이터(Big data)는 이제는 설명을 안해도 될 만큼 자료가 많습니다.
구글링을 해서 찾아보시면 되겠지만 너무 많아서 오히려 정리가 안되서 맥락을 이해하기가 어려울 수도 있습니다.

빅데이터는 간단하게 말하면 많은 데이터, 다양한 데이터를 저장, 가공, 처리, 분석하는 것을 통칭해서 말하는 것입니다. 어차피 명확하게 정의하기 어렵고 원래 정의를 만들고 시작한 것도 아닙니다.

사실 이미 빅데이터 리딩그룹쪽에서는 데이터와 관련된 IT기술이나 분석기법은 그 경계나 정의를 명확하게 정하지 않은지가 오래 되었습니다.

텍스트 마이닝 (Text Mining)

텍스트 마이닝은 사람이 써놓은 글을 분석해서 뭔가 쓸만한 것을 뽑는 것입니다.

텍스트 데이터는 특성상 많이 모아야 뭔가 쓸만한 것이 나옵니다. 텍스트 마이닝이 빅데이터에서 언급되고 마치 전부인것 처럼 얘기되기도 하는 이유는 원래 빅데이터의 출발이 IR(Information Retrieval)이 전문인 구글, 야후, 페이스북, 아마존, 넷플릭스등의 온라인 회사에서 시작되었기 때문입니다.  즉 빅데이터 관련 기술을 텍스트 처리에 많이 사용했기 때문입니다.

검색 포털이나 온라인 리테일 회사를 상상하시면 됩니다. 구글, 아마존이 대표적입니다.

이미 아시겠지만 현존하는 텍스트 마이닝의 최강자는 구글입니다. 그리고 그 외의 여러 회사들이 있습니다.

이 회사들의 공통점은 다음과 같습니다.

  1. 온라인 회사이고 많은 접속자가 만들어 낸 로그를 쌓아서 보유하고 있는 데이터가 매우 많다
  2. 대용량 정보처리기술이 회사의 핵심기술이다
  3. 사용자들이 웹사이트에서 행동하는 것을 로그에 쌓아놓고 그것을 다시 가공해서 회사의 서비스를 개선하거나 다른 부가가치를 만들어 낸다

빅데이터와 텍스트마이닝이 혼동되는 이유 중 또 하나는 텍스트데이터는 처리하는데 컴퓨팅 자원이 많이 소모된다는 점도 있습니다.

어찌되었든 텍스트 마이닝을 잘 하려면 필수는 아니지만 빅데이터 기반 기술이 있는 것이 매우 유리하며 그런 경험이 있다면 그렇게 될 수 밖에 없다고 보는 것이 업계 기술자들의 정론입니다.

그렇다고해서 빅데이터를 텍스트 마이닝에만 쓴다는 얘기는 아닙니다. 다시 텍스트 마이닝으로 돌아오면 텍스트 마이닝은 텍스트 데이터를 분석해서 의미, 의도, 경향등을 보는 것을 기본으로 하고 그런 결과물을 다른 데이터와 연동해서 분석하거나 결합해서 부가정보로 쓰게 됩니다. 그 이상을 하려면 텍스트 마이닝 결과물 자체가 비즈니스 모델이 되거나 회사의 이윤을 창출하는 뭔가를 만들어 주어야 하는데 그런것이 많지 않습니다.

텍스트 마이닝이 그 자체로 비즈니스 모델이 되는 것은 기계 번역이나 문서 자동 요약 등과 같은 것이 있습니다.

텍스트 마이닝의 문제점

텍스트 마이닝의 문제점은 상당히 자연어(사람이 쓰는 말, 한국어, 일본어, 독일어, 영어, …)에 영향을 많이 받으며 분석결과물 자체를 그대로 비즈니스 모델에 적용해서 뭔가를 만들어내서 성과를 보기 어렵다는데 있습니다. 자연어처리쪽 분야에 있어서 문제가 있는 분야가 한글 및 한국어의 경우 광학문자판독(OCR, Optical Character Recognition), 음성인식(Speech Recognition), 그리고 감성분석 (Sentimental Analysis)등이 있습니다. 기술적으로 문제라기 보다는 언어를 다루는 문제가 결과물을 보고 품질을 사람들이 쉽게 판단하기 때문입니다.

텍스트 마이닝이 어려운 이유

텍스트 마이닝의 전부가 워크 클라우드가 아니며 데이터를 수집해서 텍스트 마이닝 툴을 사용해서 마우스 클릭을 하면 분석결과가 나오는 것이 아닙니다. 영어권 경우에는 기술적인 진척이 많고 영어의 특성이 분석이 더 쉽다는 것이 없지 않아 잘 되는 것도 있지만 한글 및 한국어에서는 아직은 어렵습니다. 특히 텍스트 마이닝은 자연어처리 도구에 의존성을 매우 큰데, 자연어처리 도구가 그냥 사서 쓰는 소프트웨어가 아니라 사람의 정성스런 손길이 지속적으로 필요한 애물단지입니다. 자체로도 관리가 필요하며 관리가 안되면 쓸모가 없어지는 경우가 많으데다가 관리가 안된 자연어처리 도구를 이용해서 만든 2차 파생물도 함께 엉망이 됩니다.

때문에 사내(in-house)에서 지속적으로 투자하거나 하지 않으면 결과를 보기 어렵고, 당연히 단기 프로젝트에 의한 좋은 결과물은 나오기 어렵습니다. 참고로 자연어 처리 도구는 형태소 분석기, 구문 분석기등과 같은 자연어를 처리하는데 필요한 소프트웨어 라이브러리들입니다. 이것들도 자연어의 특성을 많이 타는 것으로 각 언어별로 다 품질이 다르고 기분석 사전이나 후처리 사전등을 따로 관리해야하는 복잡한 문제가 있습니다.

텍스트 마이닝과 워드 클라우드(Word Cloud)

TV에서 자주 볼 수 있는 화면이 단어들이 둥둥 떠 있고 단어끼리 선을 연결한 시각화 화면이 많은 것입니다. 워드 클라우드라는 시각화 방법입니다.

사실상 텍스트 마이닝의 결과물의 시각화는 워드 클라우드나 워드 클라우드를 변형한 시각화 기법외에는 아직 없습니다

경험이 없는 분들은 어렵게 생각하실지도 모르겠지만 사실 워드 클라우드는 구현하기가 매우 쉽흡니다. 심지어 그냥 오픈 소스 몇개를 붙여서 돌리면 그럴 듯한 것을 만들어서 보여줄 수 있습니다.
문제는 이런것들 돌려서 흥미 위주의 어필 포인트는 되겠지만 결과물이 실제로 도움이 되는 것이 많지 않다는 것이고 그것 때문에 대부분의 일반 기업에서는 빅데이터를 텍스트 마이닝이라고 생각하고 프로젝트를 진행한 뒤에 결과물이 도움이 안되니 빅데이터가 별거 아니고 해봤는데 아니더라고 말하게 된다는 것입니다.

가장 흔히 볼 수 있는 반응입니다

이것은 잘못 접한 정보와 유도된 상황 때문에 발생하는 착각입니다. 빅데이터와 텍스트 마이닝을 구분하지 못하며 제대로 이해하지 못하기 때문입니다.  경험을 해보지 않으면 제대로 구분하기 어려운 것도 사실입니다만 공부가 부족하기 그것을 모른다고 해서 틀린 것을 말하고 그것이 마치 정설인듯 말하는 것은 정당하지 않습니다. 텍스트 마이닝은 쉽지 않습니다. 그리고 텍스트마이닝이 빅데이터와 동치관계는 아닙니다.

데이터 사이언티스트가 사용하는 도구

저는 기업체를 상대로 솔루션 사업을 하고 있는 회사에서 데이터 사이언티스트로 일하고 있습니다. 대외 미팅 중에 아이스브레이킹(ice breaking)을 하면서 가장 많이 받는 질문이 아래 두가지입니다.

  • 데이터 사이언티스(Data Scientist)가 뭐하는 사람인가요?
  • 데이터 사이언티스(Data Scientist)는 무슨 툴(Tool)을 사용하나요?

첫번째에 대답은 검색을 해보면 여기저기 다 있습니다.

대부분 명확하게 정의는 하지만 그 정보들을 취합해 보시면 서로 다르게 정의하고 있는 영역이 보일 것입니다. 그 정의로는 혼동스럽죠. 쉽게 정의하면

  • 광의적으로 보면 데이터 관련된 일은 뭐든 다 해주는 사람. 비즈니스에서 부터 구현 및 서비스까지

    이쯤되면 수퍼맨입니다

  • 협의적으로 보면 공학기술을 이용해서 데이터 분석을 하고 구현체까지 만들어 주는 사람

    데이터마이닝과 프로그래밍을 같이 하는 사람입니다. 좀더 구체적으로는 개발자와 데이터 분석가의 중간쯤 어디입니다. 예전에는 데이터 엔지니어(Data Engineer) 또는 그냥 엔지니어(Engineer)라고 불렀습니다.

두번째 대답의 답은 뭘까요?

데이터 사이언티스트가 빅데이터를 하는 사람으로 가장 잘 알려져 있어서 보통은 빅데이터와 관련된 것을 뭉뚱그려서 같이 물어봅니다.
엔터프라이즈를 대상으로 제품이든 용역이든 팔아먹는 기업에서 몸담고 있는 사람이라면 이쪽의 대답은 당연히 자신의 소속한 회사의 솔루션과 관련된 답을 하기 마련입니다.

영업하는 사람이 아닐지라도 그럴 수 밖에 없습니다.

여러가지 솔루션을 많이 보유하고 있는 회사라면 이것저것 적절한 조합을 합쳐서 말하게 되고 솔루션이 적은 회사라면 특정 솔루션에 대해 말하고 응용할 수 있는 가능성을 얘기하게 됩니다. 제 경우에도 여기에서 자유롭지 않으며 회사의 솔루션이 R인 까닭으로 R이라고 말합니다. 하지만 제가 근무하는 회사와 상관없이 제 경우를 떠나서 언급되었거나 경쟁하면서 다른 사람들이 말하는 것들을 닥치는 대로 나열해 보겠습니다.

플랫폼으로 가장 많이 언급되는 것이 Hadoop ecosystem쪽 입니다.

  • 배치 프로세싱: Hadoop, Hive, Pig, Impala, …
  • 리얼타임: Storm, Spark, …

더 있는데 생각이 안나네요.

시각화쪽으로는 Spotfire, Tableau, CliqView 등이 있습니다.

구현을 해서 웹기반 툴을 만들어 주기도 합니다.

BI 쪽

  • Micro-strategy, Business Object(SAP 솔루션)같은 BI툴
  • Birt나 Jasper같은 리포팅툴

DW 쪽

  • Teradata, Oracle 솔루션들, SAP 솔루션들, EMC 솔루션을

이제 마지막으로 분석툴인데 질문자들이 데이터 사이언티스트는 뭘 쓰나요 할 때 예상대답으로 원하는 것이 주로 이쪽입니다.

R, SAS, SPSS 등이 있습니다.

SAS직원이거나 파트너사소속이면 아마 SAS 솔루션들을 말할 것이고 IBM쪽이라면 SPSS와 기타 IBM솔루션을 말할 것이고, 그것도 아니라면 R을 얘기합니다.

이것들의 범주는 사실 데이터마이닝 툴이라고 볼 수 있습니다.

이쯤되면 그냥 통합 ISP 인프라 솔루션들을 다 나온다고 보면됩니다. 이 상황은 빅데이터와 데이터 사이언티스와 데이터분석과 기존 데이터관련 솔루션들이 빅데이터 트렌드에 합류하면서 잡탕찌게가 되었기 때문입니다.

데이터 사이언티스트는 사용하는 툴이 정해져 있지 않습니다. 자세히 생각해 보면 아시겠지만 그럴것이면 데이터 사이언티스트가 별로 필요 없습니다. 데이터 사이언티스트가 닥치는대로 다 사용한다고는 하지만 사실 각자 주력으로 사용하는 것은 있습니다. 경향을 볼 때 주로 선정대상은 일반적이며 가격이 높지 않은 것을 선택합니다.

오픈 되어 있는 것이 필요하니 오픈 소스를 쓰고 오픈 소스는 자체로는 가격이 없으니 결국 오픈 소스를 선호하게 됩니다.

특정 회사에서 내근만 한다면 특정 툴로만 하는 것도 무리는 없습니다

물론 가격이 비싸고 훈련이 되어 있거나 훈련을 받아야 합니다.

국외의 상황이구요. 국내는 아직 혼란 상태입니다.

외국의 상황을 보죠.
검색을 해서 외국 사이트의 게재물을 읽어보시면 주로 언급되는 데이터 사이언티스트가 가장 많이 쓰는 도구는
R, Python, Java가 나옵니다.

SQL은 거의 기본입니다. 무조건 합니다. 제 경험으로는 실제로도 그렇습니다.

주로 현재는 Python이 가장 많고 그 다음이 R 그리고 Java입니다.

Python과 Java가 많은 이유는 데이터사이언티스트 중에서 공학에서 시작해서 커리어를 확장했기 때문입니다. 공학에서 넘어온 사람은 Python, Java가 많고
통계에서 넘어온 사람은 R이 많습니다.
비즈니스나 경제학에서 넘어온 사람은 여전히 SAS와 Excel을 씁니다.

SAS, Excel빼고 이것들의 공통점은 컴퓨터 랭귀지라는 것입니다.

SAS도 자체 랭귀지가 있습니다만 그냥 분류상으로 빼겠습니다. 많이 애매해졌습니다.

해석해 보면

  1. 첫번째 항상 구현만 하는 것은 아니겠지만 뭔가 구현을 하는 경우가 빈번하기 때문이라는 것을 알 수 있습니다. (주력으로 사용하는 도구이므로…)
  2. 두번째 가능한 특정 솔루션에 의존성을 가지지 않아야 하며 솔루션이나 툴이 중요한 것이 아니다라는 것을 알 수 있습니다. 현재는 가장 각광받는 것이 R과 Python 그리고 빅데이터 솔루션입니다.

하지만 데이터 사이언티스트가 사용하는 도구가 뭐냐를 보기 보다는
데이터 사이언티스트라는 사람 그 자체가 도구라는 사실이 숨겨져 있는 것이 함정입니다.