2012/01/24

데이터 분석에 대한 생각들


데이터 분석에 대한 업계 고수 3인방의 글입니다. 읽기 쉽도록 약간의 편집만 해 두었습니다. (실제론 페이스북에 올라온 이야기입니다.)

대화 내용에 앞서, 저는 특히 @onechu님의 이야기에는 대공감을 하는 바인데... 데이터의 수집만큼이나 중요한 것은 패턴의 분석이라고 생각합니다. 그 패턴을 확보하기 위해 데이터를 모으는거고요. 크고 정확한 데이터 그 자체는 아무런 의미를 가지지 않습니다.

결국 이쁜(깨끗한) 데이터를 잘 쌓는 기술은 개발자의 몫이고, 기획자라면 그 데이터가 무엇을 의미할지, 그걸로 무엇을 할지 정해야 하겠죠. 이 때 가장 중요한 것이 데이터 패턴을 읽어내는 직관이라고 생각합니다.


결국 기획자는 SF 소설 <파운데이션>(Foundation)에 나오는 해리 셀던(Hari Seldon)을 꿈 꾸는거죠. 그놈의 파운데이션 한 번 만들어보겠다고 온갖 데이터를 쌓아놓고 평생(은 아니고 오랜 시간) 골 싸매고 앉아있어야...

결국 파운데이션까지는 아니더라도, 특정한 패턴을 충분히 뽑아내고 유의미한 사례와 예외 케이스들을 잘 정리해 두면 게임의 지표 흐름에 따라 '이 게임은 어떻게 흥망성쇄할까?'를 비교적 선명하게 예견할 수 있으리라 예상해 봅니다. 이게 기획자의 직관이라는 단어로 포장되겠죠. :)


아래는 대화 내용입니다.

@Su_yeong
나는 비록 증명할 수는 없지만 게임 쪽의 데이터를 까면 업계와 많은 게이머들이 생각하는 것과 굉장히 다른 결과값이 나올 것이라 확신한다. 왜냐면 지금까지 대부분의(거의 모든) 게임들이 개발자들 자신이 즐겨온 게임에 대한 경험과 직관으로만 만들어졌고 그 맥락 속에서 게이머들의 생각이나 비평 등이 돌아갔기 때문.
쉽게 말해 데이터를 참고하는 사람은 없고 그냥 다들 자기 맘대로 만들었다는 거지

@krucef
빅데이타가 필요한 시점임다. 그러니까 NoSQL과 프로그래밍을 공부합...

@isdead
사실 가구도, 건물도, 제품도, 소프트웨어도 어떤 최종적인 형태를 예상하는 것은 기획자의 직관을 바탕으로 하죠...

@Su_yeong Park
'데이터를 보고 피드백을 받아라' 라는 의미의 글인데 다른 분야에서도 직관으로 제품을 만든다고 하시는것은 좀...

@isdead
아 그렇다고 게임도 직관으로 만들라는 뜻은 아니었고;
실물 제품 같은 경우엔 다양한 사례와 사용 방안에 대한 시뮬레이션을 통해 활용 가능성을 딱히 제한하지 않는다는 특징이 있다는 의미였습니다... 게임도, 특히 MMOG 계열은 이와 비슷한 접근 방식을 취하는게 더 낫지 않나 하는 생각이 든다는거죠.

@isdead
Data-driven에 대해 개인적으로 신뢰가 가지 않는 부분은 특정 방식과 측정한 데이터의 순수성을 확보하는 것이 굉장히 어렵다는 점이거든요. 고로 지금의 데이터로 무언가를 하기엔 탐탁치 않은 점이 좀 있긴 해요.
하지만 이런 저도 데이터 우선 주의자... -_-

@Su_yeong
저는 사실 데이터 주의자는 아닙니다. 인간의 직관이 굉장히 잘 다듬어져있기 때문에 빠르고 대부분의 경우 효율적인 직관에 대한 신뢰를 높게 치는 사람입니다만 그렇다고 오로지 직관에만 의존해서는 안된다. 고로 실증적인 데이터를 봐야 한다고 이야기 하는거죠 ㅎㅎ

@isdead
데이터 우선 주의자라는건 '만약 A라는 데이터가 나왔을 때, 이게 발생한 이유는 무엇인가?'에 대해 해석하는 것이 우선이라는 의미인데... 사실 이걸 판단하는 과정에서 주관이라는 노이즈가 굉장히 많이 끼기 때문에, 굉장히 어려운 길일 수 밖에 없는 것 같습니다.

@onechu 
데이터 쟁이로써... 저는 제품 및 시장에 대한 이해도를 기반으로 한 직관에 더 손을 들어주고 싶군요.(아, 이거 좀 위험한 말일수도 있는데...)
데이터로 남길 수 있는 것들은 어떻게 보면 한정적이고, 모든걸 데이터 및 정량화 시키지 않는 이상 제한된 데이터를 기준으로 판단을 내려야 하는데, 그런 부분에서 직관이 없다면 앞으로 나갈 수 없겠죠. 결국 데이터란 충분히 남겨진 상황부터 의미를 갖기 때문에(어쩌면 저는 샘플링을 잘 못 해서 그럴 수도 있습니다만...) 발빠른 실행력에는 직관이 앞설 수 밖에 없다고 생각함.

@onechu
결국 무엇을 증명하기 위해서 데이터를 남기고 어떻게 남길 것인가? 그리고 남겨진 데이터(그게 비록 소수더라도)를 얼마나 빨리 정확하게 현실에 이용할 수 있는가? 이게 앞으로 승부의 관건이라고 봅니다만... 그렇다고 기획자가 NoSQL까지 공부할 필욘 없으니-_-
우리는 그저 @krucef 같은 분을 동료로 두면 됩니다. ㅋㅋ

@onechu
아 그리고 사실 데이터는 직관을 더욱 정교하게 단련시키는 용도라고 보는게 맞을지도요... 수영님이 말한 자신이 즐겨운 게임에 대한 경험과 직관이란게... 결국 정량화 되진 않았지만, 오랜 시간 경험으로 인해 직관이 더욱 견고해져서... 성공할 확률이 높아지는건데.. 이때 자신이 즐겼던 게임이 대중적이었으면 그 확률이 훨씬 높겠죠.(결국 대중의 다양한 경험들을 근거로 더욱 견고한 제품을 만들게 될테니...)
근데 아주 매니악하거나.. 새로운걸 만들려고 할 때는... 거의 제로 베이스에서의 직관이니.... 당연히 잘 안 될 수 밖에.. 그런 의미에서 윌라이트를 굉장히 존경합니다.

@krucef
onechu 흥 저는 많이 쌓는거랑 빨리 처리하는것만 신경쓸겁니다. 어짜피 원하는 정보 얻어내서 빨리 보려면 직접 짜야해요! ㅋㅋ 맵 리듀스에 대해서 공부합시다.

@onechu ‎
krucef

  1. 정확한 데이터가 쌓이는 건지? (정확성) 
  2. 불필요한 데이터가 쌓이는 것은 아닌지? (효율성) 
  3. 추후 확장성을 보장하는지? (확장성) 
  4. 지금 보고 있는 지표들을 일반화해서 다른 게임에도 적용할 수 있는지?(활용성)

저는 주로 이렇게만 봅니다. 결국 기획자 및 분석자 마인드에서 보니 영욱님하고는 다를 수 밖에..

@krucef
음.. 1,2,3,4 모두 제가 이야기하는거랑 다른 부분이구요. 요점은 어쨌든 프로그래머를 통해서 보면 자기가 원하는 정보를 얻는데 굉장히 시간이 걸린다는 점이죠.
사실 빅데이타의 컨셉은 1번 2번 신경안쓰고 모조리 쌓은다음. 병렬처리를 이용해서 (3번이 해결되네요.) 빠르게 대용량 처리를 하는 겁니다. 4번부터는 기획자의 영역이고 가설과 실험을 빨리 해보려면 빨리 결과를 얻는편이 좋겠죠 'ㅅ' 사실 그걸 위한 병렬처리이고.. 맵 리듀스가 그렇게 어렵지는 않슴당.
병렬처리를 누구나 하드웨어나 그런거 신경쓰지 말고 쉽게 하세요! 라고 만든게 맵 리듀스고 하둡, HBase 라서.. 맵 리듀스 내용만 신경쓰시면 됩니다. 이제 자바 같은거 싫어요! 하시는 분들을 위해 파이썬으로 만든 mrjob 같은 놈들도 있음.
물론 이걸 실시간으로 게임에 사용하면 좋겠지만 그건 정말 엔지니어들이 고민할 문제고.. 저는 실시간으로 좀 쓰고 싶을 뿐이고..

@onechu
krucef NoSQL에서 2번은 굳이 고려 하지 않아도 되나, 1번은 데이터 분석하는 입장에서는 확실히 확인하고 넘어가야 한다고 생각해요. 분석하는 입장에서는 기반이 흔들리는 일이라.. 사실 실시간으로 되면 좋겠지만, 굳이 그렇게까지 할 필요 있나 싶은거죠. 상황에 맞게 결과에 빨리 도움이 되는 방향이면 되는거고...
사실 저는 데이터가 없어서.. 그리고 데이터가 많은데 신뢰할 수 없어서.. 라는 부분을 많이 경험 헀기 때문에... 1번은 포기할 수가 없네요. ㅎㅎ 그래서 제가 말한 부분은 기획자 및 분석가 입장인거고, 구현을 하시는 쪽은 영욱님이 말씀하시는 부분과 더 연관성이 있는거죠.

@krucef
정확한 데이타라 단어가 확실하게 정리가 되지 않은 느낌인데 제가 빅데이타에 관심을 가지는 이유는 가공하지 않은 데이타를 모두 적어놓는게 가능하겠다 싶어서거든요.
비유하자면 DAU를 기록하는게 아니라 모든 유저의 접속시간과 접속종료시간을 모두 적어놓을수 있는거고, 필요하다면 그걸 다 계산해서 DAU를 뽑고 DAU를 뽑았더니 뭔가 이상하다 싶으면 시간별로도 뽑아볼수도 있다는게 빅데이타의 강점이라고 생각하는거죠. 뭐 실제로 써보니까 아무리 용량 많아도 다 못써요 일수도 있겠지만.
기존 분석은 데이타가 늘어나면 연산 시간이 선형적으로 증가하겠지만 NoSQL은 정확하게 말하자면 맵/리듀스는 CPU만 더 붙이면 같은 시간을 보장하니까요. 이런걸 구현해놓은게 엔지니어고 (제가 안했음.. 저도 갖다 쓰기만 함 ㅋㅋㅋ) 이런걸 최대한 활용하려면 '원하는 데이타를 가져오는 부분'은 직접 만들수 있는 편이 유리하다고 생각하는거죠.

@onechu
‎krucef 막상 분석해보면, 데이터가 이상하게 쌓이거나 비어있거나 하는 경우가 매우 많아서요. 그래서 저는 의도한대로 정확히 남는 데이터를 말한거고, 영욱님이 말씀하신대로 최근 빅데이터 관련해서는 NoSQL로 대부분 가고 있고, 그렇게 가는게 맞다고 저도 생각합니다.
근데그렇게 쌓이는 빅데이터들이 분석가를 괴롭혀서 그렇습니다. 데이터가 많다고 좋은 분석을 보장하는 것은 또 아니라서..(정확한 데이터가 많다면 맞겠지만요...)

1 comment:

  1. 개발은 직관으로, 운영은 데이터로 하는 거죠 뭐.

    ReplyDelete

편하게 댓글 남겨주세요. :)