대답하고 싶은 질문들

0
598

메일 섹션을 홈페이지 하단에 넣고, 회사 전화번호를 등록했을때만해도 공부하다가 뭔가 잘 모르는 내용이 있는 사람들, 벽에 부딪혔는데 스스로의 힘으로 극복하기 좀 어려운 분들의 연락을 기대했었다. 수업을 하는 것도 같은 이유니까. 나도 공부할 때 힘들었는데, 누군가 조금만 더 도와줬으면 쉽게 극복했을텐데, 이제 쬐끔 더 알게되었으니 도와주겠다는 마음에서 넣어놓은 개인 연락 포인트건만, 거의 대부분의 연락은 포인트 못 잡는 비지니스 요청이나, 대학원가고 싶은데 스펙이 안 되어서 고민이다, 그것도 아니면 개발자들이 경력 X년인걸 강조하면서 Data Scientist로 전직하고 싶다는 내용들이다.

대학원 가고 싶다는 분, 개발 경력 Y년이라는 분들, 그냥 돈 버린다는 셈치고 내 수업을 하나만 들어보시는 걸 추천한다. 일반인 용으로 쉽게 설명해놓은 웹페이지에 나오는 내용말고, Data Science 대학원가서 배울만한 내용들을 한번 보고나면, 할 수 있는 내용인지 아닌지, 잘 준비하고 있는지 아닌지 쪼~오~끔 더 쉽게 판단할 수 있지 않나? 이미 pabii 블로그 글이 100개 가까이 있고 그 중에는 대학원 수업에 무슨 내용이 나오는지 맛보기라도 넣어놨는데, 글도 안 읽어보고 입에 밥을 떠넣어달라는 식의 연락을 주시면 곤란하다.

솔직히, 수업 들으셨던 분 아니면 딱히 대답하고 싶은 수준의 질문 주시는 분도 없는 마당이라, 요즘은 홈페이지 하단의 메일 섹션 없애고 싶은 유혹이 샘솟는다ㅋㅋ

아래는 기대하는 질문 예시들이다.

 

질문 1. 의학 + 머신러닝

얼마전, 의대 교수로 재직 중인 분이 수업에 오셨다. 한 달 동안 말없이 수업에 나오고 계시길래, 잘 따라오고 계신지 궁금했는데, 종강 후에 연구 분야에서 관심있는 내용을 메일로 보내주시더라. 한번 뵙고 난 다음에 뭘 해드릴 수 있는지 간략하게 설명드렸고, 그 자리에서 왜 다른 사람들 다 놔두고 날 찾아왔는지 납득이 되는 설명을 해 주셨다.

계속되는 Follow-up 대화는 의학 논문들에서 쓰인 머신러닝 방법들에서 데이터를 어떻게 활용했는지에 대한 이야기였지, SVM 썼네, Ensemble을 썼네, Neural Net을 썼네 같은 대화는 일체 없었다.

보내주신 논문 A에서 본 데이터가 X-Y-Z 구조인 것 같은데, 이게 의학적인 관점에서 합당한 이해입니까, 논문 B에서는 이걸 Q-R-S vs. X-Y-Z로 해 놓고 Logit, RF, SVM 다 써보다가 결국 Logit을 이용해서 어느 병 진단에 Q-R-S 구조가 더 적합하다는 결론을 내렸네요, 데이터로 네트워크를 그려보니 구조도가 (K-M)-X-Y-Z 로 나오는데, 교수님께서 K-M이 연결되는게 합리적이라고 해 주셔서 모델을 변형시켜보는 것도 괜찮을 것 같습니다. 그런데, 이런 구조가 Q-R-S에는 없는지요? 가능하다면 apple-to-apple 비교를 해야할 것 같습니다.

 

질문 2. 금융 + 머신러닝

아주 예전에 수업을 듣고 가신 분 중에 모 금융사에 장기근속중인 학부 대선배 분이 있었다. 복습을 다섯달이나 하고 나니 이제 좀 이해가 된다는 겸손한 말씀과 함께, 시뮬레이션으로 만든 가상 데이터로 사내 컨설팅 하신 내용을 정리해서 보내주셨더라. 수업 때는 PCA만 가르쳐 드리고 FA를 개념만 설명해드렸었는데, FA로 latent variable을 찾아내서 각 변수별로 이름을 붙이려고 correlation으로 역추적하신 작업, sensitivity check으로 latent variable 숫자가 달라질 때 correlation 활용도가 어떻게 바뀌는지 논리를 쌓아올리는거보고 정말 감탄사가 절로 나왔다.

질문 하신 부분이 Latent variable과 굉장히 유사해보이는 직접 변수들을 썼을 때, 모델 오차가 얼마나 날지에 대한 결론을 training set / test set으로 내 봤는데, 이 부분이 얼마나 합리적인 추론인지, 혹시나 다른 방법이 없는지에 대한 궁금증이었다.

어차피 Latent variable을 뽑아낼 때 information loss가 있을 것이고, 그게 Bias의 원인이 된다. 유사해보이는 직접 변수들도 “유사”라는 말이 Measurement error가 있는 변수를 쓴다는 말과 같은 말이기 때문에, 아마 attenuated bias가 생길 것이라는 점을 미뤄볼 때, 두 모델 모두 coefficient들의 절대값이 실제로 나왔어야하는 값보다 약간 작게 나올 것이다. Coefficient들의 절대값이 더 크게 나오는 모델이 좀 더 Bias가 작은 모델일 것이라고 직관적인 결론을 내려볼 수 있다는 답변을 드렸다.

참고로 이거 수업 시간에 다 설명했던 내용이다.

 

질문 3. 불량율 + 머신러닝

어느 연구소 분의 질문이다. y = ax1 + bx2 + cx3…..의 간단한 regression 식을 세워놓고, y값이 0/1인 경우를 테스트하겠다고 하시던데, y값을 Normal Q-Q plot에 얹어놓으셨더라. 0/1이면 Binomial이고, 한쪽 skewed로 나올 가능성이 높아보이는데 이걸 왜 Normal의 Q-Q에 얹었는지 이해가 안 되어서 왜 이런 작업을 하시느냐고 물어봤다.

하나의 batch에 N개의 상품이 들어있는데, 각 batch마다 불량율을 k%로 기록하고, 그 불량율 k%를 맞추려고 상품들의 특징을 잡아낸 x1, x2, x3 값들도 batch마다 평균값을 썼단다. 말을 바꾸면, y값도 평균값들의 분포, x1, x2, x3…도 평균값들을 모아놓은 데이터 셋인 것이다.

이런 경우에, y값은 sample들의 평균을 모아놓은 것이므로, Central Limit Theorem에 의해서 정규분포로 수렴하게 된다. y값 이전에 불량/정상 사건은 0/1이고 불량일 가능성이 낮으니까 Poisson일 확률이 높지만, 일단 batch 하나가 sample 집합이고, sample에서 뽑은 평균값들을 주욱 다 모아놓으면 정규분포에 수렴하는건 통계학적인 기초 상식이다.

그런데, y값은 0.1%, 0.2%,…, 1% 범위에 있는, 0 근처에 있는 값, 0보다 작을 수 없는 값이기 때문에 아마 0에서 truncated인 normal이 나올 것이다. 따라서 저 위의 Normal Q-Q 로 데이터가 랜덤인지 아닌지 알기 어렵다. 그전에, 이런 CLT 정규분포인 데이터를 Normal인지 아닌지로 랜덤 여부를 알아본다는 것 자체가 말이 안 되는 작업이다.

거기다, x1, x2, x3… 모두가 batch별 평균값들이잖나? 그럼 x1의 분산이 얼마나 작을까? x2, x3는? 아마 x값들의 분산이 굉장히 작게 나올텐데, 그걸로 truncated normal인 y값을 예측하겠다? 그런 batch가 수만개가 있다고해도 쉽지 않은 작업일 것이다. 바늘구멍으로 10m 밖에 있는 반대편 바늘구멍을 설명하는 작업이기 때문이다.

이래놓고 x1^2, x1 * x2 같은 non-linear 패턴 찾아줄 변수들 쓰면 더 좋아지는거 있지 않냐, 그런 library 가르쳐 달라고 하시던데, 수업시간에 그게 무모한 작업이기 때문에 SVM, Ensemble 같은 모델들이 나왔다는 설명하지 않았었나? 다른 포스팅에도 써 놨던 답변인거 같은데?

애시당초 batch 에서 나온 평균값을 쓰지말고, batch 안에 있는 낱개 데이터들을 썼어야했다.

 

나가며 – Data Scientist들이 할 일, 할 수 있는 일, 해야만 할 일

앞으로는 이런 답변을 할 수 있는 질문이 아니라면 답변을 거절하려고 한다. 돈 벌려고 수업 들으라고 하는게 아니라, 이런 답변을 알아들을 수 있는 사람들에게만 설명하고 싶기 때문에 수업을 들으라고 하는 것이다. 그리고 이런 대화가 가능한 사람들이 많아져야 모델링 수준도 올라가고, 덩달아 시장 수준도 올라가지 않겠는가? Neural net 쓰는 예제 코드만 열심히 모은다고 저런 대화가 가능해질까? 실제로 Criteo 다니던 시절에 한 줌 밖에 안 되는 Data Scientist 들끼리 글로벌 콜을 하면 수리통계학 기반 없는 사람들은 대화에 끼여들 여지가 거의 없었다. 예를 들면, 회사의 어떤 데이터 셋이 Poisson인지, Truncated Poisson인지에 대한 의견을 나누고, 결론에 맞춰 모델 설정을 어떻게 해야하는지에 대한 자신들의 research를 쉐어하고, y=0인 경우를 제거하느냐 아니냐에 모델 결론이 바뀌는 부분에 대해서 이런저런 토론을 했었다. 이런게 진짜 Data Scientist들이 할 일, 할 수 있는 일, 해야만 할 일이라고 생각한다.

무슨 수업을 들어야할까요? 수학 공부는 어디서부터 시작해야하나요? 고교 수학이 기억 안 나는데 정석책을 다시 봐야할까요? 대학 전공은 뭘로 골라야할까요? 등등의 질문은 스스로 답변을 찾을 수 있을만큼 정보가 널려있지 않나? 고교 시절에 수학 못 하던 반 친구가 “이 책 다 보고나면 나도 수학 만점 받을 수 있어?”라고 물었을 때 대답할 말 찾기 힘들었던 것과 궤를 같이 한다. 그 책 한 권만 보면 수학 만점 받을 수 있다는 “쏙쏙 빼먹어서 편하게 공부하고 싶다”는 마인드를 버리고, 시중에 나온 모든 문제집에 나온 모든 문제를 다 풀어낼 수 있는 수준이 되어야 수학 만점을 받을 수 있다고 솔직하게 대답했다면 어떻게 됐을까? 그딴 식으로 사람 힘 빠지는 소리하지마라, 그렇게 힘들게 공부하는게 왕도가 아니다는 반박을 들었을까? 참고로 머리가 딸리는 필자는 항상 “할 수 있는거 다 해본다”는 철학을 갖고 공부해왔다.

저런 대답하기 깝깝한 질문들 말고, 위에 예시를 들어놓은 종류의 답변이 필요한 질문은 아무리 바빠도 늦게라도 시간을 내서 답변한다. 실제로 메일을 잃어버려서 1달만에 늦게 보고서는 답장해드린 경우도 있다. 이미 그런 답변 쓴 내용 중 일부를 이곳, 이곳, 이곳, 이곳에 올려놨기도 하고.

정말 열심히 공부하고 있으신 분들 모두 화이팅이다!