차이와 패턴, 데이터 분석의 테마
데이터 분석이라는 것을 직업으로 살아가면서 회사에서 여러 사람들에게 분석이 무엇인지 알려달라는 말을 자주 듣습니다. 어떻게 하면 내가 하는 일에 데이터 분석 같은 기법을 써서 일을 더 잘하게 만들 수 있을지 알려달라는 말입니다. 1on1도 하고 회사 내부에서 강의도 하지만 제가 하는 말은 어디서나 비슷합니다.
데이터 분석은 차이와 패턴을 컴퓨터에게 맡기는 것입니다.
SQL 처음 하는 분에게는 from부터 쓰고 where 쓰고 select를 써야 이해하기가 쉽다고 매번 말하는 것처럼 분석을 처음 생각하는 분에게도 패턴과 차이를 통해 업무에 세우는 가설과 기준을 모두 컴퓨터에게 맡기고 해 보고 피드백해서 다시 고도화시키는 것으로 이야기합니다.
간단하게 말하자면 두 개 이상 집단이 어떻게 다른지, 많이 다른지, 유의하게 다른지 보는 것입니다. 어제 대비 오늘 매출이 10원 떨어졌다고 비상이 걸린 회사는 없겠죠? 하지만 어제 대비 오늘 매출이 10억 떨어졌다고 하면 비상이 걸릴 회사가 꽤 많을 것입니다. 어느 정도 차이가 유의해야 할 차이일지 생각해보는 것이죠.
유의한 차이는 사실 비즈니스 현장에서는 대중없습니다. 그저 목표대비 안 나오면 모두 유의하다고 생각합니다. 그래서 표준편차보다 더 작게 차이 나서 별로 신경 쓰지 않아도 된다고 말해도 설득이 되지 않습니다. 회사는 돈을 버는 것이고 어쨌든 한 푼이라도 적으면 그 자체로 명분이 되는 아스트랄한 곳이니까요.
그래서 패턴을 씁니다. 어제 대비 오늘은 그 정도 떨어져도 이상하지 않은지 어떤 기준으로 패턴을 만들어 보고 패턴보다 떨어지는지 보는 것이죠. 패턴은 과거가 미래에도 그 방향대로 이어질 거란 전제가 있을 때 보는 것입니다. 미래가 과거와 다르다면 패턴은 쓰지 않는 게 좋습니다.
어제는 일요일이었지만 오늘은 월요일이라면 상식적으로 오프라인 리테일에서 매출이 떨어지는 게 오늘이 국경일이 아니라면, 어제보다 폭발적인 디스카운트를 하는 행사가 없다면 자연스러운 것이겠죠. 그럴 땐 일요일보다 월요일 매출이 적게 나왔다고 누가 뭐라 하지 않습니다. 다만 과거 패턴을 보고 어제 대비 어느 정도 감소하는 게 보편적인지 기준은 있어야 하겠죠. 그때 패턴에 의해 일정 숫자를 목표로 정해두고 기준 대비 실적이 어느 정도인지로 평가하는 게 보편적입니다.
패턴은 어떤 일이 그동안 어떻게 주변 환경과 함께 흘러 왔는지 간략하게 요약하는 것입니다. 주변 환경이 다른 변수일 수도 있고 시간 그 자체일 수도 있습니다. 패턴을 만드는 과거 데이터를 추리는 것부터 어떤 방식으로 패턴을 학습할 것인지, 어느 기간까지 패턴을 볼 것인지 등 고려해야 할 사항이 많습니다. 일정 사이클(cycle)로 패턴이 발생한다면, 예를 들어 계절에 따른 변화가 있는 지표라면 적어도 이 계절이 몇 번은 지나갈 정도의 과거 패턴이 있어야 그걸 토대로 학습을 할 수 있습니다. 시계열 데이터가 대표적이죠. 충분한 사이클을 담고 있지 않는 짧은 과거로는 정확한 추세와 주기를 예측하기 어렵습니다.
이상치를 학습 데이터에 포함시킬 것인지도 봐야 합니다. 대부분의 경우 이상치는 학습 데이터에서 제외됩니다. 예를 들면 명절 직전 주말 백화점 매출 같은 것이겠죠. 그 기간이 명절 아닌 기간에 걸린다면 명절이었던 기간이 주는 차이가 예측에 반영될 것입니다. 이 경우에는 명절 직전 주말 데이터 같은 것은 제외하고 데이터를 학습시킨 후 얻은 패턴에서 명절 직전 주말이 평소보다 얼마나 매출 상승을 일으켰는지 그 효과만 따로 세팅하는 것이 더 바람직합니다.
패턴이 없으면 없다고 말하는 것도 예측할 수 없으면 없다고 결론짓는 것도 컴퓨터에게 판단 기준을 맡기는 것입니다. 할 수 없는 일을 할 수 있다고 해서는 안됩니다. 데이터 분포를 보고 적합한 예측 방법이 없다거나 모델링 결과 충분히 이전 데이터를 설명하지 못한다거나 분류 모델이 검증 데이터를 맞추는 비율이 너무 낮다면 할 수 없는 일입니다. 맹목적으로 데이터로 결과를 내야 한다고 생각하는 사람들에게 이건 이렇게 해서 안되고 다만 할 수 있게 하려면 앞으로 어떤 데이터를 더 쌓아야 하는지 알려주는 게 나아갈 방향이겠죠.
가만히 생각해보면 관리직 업무의 팔 할은 차이와 패턴을 자기 머릿속에서 엑셀 등을 써가며 찾아 분석한 다음 방향을 기획하고 실행하는 일입니다. 우리가 데이터 분석을 먼 일처럼 느끼지만 사실 우리 스스로 만든 알고리즘과 학습 데이터로 나름 하고 있습니다. 그걸 기분 따라 매일매일 달라지는 내 가치관, 휴먼 러닝에서 재현성을 갖고 누구나 추가되는 데이터를 통해 더 정교하게 만들 수 있는 프로세스로 의사결정을 하자는 것으로 나아가는 것이죠.
누구에게 쿠폰을 보내야 이 서비스를 사용할까
이 질문 앞에서 사람마다 생각하는 대로 이야기를 합니다. 그중에 엄청 잘 맞는 것도 있습니다. 하지만 잘 맞추는 사람이 그 일을 하는 사람이 아닐 수도 있죠. 그래서 컴퓨터에게 판단을 맡깁니다. 실제 이 쿠폰 써서 과거에 이 서비스 사용한 사람이 있는지부터 찾습니다. 그래서 그 사람은 어떤 특성을 갖고 있었는지, 이 쿠폰을 받았는데 안 쓴 사람과 어떤 차이가 있는지 관련된 변수들을 다 모아서 분류하는 모델을 만듭니다. 컴퓨터가 아주 높은 성능으로 분류 모델을 만들고 그 모델이 설명력도 좋다면 사람들은 이 쿠폰을 써서 서비스를 사용하는 사람과 쿠폰만 받아 놓은 사람의 평소 차이를 알게 됩니다. 그건 더 설명을 잘해줄 ‘사람’이 아닌 ‘데이터’가 생기면 더 극적인 성능 향상을 과거 패턴이 그대로 이어지는 시점. 우리가 생각하지도 못할 외생변수가 개입되기 이전까지는 더 잘 맞출 것입니다. 그렇게 데이터를 통해 이 문제를 풀 수 있습니다.
여기서도 차이와 패턴이 쓰였습니다. 차이의 기준을 어떤 고객과 어떤 고객으로 정의하느냐, 어떤 데이터로 패턴을 만드느냐는 사람의 몫입니다. 사람이 할 일과 컴퓨터가 할 일은 결국 어느 선에서 구분됩니다. 분석하는 사람이 비즈니스 도메인 역시 잘 알아야 하는 이유입니다.
물론 분석에는 더 많은 레이어가 있습니다. 더 다양한 방법으로 만들 수 있는 차별화된 결과물도 있습니다. 하지만 곰곰이 생각해보면 제가 있었던 환경에서는 차이와 패턴을 어떤 방법으로 도출하느냐가 분석을 활용하느냐 그렇지 않느냐의 큰 차이였던 것 같습니다.
통계 방법, 모델링할 알고리즘, 다루어야 할 프로그래밍 언어 같은 것은 그다음입니다. 어떤 문제를 풀기 위해서인지 필요에 따라 여러 가지 중에 골라서 능숙하게 쓰면 됩니다. 하지만 문제를 정의하고 이것을 어떻게 규명할 것인지가 그 시작에 있습니다. 먼저 Python이나 SQL을 배우면서 차이와 패턴에 대해 어떻게 적용할 것인지 생각해보고 그것에 어울리는 통계 방법을 하나씩 그림 많은 것부터 보면서 알아가도 늦지 않습니다.
PETER님이 브런치에 게재한 글을 편집한 뒤 모비인사이드에서 한 번 더 소개합니다.