데이터는 관측값이다.
데이터는 거짓말을 하지 않고, 데이터는 사실을 보여준다고 생각했다. (그땐 그랬지, 아련...) 명확한 게 좋아서 시작한 데이터 분석이지만, 실제로 일을 하면서 느끼는 건 처음 가졌던 느낌과는 많이 다르다.
이 세상에 확실하고 정확한 건 없다. 설령 있다고 해도, (물론 있을 리가 없지만) 데이터 분석은 아니다. 왜냐하면 분석의 대상인 데이터는 관측값이기 때문이다.
‘측정을 통해 알아낸 값을 관측값이라 하고, 측정한 대상물의 실제값을 참값(true value)이라고 한다. 참값은 정확하게 알 수 없는 추상적인 개념이다. 참오차는 참값과 측정값의 차이이며, 참오차 역시 가상의 값이다.’
- 위키백과, 관측값
데이터는 어떤 실제를 자료화 한 관측값이기 때문에 측정 기준을 어떻게 정의하느냐에 따라 값이 달라진다.
예를 들어, 앱을 사용하는 사용자의 로그 데이터를 생각해보자. 사용자들이 하루에 평균적으로 우리 앱을 몇 번이나 열어서 사용하는지가 궁금하다. 그렇다면, '앱 실행'이라는 이벤트를 어떻게 로깅해야 할까? 간단하게 생각해보면, 1. 꺼져있는 앱을 새로 실행할 때 라는 방법이 생각난다. 그렇다면, 사용자가 오전에 앱을 켜서 사용하고, backgroud에 있는 앱을 오후에 다시 여는 경우에는 '앱 실행'이 아닌가? 이런 고민을 하면 이제, 2. 앱을 새로 실행하거나 background에 있던 앱을 foreground로 올릴 때 라는 기준으로 바뀐다. 만약, 우리 앱에 무언가를 입력하기 위해 다른 앱과 우리 앱을 전환하면서 background-foregroud 전환이 여러 번 일어난다면, 앱 실행을 여러 번 하게 된 것일까? 이제 슬슬 머리가 복잡해지기 시작하고, 앱 성격에 따라 session과 같은 다른 조건들이 등장하기 시작한다. 하루에 우리 앱을 몇 번 실행할까?라는 단순한 질문에서 시작했지만, '앱 실행' 이벤트를 정의하기는 생각만큼 쉽지 않다.
가장 간단한 정의가 좋은 정의인지, 아니면 가능한 모든 상황을 고려한 고도화된 정의가 좋은 정의인지는 상황에 따라 다른 것 같다. 개인적으로는 정의가 어딘가에 명시만 되어 있어도 감사하다.
데이터라는 단어는 정확하고 정직한 것처럼 느껴진다. 하지만, 관측값이기 때문에 오차가 존재할 수밖에 없다. 내가 경험했던 것들을 설명해보자면 우선, 측정되길 기대했는데 측정되지 않는 경우가 있다.
앱 개발 과정에서 이벤트 로깅을 챙기지 못해서 이벤트가 정말 안 찍히는 경우
뭔가 안 들어온다 싶으면 플랫폼별로 나눠서 본다. 그래도 못 찾겠다 싶으면 앱 버전별로 나눠서 본다. 이 경우에는 대부분 이렇게 보면 뚝 떨어지는 그래프가 보인다.
플랫폼별로 이벤트가 찍히는 방식이 다른 경우
android에서는 분명히 이때 찍혔는데, 왜 ios에서는 아닌 거지? 또는, webview에서는 이렇게 찍히는데 왜 native에서는 아닌 거지?라는 생각일 들 때... 플랫폼별로 이벤트 로깅 기준이나 방식이 다른 때도 있다.
로깅되고 확인 가능한 시점이, 이벤트가 발생한 시점과 다른 경우
실시간... 이게 이렇게 어려운 일일지 예전에는 몰랐다. 최근(1 min ~ 1 week) 데이터를 보고 있는데, 뭔가 이상하다 싶으면 아직 데이터가 적재되지 않은 건 아닌지 확인해보자.
반대로, 측정되지 않기를 기대했는데 측정되는 경우도 있다.
기술적인 기준과 사용자 경험적인 기준이 다른 경우
예를 들어, pre-loading으로 인해, 사용자가 아직 아이템을 보지 않았는데 노출 이벤트가 로깅되는 경우가 있다.
전혀 예상하지 못한 timestamp에 이벤트가 들어온 경우
하루 중 새벽 3시에 외식 건 수가 가장 높게 나왔다면? 우리가 아무리 야식의 민족이어도 새벽 3시에 외식 비율이 가장 높기는 힘들다. 지구가 둥글다는 사실을 떠올리자! 이런 경우는 사실 데이터의 오차는 아니고, 데이터를 인지하는 사람에게 발생하는 오류로 생각할 수 있겠다.
물론 분석을 할 때에는 데이터에 오류나 오차가 없을 것이라 생각하고 일 해야 하지만, 혹시 결과가 내가 생각하는 것과 다르게 나올 때에는 데이터부터 의심해보는 게 답이다.
처음에는 분석의 재료가 되는 데이터에서 내가 생각하지 못한 이슈들이 발견될 때마다 스트레스를 많이 받았었다. 데이터조차 이러면 난 대체 뭘 믿고 이 험한 세상을 살아가지!?! 막 이러면서.
그런데 언제부턴가, 데이터는 진실을 어떻게든 측정해서 만들어낸 관측값이고, 그렇기 때문에 오차가 불가피하다는 생각을 하고 나니 마음이 많이 편해졌다. 이슈를 발견하면 오히려 모르고 지나치는 것보다 훨씬 다행이다. 그 후에는 더 좋은 정의를 생각하고, 올바른 방식으로 로깅하고, 잘 로깅되고 있는지 확인하면 된다.
물론 처음부터 이슈가 발생하지 않게 데이터를 잘 정의하고 적재하면 최고지만, 지금 아무리 잘해도 나중에 누군가는 이상하다고 생각하겠지... 그때의 누군가도 이렇게 너그러운 마음을 가질 수 있길.