현업 데이터 분석가가 데이터 분석가를 지망하시는 분들께 드리는 조언
저는 4년 차 데이터 분석가입니다. 제가 막 입사하던 시절에도 그랬지만, 여전히 데이터 관련 직군을 향한 회사와 구직자들의 관심은 꽤 큰 것 같은데요, 여전히 수요가 많은 직군이라고 해도, 생각보다 데이터 분석가로 취업하거나 전직하기는 쉽지는 않은 것 같습니다. 물론 이러한 시장의 흐름에는 다양한 원인이 있겠지만, 제가 생각하기에 그 이유 중 하나는 '데이터 분석가에게 실제로 기대하는 업무'와 '데이터 분석가 지망생이 생각하는 필수 역량' 사이에서 오는 괴리인 것 같습니다. 그래서 오늘은 현업 데이터 분석가로서 느끼는, '데이터 분석가에게 필요한 진짜 역량'에 대해 이야기해보려 합니다.
(*데이터 분석가라는 직무는 회사마다 업무의 범주가 꽤 다양하기 때문에, 이 글은 저의 개인적인 경험에서 나온 생각일 뿐 모든 데이터 분석 직무에 해당되는 건 아닐 수 있습니다.)
'데이터 분석'이라고 하면 가장 중요한 3대 역량이 코딩, 통계, 도메인 지식이라고 하죠. 그런 만큼 코딩 실력은 당연히 필수라고 할 수 있는데요, 사실 '코딩'이라는 단어는 굉장히 막연한 단어입니다. 프로그래밍 언어를 사용해 컴퓨터에게 명령을 넣는 무수한 행위를 모두 코딩이라고 부르기 때문에, 처음 데이터 분석가를 희망하시는 분들은 '어떤 언어로, 어떤 라이브러리를 다룰 줄 알아야 하는 거지?'라는 혼란에 빠지실 수 있다고 생각합니다.
일단, 제 생각에 데이터 분석가에게 필요한 프로그래밍 언어는 딱 두 가지입니다. Python과 SQL이죠. 그중에서도 데이터를 추출하고 조작하는 데 사용되는 언어인 SQL은 필수입니다. 간혹 개발자가 추출해 주는 데이터를 가지고 인사이트를 뽑아내는 역할을 하는 분석 직군들도 있긴 한데요, 다양한 회사에서 필요로 하는 데이터 분석가가 되려면 데이터베이스에서 필요한 데이터를 직접 뽑을 줄 알아야 합니다. 그렇기 때문에 공부할 시간이 정말 없다고 하신다면 Python보다는 SQL을 먼저 공부하시는 걸 추천합니다. 그리고 모든 언어가 그렇긴 하지만, 세세한 명령어와 문법을 다 공부하자면 끝도 없기 때문에 일단 기초 데이터 조회 명령어를 공부하시고 나면 최대한 실전과 비슷한 연습 환경에서 코드를 많이 써보시면 좋을 것 같습니다. (*SQL은 어차피 DBMS에 따라 세세한 명령어나 문법에 차이가 나기 때문에, 공부할 때는 보편적인 핵심 구문들 위주로 공부하고 세세한 조작법은 실무를 하면서 익히는 것이 좋다고 생각합니다.)
또한, SQL 다음으로 강하게 권해드리는 언어는 Python인데요, 사실 예전에는 데이터 분석가가 R 또는 Python 중 선택해서 배워도 된다는 분위기였습니다. 하지만 요즈음은 빅데이터 처리 속도에 있어 강점이 있는 Python 쪽으로 대세가 넘어왔기 때문에 새롭게 공부를 시작하신다면 무조건 Python을 배우시길 바랍니다. 다만 Python은 통계 언어가 아닌 전반적인 프로그래밍을 위한 언어이기 때문에, Python을 처음 공부하려고 뛰어들 때에 어느 정도까지 공부를 해야 할지 헷갈리실 수 있습니다. Python으로 웹 개발을 하려고 하는 사람과 데이터 분석을 하려고 하는 사람은 숙지해야 하는 라이브러리가 완전히 다르기 때문이죠. 그렇기 때문에 저는 Python 언어의 기초를 배우신 후에는 바로 Pandas부터 익히시는 것을 추천드립니다. 데이터 처리를 위한 라이브러리인 Pandas와 데이터 시각화 라이브러리인 Seaborn을 최우선으로 공부하시면 좋을 것 같고, 그 외에 웹스크레이핑이나 텍스트 처리 등 다른 기법은 나중 순서로 미뤄두셔도 괜찮습니다. (*Django와 같은 개발용 프레임워크는 공부하지 않으셔도 무방합니다.)
데이터 분석가에게 통계학은 SQL과 같은 '기본기'라고 이야기되곤 합니다. 하지만 통계학은 굉장히 넓고도 깊은 학문 분야이기 때문에, 역시 어디까지 공부해야 데이터 분석 역량을 갖췄다고 할 수 있는 것일지 헷갈리실 것 같습니다. (저 역시 통계학은 공부해도 공부해도 끝도 없다고 느끼고 있답니다...ㅠㅠ) 그래서 이 글에서는 제가 생각하는 실무 필수 지식에 대해서 간단히 이야기해보려 합니다.
제가 느끼기에 실무에서 필요로 하는 통계 지식은 (1) 'A가 나은가 B가 나은가'하는 상황에서 하나를 선택해야 하는 상황, 그리고 (2) 'X에 영향을 주는 것은 무엇일까'하고 인과관계를 유추해야 하는 상황을 헤쳐나갈 수 있는 정도의 지식입니다. 먼저, (1) 'A가 나은가 B가 나은가'하는 상황에서 사용될 수 있는 것은 빈도주의적 접근 방법과 베이지안 접근 방법이 있는 것 같은데요, 요즈음은 베이지안 방식에 대한 관심이 떠오르고 있기는 하지만 시간이 제한적이라면 빈도주의적 가설 검정 방식만 공부해도 무방하다고 생각됩니다. 여전히 p-value를 보며 차이가 있는지 없는지를 결정하는 식으로 실무가 많이 이루어지고 있기 때문입니다. 그리고 통계적 가설 검정에도 T-test, Z-test, 카이제곱 검정, 분산 분석 등 다양한 분석 방법론이 있는데요, 그중 실무 관점에서 중요한 것은 T-test와 회귀분석 정도라고 생각합니다. 저의 경우 A/B 테스트를 통해 두 개의 집단을 비교할 때에는 T-test를 많이 사용하는 편이고, 세 개 이상의 집단을 비교할 때는 회귀분석을 주로 사용합니다. (*왜 Z-test 말고 T-test를 쓰지? 그리고 어떻게 집단 비교가 회귀분석으로 된다는 거지? 라는 궁금증이 생기신다면 <빅데이터를 지배하는 통계의 힘>이라는 책을 읽어보시길 추천드립니다. 단순화된 방식으로 비즈니스 인사이트를 찾는 방법에 대한 설명이 잘 되어 있어서 저에게 큰 영향을 준 책입니다.)
그리고 (2) 'X에 영향을 주는 것은 무엇일까' 하는 인과관계 추정에 있어서도 역시 회귀 분석만 잘 알면 된다고 생각합니다. 인과 관계를 찾기 위해서는 (a) 일단 영향을 줄 것으로 추정되는 요인들은 X값에, 결과값을 y값으로 넣고 다중회귀(y가 양적 변수일 때) 또는 로지스틱 회귀(y가 이항 변수일 때)를 하고, (b) X에 넣은 설명 변수들 중 진짜 영향이 있어 보이는 것을 선별하는 절차를 거친 후, (c) 그 요소와 y값 사이의 실제 인과관계를 찾기 위해 A/B 테스트를 하는 것이 이론적으로 가장 좋은 방식이라고 생각하기 때문입니다. (물론 실무에서는 제 마음대로 A/B 테스트를 할 수 있는 건 아니기 때문에 완벽하게 인과관계를 입증하기는 어려울 때가 많지만요ㅠ)
아무튼, 결론적으로는 [통계학에서 가장 중요한 것은 회귀분석이고, 그다음은 t-test이다]라고 제 생각을 정리해 볼 수 있겠습니다. 그리고 요즈음은 컴퓨터를 통해 간단히 분석을 돌릴 수 있기 때문에 계산 수식까지 외우고 다닐 필요는 없고, 그보다는 분석된 결과를 어떻게 해석하는지에 초점을 맞춰 공부하는 것이 중요하다고 말씀드리고 싶습니다.
(*물론, 굳이 이야기하지는 않았지만 중심극한정리니 p-value니 신뢰구간이니 1종, 2종 오류니 하는 기초 통계 개념들은 무조건 공부가 필요합니다.)
통계학에서도 회귀 분석을 배우고, 머신러닝 모델링에서도 회귀 모델을 배우듯 사실 '머신러닝'이라는 개념은 통계적 분석 방법론과 떼려야 뗄 수 없는 관계입니다. 제 생각에 이 둘 사이의 주요한 차이는 '가설 검정을 위한 분석인가' 혹은 '미래의 수치를 예측하기 위한 예측 모델링인가'인 것 같은데요, 적어도 데이터 분석가에게 있어서는 복잡하고 다양한 X값을 넣어 가장 y를 잘 예측하는 모델을 만드는 '예측 모델링'은 크게 중요하지 않다고 생각합니다. 비즈니스에 영향을 주는 요인을 찾아내고 이를 검증하기 위한 수단으로 회귀 분석을 공부하는 것은 중요하지만, 최적의 y를 찾기 위한 회귀 모델을 구현하는 연습은 크게 필요하지 않은 것 같아요. 그렇기 때문에 딥러닝이나 강화학습과 같은, 더 나은 예측 모델링을 위한 방법론들 역시 시간이 없다면 굳이 우선순위로 공부할 필요는 없다고 말씀드리고 싶습니다. 사실 저 역시 데이터 분석가 지망생이었을 때는 화려해 보이는 다양한 머신러닝 기법을 공부하는 게 중요하다고 생각했었는데요, 막상 실무에서는 크게 쓸 일이 없었습니다.
(*반대로 데이터 사이언티스트 직무의 경우 머신러닝이 필수적인 지식이기 때문에, '데이터 분석가'라는 이름 아래에 분석과 데이터 사이언스가 합쳐져 있는 회사라면 예측 모델링도 할 줄 알아야 합니다.)
사실 이 4번 주제가 이 글의 핵심이고, 제가 가장 하고 싶었던 이야기이기도 합니다. 과거의 저는 데이터 분석가가 되기 위해서는 무조건 SQL, Python, 통계학, 예측 모델링(머신러닝) 공부를 많이 해야 한다고만 생각했었습니다. 그러니까, 절대적인 '지식'의 양이 좋은 데이터 분석가를 결정하고, 회사에서도 지식이 많은 분석가를 선호할 거라는 생각을 했던 것이죠. 하지만 지금의 제가 느끼기에 분석가에게 가장 중요하고 또 기르기 힘든 자질은 '무엇을, 어떻게 분석할지 고민할 줄 아는 사고력'인 것 같습니다. 실제로 제 주변에도 화려한 모델링은 할 줄 모르지만 SQL과 엑셀만 가지고도 뚝딱 의미 있는 인사이트를 뽑아낼 줄 아는 분석가들이 꽤 계십니다. 그리고 그분들이 높게 평가받는 것을 보면, 아마 대부분의 회사에서는 다룰 수 있는 스킬셋이 풍부하지만 이를 잘 활용할 줄 모르는 분석가보다 다루는 툴은 한정적이어도 의미 있는 방향성을 제시할 줄 아는 분석가를 선호하지 않을까요?
실제로, 현업을 하다 보면 정말 어떤 식으로 접근해야 좋을지 애매한 문제들이 많습니다. 간단한 예시로, '이탈률'이라는 하나의 지표만 확인하려 해도, '이탈'을 무엇으로 정의해야 하는지 결정하기는 쉽지 않죠. 일정 기간 접속하지 않으면 이탈일까? 일정 기간 구매를 하지 않으면 이탈일까? '일정 기간'은 어느 정도일까? 이런 질문들이 끝도 없이 쏟아져 나옵니다. 그렇기 때문에 정말 회사에서 선호하는 데이터 분석 인재가 되려면 지식을 늘리기 위한 공부 시간뿐 아니라 데이터를 어떻게 볼 것인지 고민하는 시간도 충분히 갖는 것이 중요하다고 말씀드리고 싶습니다. (*다른 직군으로 회사에서 근무 중인 분이시라면 회사에서 보유한 데이터를 다양하게 바라보는 연습을 해보시면 좋을 것 같고, 취업을 준비하는 학생이시라면 Kaggle 등에 공개되어 있는 데이터를 가지고 고민해 보는 연습을 해보시면 좋을 것 같아요!)
이상으로, 데이터 분석가에게 필요한 역량에 대해 이야기해 보았습니다. '어떤 공부를 얼마나 해야 할까?'는 제가 데이터 분석가 지망생이었던 시절에 고민을 많이 했던 문제이다 보니, 과거의 저와 비슷한 상황이신 분들이 계시다면 조금이나마 도움이 되고자 제 생각을 공유해 보았습니다. 다만 앞서 말씀드렸듯 회사마다 상황이 다를 수 있고, 저도 아직 주니어 분석가일 뿐이기 때문에 더 경험이 풍부하신 분들의 의견은 또 다를 수 있다는 점은 감안해 주시면 좋을 것 같습니다. 그럼 이만 마치고, 다음에는 더 좋은 글로 찾아뵙겠습니다:)