Post

데이터와 모델만 있으면 끝인 건가? 에 대한 단상

이번 주에 인턴 면접에 상당한 시간을 쓰면서 새삼스럽게 체감한 사실: 간단한 통계 지식을 물어봤을 때 대답을 못하는 경우가 정말 많다. 이 비율은 어느 정도를 상상하든 그 이상이다! 정말 기초 통계 수업 세번째 시간쯤에서 배우는 내용에 대해서 질문했는데 답을 못해서 식은땀을 흘리시는 분을 보고 나도 식은땀이 났다. 이건 사실 비전공자 전공자(라는 구분도 별로 좋아하지 않지만) 문제도 아니라고 생각한다. 저 정도 내용은 심지어 심리학과에서도 배운단 말이에요. ($*$심리학 폄하 아님, 제가 심리학과 나왔음)

아무래도 대부분 처음 이 분야에 진입할 때 머신러닝, 딥러닝부터 배우기 때문인 것 같다. 또 대학에서 흔히 ‘전공자’로 분류하는 공부를 했다 하더라도, 최근 몇 년 간 우후죽순으로 생겨난 데이터 사이언스 또는 인공지능이라는 단어를 포함하는 학과에서는 기본적인 수리/통계적 지식을 크게 중요하게 가르치지는 않는 건가 라는 생각도 든다. 내가 최신 부트캠프의 경향성과 학과의 커리큘럼을 정확하게 알고 있는 것은 아니니 그냥 이 현상을 최대한 이해해보려는 추측이다.

물론 누군가는 요즘 같은 시대에 데이터 분석가가 정말 통계를 잘 알아야 하냐고, 그리고 뭔가를 쓸 때마다 그걸 완전히 이해해야 할 필요가 있냐고 반박할 것이다. 특히 현업에서 업무를 할 때 고전적인 통계 모형들을 쓰거나 복잡한 수식이 따라오는 개념을 적용할 일이 별로 없다고도 할 것이다. 그때그때 ‘남들이 이럴 때 쓰면 된다고 말하는’ 모델을 찾아서 써먹으면 너무 쉬운데? 성능도 잘 나오는데? 예컨대 데이터와 리소스가 충분하다면 그냥 딥러닝으로 가면 되고, 세상에 prophet 같은 게 있는데 ARIMA가 무슨 원리고 정상성이 뭔지 내 알 바냐고?

많은 데이터와 성능 좋은 모델은 과연 우리의 흰 천과 바람인가?

이건 내 자신 안에 있는 어떤 목소리이기도 했는데, 여러 훌륭하신 지원자 분들과 한정된 TO를 두고 어떤 분과 같이 일하고 싶은지가 이번 주 내내 머리 빠개지게 한 고민이다 보니 여러 생각이 왔다갔다 했던 것이다. (아니 이 분이 그 질문 대답을 못하긴 했지만 이런 점은 뛰어나시잖아? 정말 그거 모른 게 그렇게 중요해?)

자 이제 뻔한 전개지만, 그 사람을 채용하느냐 마느냐와 별개로 그냥 일반적인 답변으로서 ‘중요하다‘가 내 결론이었다. 오늘은 이 생각을 짧게 적어 보려고 한다. 나와 조금 다른 환경에서 조금 다른 직군으로 일하는 사람들은 다르게 생각할 수 있다는 것을 감안하고 읽어주시기.

데이터를 보는 우리가 공유할 수 있는 언어

요즘 흔히 ‘데이터가 언어다’, ‘데이터로 말해요’ 이런 소리들을 많이 하는데 아주 위험한 소리라고 생각한다. 정말로 데이터가 언어라면, 이 세상은 아마 거대한 바벨탑이라고 할 수 있을 것이다. 데이터는 데이터일 뿐이다. 같은 문제를 풀기 위한 데이터라도 어떻게 수집했고 정제했고 해석했고 어떤 맥락에서 사용할지는 그걸 들고 오는 사람마다 다르기 때문에, 우리는 결국 똑같은 상황에서 다 다른 말을 하다가 영원히 서로를 이해하지 못하고 와르르 무너질지도 모른다.

간단한 예시로 다음과 같은 그림이 있다. 정직하게 그려진 그래프이고, 수치도 고정되어 있으며 그림에선 안 보이지만 표시되어 있다고 가정하자. 남자 집단의 평균은 몇이고 여자 집단의 평균은 몇. 이건 그냥 데이터다.

그림 출처

  • 나: 이 정도면 확실히 남자 쪽이 값이 크지?
  • 지나가던 사람: 대충 비슷한데?

이 차이가 유의미한 차이인지 아닌지를 알려줘서 나와 지나가던 사람이 둘 다 납득할 수 있게 하는 것이 바로 통계학(이 문제에서는 통계적 검정)이다. A 모델은 정확도가 0.82과 B 모델은 0.83인 상황을 보고 그럼 당연히 B가 더 좋은 거네! 라고 했을 때 그 뭔가 찜찜함은 아마 다들 느껴보지 않았을까.

언어의 사전적 정의는 ‘의사소통을 위해 여러 사람 사이에서 합의된 시스템’이다. 언어는 우리가 서로 같은 방향을 보고 있는지, 같은 결론을 내리기 위한 가정들을 공유하고 있는지 확인할 수 있게 한다. 함께 일하는 동료와 표본과 표본 크기에 대해, 어떤 지표가 적절한 추정량인지에 대해, 어떤 것이 소음이고 신호인지에 대해 합의된 언어로 정밀하게 소통할 수 있기를 바란다. 그건 우리의 수많은 대화 중 작은 일부이겠지만, 분명 그런 대화들이 필요한 순간이 있을 것이고 그랬을 때 우리가 같이 만드는 결과물이 더 나아질 것이라고 믿는다.

그냥 써먹으면 장땡이라는 착각

당연히 각 문제에 적합한 쉬운 도구를 이용하는 건 좋다. 그리고 모든 도구를 쓸 때마다 모든 걸 깊이 있게 바닥까지 알기 위해 공부해야 한다면 그것도 매우 큰 비용이며, 오히려 생산성이 떨어진다고 할 수도 있겠다. 하지만 너무 모르고 쓰면 최악의 경우 잘못 쓰거나, 최소한 최선의 선택이 아니게 될 가능성이 매우 크다는 걸 항상 경계해야 한다.

모르고 써서 잘못된 사례는 심심할 때 검색해 보면 진짜 끝도 없이 나온다. 이건 엄밀한 결과보다는 빠른 적용과 효과를 우선시하는 산업계뿐만이 아니라 흔히 말하는 ‘과학적’ 연구 쪽에서도 자주 발생하는 일이다. 대표적인 사례로는 2000년대에 ‘매력적인 외모의 부모일수록 딸을 많이 낳는다’는 내용의 연구가 이론 생물학 분야의 저널에 게시된 적이 있었다. 딱 들어도 헛소리 같긴 한데 결론부터 말하면 헛소리가 맞아서 엄청 후드려맞았다고 한다. 당연히 그 말 자체가 그냥 헛소리라는 뜻은 아니고, 그 결론으로 가는 분석 방법과 통계적 해석이 잘못된 사례이다.

일단 원 논문은 부모의 외모가 1점부터 5점까지 척도로 표기된 데이터와 그들의 첫번째 자녀의 성별 데이터를 사용했다. 어떻게 했냐면, 외모가 5점인 사람들 중 52%가 딸을 낳았고 1~4점인 사람들 중 44%가 딸을 낳았는데 이 차이가 통계적으로 유의미했다고 밝히고 있다. 앤드류 겔만은 Of beauty, sex, and power: Statistical challenges in estimating small effects에서 이 연구가 어떻게 잘못되었는지를 설명하고 있다. 우선 일반적인 통계적 관행에 좀 더 부합하는 분석 방법은 외모 점수로 성별을 예측하는 회귀 모델을 적합하는 것이다. 그렇게 하면 0.047의 회귀계수와 0.043의 표준 오차가 나오는데, 고전적인 통계적 추론의 관점에서 보면 이건 실제 해당 변수가 미치는 영향이 높은 가능성으로 -3.9%와 13.3% 사이에 있을 것으로 볼 수 있다는 소리이다(95% 신뢰구간). 즉 이건 누가 너 바나나 좋아해? 물어봤는데 좋아할 수도 있고 안 좋아할 수도 있다는 하나마나한 소리를 해서 질문자에게 아무 정보를 주지 못하는 상황이랑 똑같다. 원 논문과 이 결론의 차이가 발생한 이유는 근본적으로는 표본 크기와 통계적 검정력(power)의 문제다. 애초에 왜 해당 연구 수준의 작은 표본크기에서 이 정도의 차이가 통계적으로 유의하다고 볼 수 없는지, 어떻게 효과 크기를 결정해야 하는지 알지 못해서 잘못된 구렁텅이에 빠진 예시라고 볼 수 있겠다.

이번에 검색해보다가 통계를 잘못 쓴 사례 모음집 책도 있다는 걸 발견함

마찬가지로 실무에서도 ML이든 고전적인 통계 모형이든 뭐든 간에 그걸 왜 써야 하는지, 어떤 데이터와 어떤 상황에서( 데이터가 결측치가 많을 때, 분포가 편향되어 있을 때 등)는 쓰면 안 되는지를 알고 있어야 하고, 이 판단은 최소한의 개념적인 이해를 필요로 한다. 복잡한 추론이나 모델 선택이 아닌 작은 문제들도 다를 게 없다. n수를 겁나 늘려서 p-value 별 떴다고 좋아할 건가? (1,1,1,1) 랑 (10,10,10,10)를 코사인 유사도로 비교한 다음에 와 둘은 엄청 비슷해! 라고 할 건가? (농담 같지만 아마 세상 어딘가에서 벌어지고 있는 일일 걸요..)

분석의 효용을 지키기 위해서

이런 말들을 쓰다 보니 되게 이론적인 지식에 집착하는 편이세요? 소리를 들을 것 같은데 나는 전혀 그런 사람이 아니다. 그리고 좀 더 선 방어 들어가자면 스스로 생각했을 때 그렇게 통계잘알도 아니다. 그냥 흔히 말하는 ‘통계학자보다 코딩 잘하고 개발자보다 통계 잘 아는’ 그 정도만 얼추 유지하기 위해 공부하면서 버티려고 하는 정도임.

아무튼 내가 일을 하면서 제일 중요하게 생각하는 건 이론을 아는 게 아니고 데이터로 무언가 가치를 만들어내는 일이다. 가치를 만든다는 건 좀 추상적인 말인데, 일반적으로 회사에서 데이터 분석이 가져오는 효용은 데이터 프로덕트를 만들거나 데이터 기반 의사결정을 지원하는 것이라고 할 수 있다. 이 중 어떤 방향으로 가든, 데이터 분석가는 자기 분석의 결과물을 사용하는 사람을 설득할 수 있어야 한다.

설득의 방법과 조건들은 당연히 여러 가지가 있지만, 그 중에서 가장 기본적인 건 자신이 잘 알지 못하는 것을 남에게 이해시킬 수는 없다는 점이다.

  • 분석 결과 A라는 요인이 B를 올릴 때 가장 중요하다고 말하면서 어떻게 그런 결론을 냈는지 설명할 수 없다면
  • (어떤 모델을 썼고 어떤 튜닝을 해서 성능을 몇 프로 올렸다고 말하는 것과 별개로) ML을 모르는 고객에게 그 모델의 결과가 어떻게 나온 결과이며 그걸 왜 믿고 쓸 수 있는지 설명할 수 없다면

열심히 만들어낸 결과물이 어떤 가치를 가져올 수 있을까?

‘저도 잘은 모르지만 결과가 뚜렷하니/성능이 좋으니 믿고 쓰세요’ 라고 할 수도 있겠지만, 정말 할 수 있는 말이 그게 다라면, 그 정도 보고와 그 정도 모델링은 아마 빠른 시일 내에 사람이 할 필요가 없게 될 것이 뻔하니 언제까지 직업을 보존할 수 있을지 지금부터 고민해야 할지도 모르겠다.


가끔은 숨 참고 해골을 건져 보자…!

This post is licensed under CC BY 4.0 by the author.