Data Scientist 면접 질문들

오랜만에 WorkingUS.com을 들어가봤다. 미국에서 일하는 한인들의 모임인데, 가끔은 Data Science 관련 분야에 대한 질문 & 답변도 올라오고, 한국 상황이 아니라 미국 상황에 맞는 답변이 많기 때문에 필요하신 분은 참고하시면 좋겠다. 링크의 어느 댓글을 보다가 필자기 2016년에 받았던 여러가지 질문들이 생각나서 한번 정리해본다.

참고로 링크를 보면 느끼게 되겠지만, 한국처럼 코딩을 얼마나 해 봤냐, C언어는 쓸 줄 아느냐, 알고리즘 한번 짜봐라 같은 개발자 면접스러운 질문을 받는 일은 절대 없다. Data Scientist라고 타이틀을 달아놓은 Data Analyst 면접이라면 Tableau 같은 Data Visualization tool을 얼마나 잘 쓰느냐고 묻겠지만, 정말 Data Scientist 면접은 수리통계학에 직간접적으로 관련 있는 질문들 밖에 없었다는 점을 다시한번 강조한다.

 

Q1. In a n-dimensional vector space, how do you describe dimensionality reduction? How is it related to projection matrix? How have you used it in your previous work?

박사 시절 썼던 논문 중 한 부분에 Markovian 시뮬레이션 10억개를 묶은 데이터 처리를 하느라 Dimensionality reduction을 썼던 부분을 살짝 언급했더니 나왔던 질문이었다. 머신러닝 공부가 탄탄하게 잘 된 분들은 바로 감을 잡겠지만, PCA를 Vector Space 로 설명할 수 있는지에 대한 테스트다. 결국 N개의 Linearly independent vector가 만든 공간에서 Eigen vector를 찾아내는 작업이 공간을 재구성하는 작업이라는 점, 이왕 재구성되는 공간이면 서로간 orthogonal vector를 만들어내야 가장 효율적인 차원 축소가 된다는 점을 설명하고, 추가질문에 답변하는 방식으로 인터뷰가 진행되었다.

Q2. Why is OLS the Best Linear Unbiased Estimator and when does it break down?

학부 고학년이나 석사 1학년 정도에 배우는 내용이다. 데이터 y값이 정규분포를 따를 때, MLE가 Best Unbiased Estimator이고, 이 값이 OLS와 일치한다는 점, 오차항 제곱의 최소값을 찾는 작업이 결국 Variance가 가장 작은 예측치를 찾는 작업이 된다는 걸 간단한 수식을 써가면서 증명했다. 당연히 Break down 되는 경우는 종속변수 y값이 iid 가정 (Independent, Identically Distributed)을 만족시키지 못할 때, Heteroskedasticity가 있을 때, ARIMA 형태의 시계열 시퀀스 에러가 있을 때 등등을 들고, 각각에 해당하는 예제, 실제로 데이터 모델링을 할 때 어떤 테스트들로 확인할 수 있는지 등등에 대한 질문이 이어졌다.

iid가정은 시뮬레이션 데이터로 작업할 때는 전혀 고려할 필요가 없었다. 내가 정하는 시뮬레이션 기준대로 데이터가 생성되기 때문이다. 실제데이터로 테스트해보고 싶다면, 가장 쉬운 방법으로 sub sample을 5개 정도 뽑은 다음 두 사건이 각각 일어날 확률과 동시에 일어날 확률을 비교해서 독립사건 조건을 충족시키는지, sub sample들이 분포가 (거의)일치하는지 정도 확인해보면 될 것 같다.

Heteroskedasticity나 Autocorrelation은 그런 특징이 존재하는지 여부를 귀무가설 vs. 대립가설로 놓고 2개의 Regression을 비교하면 된다. 간단하게 쓰는 F-test부터 White test나 Durbin-Watson test가 모두 그런 종류의 테스트들이다. 실제로 자주 쓰냐고?

데이터 작업을 할 때 제일 간단한 작업은 Regression 명령어 한 줄을 치는 작업이고, 제일 어려운 작업은 내 결과가 얼마나 합리적인지를 보충설명해주는 100개의 다른 가능성을 고려하는 작업이다.

Q3. In what context do you prefer MLE?

어차피 분포함수만 알고 있으면 MLE 쓰는게 제일 “짱”이지 않냐고 농담조로 답변했을 때 나온 추가 질문이다. 간단히 비교하자면 OLS는 평균 (Mean)을 찾는 작업이고, MLE는 최빈값(Mode)를 찾는 작업이라고 할 수 있다. 정규분포를 비롯해 평균 = 최빈값 조건을 만족하는 많은 분포함수들에서 OLS와 MLE가 (거의) 같다. (“거의”가 빠지려면 분산 쪽에 대한 추가적인 가정이 있어야함)

그럼 분포함수가 좌우대칭으로 생겼으면 MLE를 쓴다고 대답해야할까?

아니다. 좀 더 정확하게 이야기하면, 데이터의 분포를 모를 때는 Least Square 가 제일 단순하면서도 틀릴 확률이 낮은 방법이고, 분포를 알 때는 무조건 MLE를 쓰는게 맞다. Poisson 분포는 오른쪽 skewedness가 심할 때 평균 = 최빈값이 깨지는거 아니냐고? 계산하는 사람 입장에서 평균이 더 필요한가? 아니면 최빈값이 더 필요한가?

Q4. For what data set do you consider a Poisson distribution?

이건 Criteo 재직시절, 필자가 Impression이 아예 없었던 데이터, Click이 아예 없었던 데이터를 처리하는 작업 중에 그 분포가 Poisson인지, Truncated Poisson인지를 놓고 리서치 했던 결과물을 우리 팀 Data Scientist들에게 발표하던 중에 했던 질문이고, 그 미팅 이후에 신규 채용에도 몇 차례 비슷한 질문을 던졌다.

Poisson distribution은 이항분포에서 확률을 1/2로 놓는게 아니라 0.0001로 놓는 경우라는 것을 수학적으로 증명할 수 있다. 말을 바꾸면, 매우 드물게 일어나는 사건, 근데 숫자 1개, 2개로 헤아릴 수 있는 사건들을 Poisson으로 표현할 수 있다는 뜻이다. 박사 연구하던 시절에는 금융 시장에서 기습적인 대폭락이 일어나는 이벤트를 수학 모델에 포함시키는데 활용했고, 온라인 광고에서는 광고를 클릭하는 확률이 낮으니까 같은 맥락에서 활용할 수 있다.

Q5. How is SVM different from Logit?

Logit은 각각의 데이터 포인트들을 기준으로 Decision boundary와의 거리 or 오차를 계산하고, SVM은 0/1 그룹으로 나뉜 데이터, “그룹”을 기준으로 Decision boundary와의 거리를 계산한다. SVM이 수학적으로 더 Elegant한 부분이 많지만, Outlier들에 굉장히 취약할 수 밖에 없는 구조, Non-linear boundary를 잡아내기 위해 Kernel 함수를 써야하는 구조도 결국엔 data points vs. data groups 라는 철학적인 차이에서 비롯되었다.

Q6. In what context would you prefer Deep Neural Network to other models?

K대 산업공학과 대학원 들어간다는 친구가 자기네 학교 교수님 중 한 분이 위와 비슷한 시험 문제를 냈었단다. 선형 회귀분석 모델, Logistic regression 모델, 그리고 Deep Neural Network 모델을 비교, 설명하는 내용을 요구하는 문제가 나왔었다는데, 그 이야길 들으면서 요즘 같은 시대에 참 적합한 시험 문제라는 생각이 들었다. Logit이라는게 결국 선형 회귀분석 모델의 결과값만 Sigmoid function으로 바꾼, 일종의 Kernel 하나를 쓴 작업이고, Deep Neural Network라는 모델은 그런 Logit을 Ensemble 모델과 결합한 내용에 지나지 않으니까. (이미 이 블로그에서 여러번 이야기했던 내용이고, 기 수강자 분들은 인지하겠지만 데이터 사이언스 기본 강좌에서 자세하게 다룬다.)

일반적인 선형 회귀모델은 Regression 돌린 값을 다시 Regression 돌려봐야 선형 관계식이 바뀌지 않는다.

y = a(ax+b) + b

와 같은 방정식을 생각해보면, 처음에 ax+b 라는 선형식을 얻고, 그 위에 다시 ax’ + b라는 함수를 만드는데 여기서 x’ = ax + b 였다. 저 위의 식은 어떻게 바뀔까?

y = a^2 x + ab + b

a와 b 값은 바뀔지 모르지만, 전체 식의 모양은 전혀 변화가 없다.

Logit은? 상황이 크게 바뀌지 않는다. 단지 0/1을 구분한다는 맥락 때문에 함수 형태가 바뀐다는 것을 제외하면 맥락은 같다.

그런데 Neural Net은 1개의 Logit만 계속 덧대는게 아니라, 여러개의 Logit을 묶는 작업이 반복된다. 즉, 0/1 구간을 여러개 만드는 작업인 것이다. 언제 이런 작업이 제일 필요할까? 데이터에 0/1 구간이 여러개 필요한 데이터는 뭐가 있을까?

Random 데이터, 특히 분포함수가 정규분포인 데이터는 굳이 머신러닝의 Non-linear model들 없이 MLE나 OLS로 계산하는게 충분하다는 말이 다시 등장한다. 얼굴 이미지 인식, 자연어 처리 등의 작업은 여러 단계에 걸쳐 0/1을 구분해야할 필요가 있다 (ex. 눈, 코, 입, 얼굴형 등등) 딥러닝이 이런 종류의 데이터에서만 강한 성능을 보이는건, 이렇게 수학적으로 볼 때 너무나 당연한 결론을 내릴 수 있다.

 

나가며 – 면접 방식 & 준비

실리콘 밸리라고해서 무슨 프로젝트 뛰어봤다는 종류의 질문 & 대답보다 위의 이론 질문들에 더 집착하는건 아니다. 하지만, 면접 중에 무슨 프로젝트 해 봤다고하면 설명을 시켜놓고 반드시 저런 종류의 추가 질문이 나온다. 제대로 알고 그런 모델을 썼는지, 아니면 그냥 남들이 했다고 하니까 그대로 카피했는지 확인하고 싶기 때문이다. 화이트 보드에 증명을 해보라거나, 순서도를 그려보라거나는 추가 질문이 나오는 것도 같은 이유다. 이해했으면, 정확하게 알고 있으면 겁날게 없는 질문들이니까. 그렇게 알고 있어야 제대로 일을 할 수 있으니까.

이런 종류의 면접 준비는 어떻게 하냐고? 면접 질문들 구해서 답만 외우면 되냐고? 아니, 그런 사람한테 면접 시간 쓰는거 너무 싫다. 실수로 뽑았어도 수습 기간에 바로 해고한다.

당연히 수리통계학으로 깊은 내공을 쌓아야한다. 학부 졸업생이 쉽게 읽을 수 있는 책인지는 모르겠지만, Data Scientist 면접관도 면접자도 모두 기준으로 삼는 책은 The Elements of Statistical Learning (PDF 링크)다. 만약에 이거보다 더 고급 수학이 들어갈 면접을 준비해야하면 Pattern Recognition and Machine Learning (PDF링크)를 추천한다.

(A meme for fun)

 

여담 – 좋은 Data Scientist 뽑는 법

요즘 가까운 친구들이 좋은 Data Scientist 뽑고 싶은데 뭘 봐야하냐고 물어보면 이렇게 대답해준다.

“Neural Network 관련해서 모델 많이 안다고 자랑하는 애들 말고, 데이터 전처리하느라 머리 쥐어뜯어봤던 경험담을 늘어놓는 애들을 뽑아”라고.

그 전에, 본인들이 좀 똑똑해야 될 것 같다는 생각도 문득 든다. 내가 만났던 “Data 팀” 팀장급들 중엔 Correlation 공식도 제대로 이해 못하는 바보 멍청이도 있었고, 모델링 토론은 커녕 머신러닝, 딥러닝이 요술봉인 줄 아는 사람들도 많았다. 수식 볼 줄 안다고 전문가라고 착각하길래 더닝 크루거 효과*를 지적해준 적도 있었다. 어느 학교 마케팅 교수도 내가 만드는 모델이 Customer Lifetime Value (CLV) 모델인 줄 알고 있던데, 그게 기초 모델이 되긴 하겠지만, 1990년대에 통신사에서 가입자들 가치 평가용으로 쓰던 모델을 2010년대 후반에 그대로 갖다 쓰는건 아니지 않나? 보통은 잘 모르니까 이게 공대생들이 하는 작업인 줄 아는데, 아마도 전공 이름에 관계없이 Quantitative 전공으로 석박사 하면서 데이터로 모델 만들어 본 사람들이 하는 작업이라는 걸 인지할 수 있는 경험이 없었기 때문일거라고 생각한다.

*더닝 크루커 효과 (Dunning-Kruger effect): 능력이 없는 사람이 잘못된 결정을 내려 잘못된 결론에 도달하지만, 능력이 없기 때문에 자신의 오류를 알아차리지 못하는 현상을 가리킨다. 즉, 무식하면 용감하다. (박사시절, 지도 교수님이 매번 날 까면서 쓰신 표현이다 ㅠㅠ)

끝으로 개인적인 경험 하나만 덧붙인다. 밥 한번 먹자고 부르더니 자기네 회사에 오라던 스타트업 대표들 많이 만났는데, 근데말야, 니네가 회사를 나보다 먼저 만든거지, 나보다 잘난 인간은 아니지 않냐? (너무 오만방자한 표현인가?ㅋ) 나는 너 고용할 생각없고, Pabii 커져도 니네 회사 인수할 생각도 없는데?? 내가 널 고용하고 싶고, 그 회사 인수하고 싶어져야 니네 회사 들어갈 생각이 들지 않겠냐? Criteo 들어갈 때, 구글, 페북보다 더 좋은 알고리즘을 갖고 있다고 했기 때문에 오퍼에 싸인했었다. 우리 회사 비지니스 홈페이지도 안 보고, 블로그 글도 겨우 1-2개 읽고서는 “블로거인 줄 알았다”며 내 시간을 뺏는 회사 대표에게 인간적인 존경심은 커녕 연민도 안 생기는데, 그런 피상적인 수준으로 인력 조사하는 사람이 대표인 회사를 왜 가야하나? 하물며 사업 모델도 우리회사보다 보잘 것 없는데?

똑똑한 인간을 뽑고 싶으면, 금전적으로나 기회 제공이라는 측면에서 비교 불가능한 보상을 해주거나, 아니면 본인이 더 똑똑한 인간이라는 걸 보여줘야한다고 들었다. 우리나라에서 좋은 Data Scientist라고 불릴만한 사람들이라면 그 정도 능력+자존심은 있는 사람일 것이다.

You may also like...

댓글 남기기