데이터 분석가의 필요충분조건은?
취업준비라 하면 보통 자소서를 쓰고 인적성 준비를 하고 또 면접을 준비하는 과정을 떠올리게 된다. 하지만 데이터 분야를 준비하며 준비해야했던 것들은 이전과는 조금 다르게 다가왔던 것 같다. 단순히 자소서를 쓰는 것이 아니라 포트폴리오를 어떻게 구성할지 고민해야 했고 인적성을 준비하는게 아니라 분석시에 필요한 언어들을 공부해야하는 것을 점차 깨닫게 되었다.
데이터 공부, 어디서 부터 시작해야할까?
비전공자가 어렵사리 데이터 분석가를 하겠다고 마음먹었을 때 나타나는 산은 크게 3가지가 있다. 도메인지식, 컴퓨터 공학 관련 지식 그리고 통계(덜덜). 키워드 하나하나가 주는 무게가 남달랐고 나는 저중 무엇 하나 상관없는 상경계열 학생이었기 때문에 "과연 이걸 다 할 수 있을까?"하고 지레 겁먹게 됐다.
하지만, 실제로 데이터 분석 일을 하는 사람들은 모두가 저 3 가지 키워드에 능통한걸까? 물론 그런 사람도 있겠지만, 현업의 데이터 사이언스는 팀워크로 이루어지는 경우가 많았다. 데이터 사이언스라는 개념을 2010년대초 즈음 처음 들고 나와주셨던 DJ Patil 선생님께서도 "Data Science is a team sport"라고 트위터에 천명하시어 혼자 다 할 수 없는 것이라는 용기를 주셨다. 또 국내에서 데이터를 잘 쓰는 기업 중 하나인 SKT의 데이터 분석 팀도 Analyst 직군과 Engineering직군으로 나뉘고 각각 세부분야가 또 한번 더 나뉜다고 한다. 결국 각자의 영역 중 하나에서 역량을 갖추고 다른 영역을 이해하고 받아들일 수 있는 자세와 이해를 갖추는 것이 이 분야에서 시작하기 위한 준비라고 할 수 있을 것 같다.
어떤 역량이 중요할까?
다시 생각해보면, 데이터 분석가라는 직업은 왜 최근에서야 이렇게 뜬 것일까? 이전에는 SPSS 등이 있었고, 그 전에도 엑셀로 데이터를 나누고 의미를 해석하는 일은 계속해서 있어왔음에도 굳이 데이터 사이언티스트라는 말은 왜 생긴 것일까?
한창 방향성을 못잡고 있을 때 고마운 조언을 주셨던 분이 있다. 그 분께 직접 받은 조언은, 두 가지 기능을 두 사람이 나누어 하는 것 대비의 페어(프로그래머 + SPSS분석가)보다 한 사람이 두가지 기능을 함께 할 수 있을 때 (프로그래밍 할 줄 아는 분석가) 작업의 이터레이션이 극단적으로 빨리지기 때문이라고. 그리고 그 빠른 이터레이션으로 빠르게, 또는 넓게 결과를 탐색해 나갈 필요성이 이 직업의 존재의의라고 말씀해주셨다. 그냥 통계와 인문지식을 잘 갖추면 되지 않을까요? 라는 질문에는 단언컨데 코드를 쓸 줄 알아야 한다고 덧붙이시면서. 그 빠른 이터레이션으로 빠르게, 또는 넓게 결과를 탐색해 나갈 필요성이 이 직업이 최근 다시 주목받는 이유 중 하나라는 것을 알 수 있었다.
그래서 다른 능력들도 물론 다 중요하겠지만, 데이터 분석가는 직접 코드를 작성할 줄 알아야만 한다. 데이터 사이언티스트는 사실 쉽게말하면 'Statistician who can write code' 즉 직접 코드를 짤 줄 아는 통계학자라고 부를 수 있다고 한다. 그렇기 때문에 반드시 R 또는 Python으로 코딩을 할 줄 알아야 하고 여기에 SQL까지 능숙하게 다루어 분석을 위한 밑재료를 스스로 준비할 수 있다면 금상 첨화일 것이다.
매년 전 세계적으로 쌓이는 데이터의 양은 2배씩 늘어나고 있고 2020년에는 40ZB에 달할 것으로 예상된다고 한다. 내 머리로는 쉽게 가늠이 안가는 이 많은 숫자들에게 접근하려면 결국 컴퓨터에게 일을 시켜야할 것(=프로그래밍 언어를 다루는 것)이다. 분석가에게 코드를 작성할 줄 아는 역량이 필수가 된 이유를 이를 통해 미루어 짐작해볼 수 있지 않을까.
어떤 언어를 선택할까?
* SQL, R, Python.. 얘네 도대체 어디에 쓰이는 애들이죠? 먹는건가요?
데이터 분석을 하기 위해서는 크게 <추출 - 정제 - 분석/모델링>의 과정을 거칩니다. 또 각 언어는 각 단계마다 필요한 일을 하기 위해 특화된 언어들이구요. SQL은 보통 데이터를 데이터베이스(저장소)에서 가져올 때 필요한 '추출'을 도와주는 언어이고, R과 Python은 정제와 분석/모델링 작업시에 사용되는 언어입니다. (추출에 가까울수록 뒷단이라고 부르고 분석/모델링에 가까울수록 앞단이라고 불러요.)
다만, R은 통계학자들이 만든 언어이기 때문에 통계작업과 관련하여 필요한 도구들이 많이 들어있는 보따리 같은 느낌이고, Python은 콤퓨타 프로그램(서버단)을 만들기 위해 태어난 언어이기 때문에 좀 더 개발언어스러운 느낌이 있습니다. 사람들 마다 호불호가 좀 갈리는 편이지만 둘 다 분석을 위해서는 매우 좋은 언어에요. 추가로, 요즘 딥-러닝 알-파고 딥-러닝 하는 얘기를 들어보셨을 수 있는데 이건 Python으로 많이 작업합니다.
언어를 배우기로 결정했을 때, 내 첫 언어로 무엇을 배워야 할지, 또 데이터를 다루는 언어인 Python과 R 중 어떤 것을 먼저 배워야할지 고민하는 것은 매우 어려운 일이었다. 하지만 이는 매우 자연스러운 수순이었던 것으로 밝혀졌고.. 나만 그런 것도 아니었던 것 같다.
둘 다 매우 훌륭한 언어이고 각각의 장점이 있다고 생각하기 때문에 어떤 언어를 먼저 접하더라도 무차별하다고 믿고 지금은 인터넷에 너무 많은 가이드가 있기 때문에 예전보다 선택이 쉬워진 환경임에는 틀림이 없다. 개인적인 의견을 살짝 보태보면 분석이나 시각화쪽으로 포커싱을 하고 싶다면 R을 먼저 접해보는 것이 권할만한 것 같고, 데이터의 분야 중 한창 핫했던 머신러닝이나 딥러닝쪽에 관심이 있다면 파이썬을 권하는 것이 중론인 것 같다. (물론.. 이건 여기저기의 구글링 인터넷 찌라시들을 통한 의견)
나는 분석에 관심이 있었기 때문에 R을 메인으로 선택했고, 실제로 통계관련 작업을 해야할 때는 놀랄만큼 없는게 없어서 놀랄 때가 종종 있다. 지금 하고있는 일에서 모수추정과 시뮬레이션 관련 작업을 해야할 일이 있었는데 관련 패키지는 당연한듯이 있었고 데이터 정제와 파라미터 수정만으로 관련 작업을 손쉽게 할 수 있었기 때문이다. 사실, 방금 말한 것들이 R 좀 한다는 사람들이 보면 저게 놀라워? 싶겠지만 이게 있을까.. 하면서 조마조마하며 패키지를 찾는 초보 입장에서는 찾는게 이렇게 턱턱 나와주는 것과 쉬운 사용법은 매우 환영할만한 일이다. 거기에, 새삼 무료인 것과 이 라이브러리들을 얼굴도 모르는 누군가가 만들어 주었음에 감사하는 마음이 들 때가 지금도 있다.
작년에 데이터를 배우기 위해 학원을 다니던 시절이 있었다. 같이 공부하던 친구들 중 딥러닝을 공부하는 친구들도 심심치 않게 찾아볼 수 있었는데 이 친구들은 Python에 올인하다시피 하며 알고리즘 문제만 풀면서 지냈던 기억이 있다. 딥러닝이라는 분야에 필요한 도구들이 그쪽에 많이 있기도 했고, 그 쪽은 워낙 개발쪽에 가까운 일이기 때문이라나. 하지만, Numpy/Pandas라는 데이터 정제/분석 라이브러리가 있어서 데이터 분석에도 매우 강점을 가지는 언어다.
혹자에겐 그것도 언어냐? 라는 이야기를 듣기도 하는 SQL도 데이터를 다루고자 할 때 정말 중요한 언어다. 엄연히 Structured Query Language니깐. 언어 맞다. 데이터(쌀)를 데이터베이스(곳간)에서 가져오는 일을 컴퓨터에게 시킬 때 필요한 언어인데 이것만으로도 왠만한 분석일을 할 수 있을만큼 강력한 언어다. 요즘은 굳이 분석가가 아니더라도 IT관련 회사 기획자나 금융쪽 CRM부서 채용시에 우대조건에 간간히 등장하기도 한다고 한다. 생각해보면 데이터에 제일 먼저 관심 가지게된 것이 SQL을 접하면서 였던 것 같다. 회사 매출이 궁금하고, 제일 잘 팔리는 상품이 궁금해서 개발자 형들에게 물어보던 것을 내가 직접 알고 싶어서 배웠던 언어였고 실제로 그 당시 우리 고객들을 이해하는 데에 정말 큰 도움이 되었던 것 같다.
분석가에게 포트폴리오는 중요하다.
취업준비와 공부를 병행하면서 좌절했던 것들이 한두개가 아니었지만.. 가장 고민되었던 부분은 분석관련 채용공고의 대부분은 석사이상의 학력을 (혹은 그에 상응하는 경력) 필요로 했다는 점이다. 그렇게 하고 싶은 일이라면 그럼 석사를 하면 되지 않느냐?하는 생각이 들었던 적도 있지만, 좀 더 일을 빨리하고 싶은 욕심이 들었던 것도 사실이다. 그래서 다른 방법은 없을까?를 많이 고민해보았던 것 같다.
그렇다면, 왜 분석가 채용에는 석사이상이 많은 걸까? 분석가에게 처음에 가르쳐야 할 것들은 많은데 (코딩, 분석지식 등등) 회사는 바로 일할 수 있는 사람이 필요하기 때문이다. 일은 쏟아지는데 그 많은 것들을 신입이에게 가르쳐줄 수 없으니 기본적인 하드스킬들은 다 마치고 들어와다오의 느낌이라고 보면 될 것 같다. 실제로, 채용담당자들에게 가장 걱정되는 포인트 중 하나는 이 면접만으로 이 사람을 제대로 평가한 것이 맞을까? 우리 회사에 들어와서 이 사람이 우리가 원하는 퍼포먼스를 내줄 수 있을까? 따위의 것들인데 그런 측면에서, 경력이나 석사이상의 학력은 어떤 지표가 되어주기 때문에 더 선호하게 되는 것 같다.
그러면 대학원 경험도 없고 경력도 일천하다면 어떻게 해야할까? 이 경우에는 포트폴리오가 매우 큰 무기가 될 수 있다고 생각한다. 포트폴리오란 어떤 자료를 스스로 분석해본 케이스를 어디엔가 지속적으로 올리는 것인데 http://www.r-bloggers.com 여기에 있는 것 같은, 자기만의 분석이나 http://openlook.org/wp/does-lotteria-locate-different/ 이런 글(버거지수로 도시의 발전정도를 측정하기)들 또는 http://freesearch.pe.kr/archives/category/데이터분석 이런 글들을 말한다고, 적어도 나는 그렇게 배웠다.
실제로 업계에서 선호하는 인력의 스테레오 타입은 컴과나, 산업공학과 학부를 나오고 컴과나 산업공학과 데이터마이닝 유관 연구실에서 석사를 한 케이스 인데, 포트폴리오가 탄탄하게 갖추어진 지원자의 경우 타과생이라고 하더라도 채용기준이 우호적이라고 한다. 그러고보면 누가 시키지도 않았는데, 스스로 분석을 하고 이런 글들을 공유하는 것은 어찌보면 페이퍼(논문)을 쓰고 학계에 퍼블리시 하는 일과 닮아 있는 것도 같다. 그래서 우호적인 것은 아닐까?
방법을 알아도 하나 실천하지 않는 것 만큼 의미 없는 것도 없다. 사실 정리를 주욱 하다보니 나에게 드는 생각이다.. 최근 일을 시작해서 바쁘다는 핑계로 하려고 맘 먹었던 것들 외면하지 않았나 싶은데 다음 글을 쓸 때는 올해 초에 마음 먹었던 것들 차근차근 하고 있는 모습이기를 바래본다.
끝
* 참고자료
1. DJ Patil's Twitter
2. [어떻게 하면 데이터 사이언티스트가 될 수 있나요?] 슬라이드쉐어 하용호님 자료
3. [2020년까지 생성되는 데이터량은 40ZB…“전세계 해변 모래알수 57배”] 디지털 데일리
인프런에서 SQL, Pandas강의를 진행하고 있습니다. 글을 재미있게 읽으셨다면 아래 링크에도 한번 오셔서 SQL 강의를 확인해보세요. 저에게 큰 힘이 됩니다. 강의(SQL) 구경하러가기 , 강의(Pandas) 구경하러가기
문제풀이반(상):