SPSS로 할 수 있는 걸 굳이 Python 코드로 쳐야되냐?

0
634

모 게임사에서 데이터 분석(?)을 한다는 팀에 있는 개발자 친구를 만났다. 아무리 학부시절 절친이어도, 오랜만에 만나니까 회사 내에서 무슨 일을 하고 있을지 좀 알고 가야지 실례가 아닐 것 같아서 이래저래 구글링을 좀 해 봤다.

언론에 공개된 내용만 봤을 때는, 좋은 회사고, 훌륭한 목적을 가진 부서라고 보였지만, 그 팀의 수장이라는 사람부터 사내의 데이터 “분석”을 한다는 사람들의 스펙과 발자취(?)를 봤을 때는, 모델링을 할 수 있는 사람들의 모임이 아니라, Data Analyst들과 Data Engineer들로 꾸려진 팀이라는 느낌을 받았다.

아니나 다를까, 개발자 친구를 만나니 회사 내에서 하는 데이터 “작업”이라는 것들이 얼마나 단순한지에 대한 불평불만이 막 쏟아지더라.

이런게 정말 데이터 “작업”이라면, 그 분들 지원해주는 개발자 하느니 그냥 직접 게임 만드는 개발자로 사는게 더 낫지 않냐고, 도대체 데이터 사이언스라는 건 왜 필요한거냐, 무슨 성과가 실제로 있냐는 폭풍 디스를 들었다.

그 중에서 제일 기억에 남는 말이,

“그 타게팅 광고한다는거, 요새 페북이 픽셀이라는거도 제공해주고, 그냥 단순히 캐쉬에 있는 정보 비슷한거 매칭해주는 수준 아냐? 0.018% 반응율이 0.02%로 올라가는걸로 뭐가 대단하다고 하는건지 도저히 이해가 안 된다고.”

“데이터 분석한다는 석사, 박사 나온 사람들이 우리회사에서 하는 일이 말야, 그냥 우리가 학부 때 SPSS로 숙제 내던 걸 그냥 Python 이나 R 코드로 치는 수준 밖에 안 되던데? 진짜 그게 다야?”

는 불평이었다.

 

반박 1 – 반응율이 0.0x%가 아니라 1% 이상이라면?

필자가 Senior Data Scientist로 재직했던 Criteo라는 회사가 잡서칭하던 당시 필자의 손바닥 위에 놓고 고민했던 글로벌 Top Tier IT 펌들과는 네임밸류에서 꽤나 격차가 있던 회사다. 보통의 한국 사람이라면 설령 일이 자기 입맛에 안 맞더라도 유명한 회사에 들어갔겠지만, 필자는 Criteo의 타게팅 광고 모델이 다른 회사들보다 압도적으로 좋다는 여러 Record를 듣고 맘을 바꿔 먹었었다.

어느 정도 차이가 나나면, 음란 광고, 보상성 광고 등의 예외를 제외하고 우리나라에서 디스플레이 광고 클릭율 (CTR, Click-Through-Rate)이 가장 높다고 생각되는 광고 지면이 N사 포털의 초기화면 좌측 가로 상단 배너다. 지난 대선에 그 지면에 여러 후보들이 경쟁적으로 자기 슬로건을 노출하더라. 업계 소문에 따르면 그 지면의 평균 CTR이 0.1% 정도라고 알려져있다. (저 친구네가 0.0x% 근처에서 놀고 있는게 놀라운 일이 아니다.)

구글을 비롯한 여타의 타게팅 광고 서비스하는 회사들의 평균 CTR이 0.5% 정도라고 하는데, 필자가 Criteo 재직 중에 CTR이 1%가 안 나오면 도대체 무슨 문제일까 배경조사를 해야했었다. 대부분의 문제는 설정상의 오류였고, 가끔은 나라별, 광고주별로 특이하게 CTR이 낮고, 전환율이 낮다는 이유로 타게팅 모델이 국가별, 광고주별로 어떻게 다르게 적용되어야할까 고민한 내용을 다른 Data Scientist들과 공유하기도 했다. (이게 Data Scientist의 일이니까)

그만두고 나온 회사를 너무 띄워주고 있는 것 같기는한데, 그 회사는 CTR이 높다는 걸로 홍보하는게 아니라, 그렇게 광고 찍고 들어온 유저가 구매전환 (CVR, Conversion Rate)이 높다는 걸로 홍보하는 회사고, 그 쪽 정보는 외부 언론에서 찾을 수 없는 정보니 공개하지 않는 걸로 회사 기밀 보호의 의무를 지키도록 하자. (위에 공개한 정보는 여기, 여기, 여기, 여기에서 확인할 수 있다. 우리회사 상품 출시되면 효율 더 높게 나올테니 그 땐 진짜 홍보해야지ㅋ)

“니가 0.018%와 0.02%에서 놀고 있을 때, 글로벌 Top Tier IT 회사들은 0.5%에서 놀고있고, 내가 다녔던 회사는 1% 안 되면 Alert이었다.”

는 이야기를 하니, 그 친구 눈이 똥~그랗게 되더라.

필자도 실리콘밸리에서 잡서칭하던 당시에 그 친구와 똑같은 반응을 보였던 적이 있기 때문에 그 충격을 꽤나 잘 이해하고 있다고 생각한다.

 

반박 2 – SPSS로 할 수 있는 걸 굳이 Python 코드로 쳐야되냐?

평생동안 SAS와 SPSS라는 통계 패키지를 써 본적이 딱 2번씩 밖에 없다. 학부 시절 어느 전략 컨설팅 회사 인턴하면서, IBD Analyst시절 외부에서 받은 데이터 처리하려고, MIT에서 머신러닝 수업 숙제용으로 받은 테라 데이터 재정리하려고, 그리고 박사시절 교수님 프로젝트 도와드리느라고.

필자의 이용 목적에 맞았다면 일부러라도 배워서 썼을텐데, 대용량 데이터 정리(?) 목적 이외에 다른 용도가 보이질 않아서 더 이상 그 프로그램들을 다룬 적이 없다.

그런데 만약에 당신이 SPSS로 할 수 있는 걸 굳이 Python 코드로 치고 있었다면, SPSS를 잘 활용하지 못했거나, Python을 잘못 활용하고 있다는 뜻일 것이다.

Support Vector Machine Python code example 이라는 검색어로 구글링을 한번 해 보시라.

수 없이 많은 Python 코드 예제를 블로그에서, Github에서 볼 수 있다. 필자는 그런 코드 중 일부를 코드 설명하는 시간 초반부에 아주 빠르게 개념 설명하는 용으로만 쓴다. 저건 회사 업무를 할 수 있는 수준의 코드가 아니라는 걸 너무나도 잘 알고 있기 때문이다. (그런 코드 복사해서 돈 받는 강의하는 사람들 쫓아내겠다고 계속 강의를 하고 있기도 하다.)

수업에 왔던 국내 유수의 대기업 데이터 관련 업무 한다는 분들 대다수가 수업 시간에 충격을 먹고 떠나시는 것도 같은 이유일 것이다. 자기가 회사에서 직, 간접적으로 배웠던 것과 차원이 다르게 느껴지는 데이터 모델링 이야기를 들었는데, 그걸 쉽게 그 자리에서 바로 이해하기는 매우 어려울 것이라고 생각한다. 박사 학위를 했다고 해도, 자기 학문에서 데이터 모델링하는 범위 밖으로 외연을 확장시킬 수 있는 능력을 갖춘 사람이 얼마나 있으며, 또 그런 사람들이 연구소 말고 대기업에 얼마나 가 있을 것이고, 대기업에 갔다면 열정을 갖고 그런 모델을 만들고 있을 확률은 또 얼마나 될까? 너무 비관적인가?

왜 실리콘 밸리에서 R이나 Python 같은 Script형 언어를 할 수 있는 걸 Data Scientist의 기본 스킬셋이라고 생각할까?

SAS나 SPSS로 못하는 작업, 그런 통계 패키지로 돌려보기에는 매우 귀찮고 어려운 작업들을 Script형 언어로는 쉽고, 빠르고, 더 체계적인 방식으로 처리할 수 있다는 사실을 알기 때문이다.

“우리가 쓴 논문용으로 Customization은 커녕, 기본 함수도 지원해주기 쉽지 않을 것 같다”

박사 시절, 거시경제학 논문 쓰던 친구들과 Bellman equation으로 거시 모델링해놓고 데이터 입력하면서 발생하는 문제들 (ex. Calibration)로 농담따먹기한 적이 있었는데, 어느 친구가 STATA*에도 이거 지원해주면 얼마나 편할까라고 우스갯소리를 하니, 다른 친구들이 “우리가 쓴 논문용으로 Customization은 커녕, 기본 Bellman 함수도 STATA에서 지원해주기 쉽지 않을 것 같다”는 식으로 반응했었다.

*STATA는 SAS, SPSS와 유사한 통계 패키지 프로그램이다. 주로 사회학, Softcore 경제학 연구자들이 이용한다.

R이나 Python 코드를 쓰기 때문에 Data Scientist가 아니라, Data Science를 하고 있기 때문에 Data Scientist다.

 

나가며 – 공돌이 Mind의 한계

그 친구의 불만을 식혀줄 방법은 뭐가 있을까?

회사 안에 정말 뛰어난 Data Science 모델링을 할 수 있는 사람이 최소한 한 명, 운이 좋다면 둘이 있어서 서로 경쟁 & 협조 하는 모습을 볼 수 있어야 그 친구가 새로운 세상이 있다는 것도 깨닫고, 더 노력하면 다른 성과를 얻을 수 있다는 희망도 갖게 될 것이다. 불행히도 한국에서 그런 내공을 갖추신 분들을 아직까지 만나진 못해서 딱히 어디로 이직해봐라는 말도 못 해주겠더라.

필자가 수업에서 0.0x% 리그와 1% 리그의 차이는 뭔가 “쌈박한” or “계산비용이 많이드는” 알고리즘에서 나오는 것이 아니라, 데이터를 어떻게 기발하게 쓰느냐에 달려있다고 설명해준다. 글로벌 Top Tier 회사들이 쓰는 모델이 Logistic regression이라는 논문 기억나시는가? 남들은 그냥 A가 1번, B가 2번, C가 3번 있었다는 단순한 데이터 값만 보는데, A와 B의 순서가 어떻게 되었는지, A, B, C 전체에서 출발점과 최종 도착점은 각각 어디였는지 같은 정보들이 훨씬 더 중요하고, 그런 값들을 입력 변수로 활용하는게 모델링을 위해서 데이터를 “전처리”하는 거다.

지금까지 한국와서 “개발자” or “공돌이”들을 만나면서 느낀 작은 결론은, 필자가 말하는 방식으로 데이터를 전처리하는 작업에 대한 강한 거부감이 공대 출신들 머리 속에 박혀 있다는 것이다. 그들은 언제나 자동화된 알고리즘으로, 그게 어렵다면 계산비용을 많이 추가해서라도 문제를 “자동적”으로 해결하려고하지, 인간의 적절한 판단을 활용해서 모델을 업그레이드 시키겠다는 생각을 안 하거나 못 하더라.

근데, 각각의 분과 학문이 몇 십년간 쌓아올린 지식의 집결체인 “모델”이라는 걸 그렇게 자동화된 알고리즘으로 다 찾아낼 수 없다. 니네가 의지하는 그 머신러닝이라는거도 그냥 통계학일 뿐이니까.

경제학과 교수들한테 경멸에 가까운 무시당하면서도 통계학 모르니까 “무작정” 모든 변수 다 집어넣어 놓고 R-squared 값 높은 조합만 찾아다니는 사회학자나, 그냥 자동화 알고리즘이 다 알아서 해 주겠지, 복잡한 통계학, 각 학문별 모델이란걸 알게 뭐야~ 라고 생각하는 개발자들 사이에 무슨 차이가 있나? 쓰는 언어가 English vs. Java 인 것 말고?