"데이터 과학(data science)은 현실의 문제를 해결하고 이해하는 데 데이터를 사용하는 과정이다."
데이터 과학이라는 게 새로운 내용의 개념은 아니다. 과거에도 판매 수치나 동향은 분석해왔다. 다만, 지난 10년간 과거보다 기하급수적으로 더 많은 데이터에 접근할 수 있게 되었고, 컴퓨터는 모든 데이터의 생성을 돕는 동시에 많은 정보를 처리하는 유일한 방법이 되었다.
데이터 과학자는 컴퓨터 코드로 데이터를 변환하거나 집계 및 통계 분석, 머신러닝 모델을 훈련하는 등의 일을 한다. 코드 결과는 소비와 관련된 보고서 또는 대시보드, 연속적으로 실행하도록 배치된 머신러닝 모델일 수도 있다.
새로운 매장을 오픈하는 소매업이 좋은 위치를 선정하기 위해 데이터 과학자에게 데이터 분석을 의뢰한다고 가정해보자. 의뢰를 받은 데이터 과학자는 과거의 온라인 주문 배송지 데이터를 참고하여 상권을 분석해 고객 수요가 있을 만한 곳을 찾는다.
그리고 고객 위치 데이터 및 해당 지역의 인구 조사를 통한 인구 통계 및 소득 정보를 결합한다. 이런 데이터셋으로 찾아낸 최적의 장소를 추천하게 된다.
또 다른 예로 어느 기업에서 고객이 쇼핑할 때 상품을 추천하고 구매로 이어지게 하여 온라인 주문량을 늘리고 싶어 할 수 있다.
이때 데이터 과학자는 과거의 웹 주문 데이터를 불러와 현재 장바구니 항목을 토대로 소비자 니즈에 맞는 상품을 예측하는 머신러닝 모델을 만든다. 이후 회사의 기술 팀과 협업해 고객이 쇼핑을 할 때마다 상품을 추천하는 시스템을 개발할 것이다.
"많은 사람이 데이터 과학을 연구하기 시작할 때 앞으로 배우게 될 분량에 압도당한다."
코딩(무슨 언어를 배워야 하는가), 통계(어떤 방법이 가장 중요하고 어떤 방법이 그나마 학문적인가), 머신러닝(머신러닝이 통계나 AI와 어떻게 다른가), 일하고 싶은 분야의 기본 지식 등... 잠시 숨을 한 번 고르고 이어가자. (후읍, 파)
다른 데이터 과학자부터 최고 경영자에 이르기까지 다양한 청중에게 효과적으로 결과를 전달하기 위한 비즈니스 기술도 필요하다. 박사 학위 취득과 수년간의 데이터 과학 경력, 통계 및 프로그래밍 전문 지식을 요구하는 채용 공고를 보면 은근슬쩍 불안감이 찾아올 수도 있다.
"어떻게 모든 기술을 배울 수 있을까? 어느 것부터 시작해야 할까? 기본은 무엇일까?"
데이터 과학의 다양한 영역을 살펴보다 보면 드루 콘웨이(Drew Conway)의 데이터 과학 벤다이어그램을 접하게된다. 처음 발표할 당시 드루 콘웨이는 ‘데이터 과학은 수학과 통계 영역에서 전문성, 해킹 기술(코딩)의 교차점에 속한다’라고 말했다.
[데이터 과학을 만든 기술 결합]
위 그림은 데이터 과학자를 정의할 때 종종 사용된다. 드루 콘웨이가 제안한 데이터 과학의 구성 요소를 약간 다르게 변형한 것이다. 세 가지 모두 기본 기술이고 각 기술을 어느 정도 알고 있어야 한다. 하지만 이 모든 기술을 알고 있는 전문가가 될 필요는 없다.
다양한 종류의 데이터 과학 전문 분야를 정리했지만, 그것이 항상 직업과 연결되지는 않는다. 설령 연결된다 하더라도 많은 기업에서 해당 분야의 직업을 다르게 부른다. 그렇다면 각 구성 요소는 무엇을 의미하는지부터 살펴봐야 겠다.
기본적인 수준에서 수학과 통계학 지식은 데이터 활용 능력과 같다. 전자 상거래 업체에서 일하고 있으며 비즈니스 파트너가 평균 주문 금액이 가장 높은 국가에 관심을 두고 있다고 가정해보자. 데이터를 활용할 수 있다면 이 질문에 쉽게 답할 수 있다. 단순히 정보를 제시하고 결론을 도출하기에 앞서, 좀 더 깊이 들어가 예를 들어보자.
A 국가로부터 100달러에 주문 한 건을 받고 B 국가로부터 평균 75달러에 1,000건의 주문을 받았다면? A 국가가 더 높은 평균 주문 가치를 지니는 게 맞다. 그렇다면 주문 수를 늘리고자 A 국가의 광고에 반드시 투자해야 할까? 그렇지 않다.
A 국가의 주문이 500개라면 통계적 검증으로 평균 주문 금액이 얼마나 다른지 확인할 수 있다. 즉 A, B 국가 간 차이가 정말로 없다면 차이점을 볼 수 없다. 그래서 어떤 접근 방법이 합리적이고 어떤 것을 고려해야 하며 어느 결과가 중요하지 않은지 여러 검증 단계가 필요하다.
여기서 말하는 프로그래밍은 회사 데이터베이스에서 데이터를 가져와서 깔끔하고 효율적이며 유지 보수가 훌륭한 코드로 작성하는 기술을 말한다.
데이터 과학자는 미리 정의된 결과를 생성하기보다 확장 가능한 분석이 이뤄지는 코드를 작성해야 한다. 이를 제외하고는 여러 면에서 소프트웨어 개발자가 알아야 할 부분과 프로그래밍을 하는 부분은 유사하다.
기업마다 데이터 구성이 다르며 데이터 과학자에게 정해진 기술은 없다. 다만 데이터베이스에서 데이터를 가져오는 방법, 데이터 정리, 조작, 요약, 시각화, 공유 방법을 알아야 한다.
대부분 데이터 과학 업무는 R이나 파이썬을 주요 언어로 사용한다. R은 통계학을 기반한 프로그래밍 언어이다. 일반적으로 통계 분석 및 모델링, 시각화, 결과 보고서 생성 등에 적합하다.
파이썬은 범용 소프트웨어 개발 언어로 시작된 프로그래밍 언어로 데이터 과학 분야에서 큰 인기를 끌고 있다. 파이썬은 대용량 데이터셋 작업, 머신러닝 및 실시간 알고리즘(아마존의 추천 엔진)에서 더 훌륭하다고 알려져 있다.
하지만 두 언어는 많은 기여자의 노력으로 비슷한 수준이 됐다. 데이터 과학자는 R을 사용해 일주일에 수백만 번 실행되는 머신러닝 모델을 만드는 동시에 파이썬에서 깔끔하고 보기 좋은 통계 분석을 한다. R과 파이썬은 다양한 이유로 데이터 과학 분야에서 유명한 언어다.
● 둘 다 오픈 소스 언어이고 무료다. 많은 사람과 기업, 조직, 기여자가 코드를 제공한다. 데이터 수집, 조작, 시각화, 통계 분석, 머신러닝을 할 수 있는 다양한 패키지 및 라이브러리(코드 집합)도 많다.
● 사용자가 워낙 많아 코드 실행 중 문제가 발생하면 도움을 받기 쉽다. 아직 많은 기업에서 SAS, SPSS, 스타타(stata), 매트랩(matlab) 등과 같은 상용 프로그램을 사용하기도 하지만 R과 파이썬으로 옮기는 추세이다.
대부분 데이터 과학 분석이 R이나 파이썬으로 이뤄지지만 데이터를 가져올 때는 데이터베이스 작업을 위해 SQL 언어를 사용한다. SQL은 데이터베이스에서 데이터를 조작 및 추출 시 사용하는 프로그래밍 언어다.
일일 주문량이 어떻게 변화할지 예측하기 위해 기업 내 고객 주문 레코드 수억 개를 분석한다고 가정해보자. 먼저 일자별 주문량을 가져오려면 SQL 쿼리를 작성해야 한다. 그다음 일일 주문량을 가져와서 R이나 파이썬으로 통계 예측을 실행한다. 이런 이유로 SQL은 데이터 과학 커뮤니티에서 인기가 높다.
마지막으로 중요한 부분은 이전 코드가 어떻게 변경됐는지 추적하는 버전 관리다. 버전 관리를 통해 파일을 저장하고 이전 시간으로 되돌리며 누가 어떤 파일을 어떻게, 언제 변경했는지 확인할 수 있다. 데이터 과학과 소프트웨어 공학에서 매우 중요하다. 누군가 실수로 잘못된 코드를 저장하면 되돌리거나 어디가 바뀌었는지 확인할 수 있어야 한다.
버전 관리에서 많이 사용되는 시스템인 깃(git)은 웹 기반으로 호스팅한 깃허브(github)와 결합하여 종종 사용된다. 깃은 커밋(commit)을 통해 변경 사항이 저장되고 다시 돌아가거나 각 커밋에 어떤 변경이 있었는지 프로젝트의 전 과정을 보고 되돌릴 수 있다.
두 명이 같은 파일로 각각 작업할 때 한 명이 실수로 삭제하거나 덮어 쓰는 문제를 방지할 수 있다. 엔지니어링 팀이 있는 많은 기업에서 코드를 공유하거나 제품화한다면 깃을 사용해야 한다.
앞서 파이썬, R, SQL 등을 이야기했다고 너무 머리아프게 고민할 필요는 없다.
그래픽 인터페이스인 엑셀, 태블로(tableau), 기타 비즈니스 인텔리전스 도구만 사용해도 데이터 업무가 가능하다. 코드를 작성하지 않지만 R이나 파이썬 같은 언어와 거의 동일한 기능이 있다. 그래서 많은 데이터 과학자가 사용하고 있다.
그렇다면 그것들이 완벽한 데이터 과학 도구킷(toolkit)이 될 수 있을까? 또 그렇지만은 않다. 프로그래밍이 필요 없는 데이터 과학 팀이 있는 회사는 거의 없다. 프로그래밍에는 엑셀, 태블로 등의 도구들에 없는 장점이 있다.
첫 번째는 재생산성이다. 마우스 커서로 클릭만 하는 소프트웨어를 사용하지 않고 사용자가 직접 코드를 작성하면 매일 또는 6개월 후 데이터가 변경될 때마다 코드를 다시 실행할 수 있다. 버전 제어와도 연결된다. 즉 코드가 변경될 때마다 파일 이름을 바꾸지 않고 전체 기록을 볼 수 있는 하나의 파일로 저장할 수 있다.
두 번째는 유연성이다. 태블로는 그래프 기능이 없어서 전혀 그릴 수 없다. 프로그래밍으로는 도구 개발자가 생각지도 못한 방법을 만들어 자신만의 코드로 작성할 수 있다.
마지막으로 R과 파이썬 같은 오픈 소스 언어는 커뮤니티 기여가 크다. 개발자 수천 명이 패키지나 코드를 개발해 깃허브에 공개한다. 다른 사람의 코드로 본인의 문제를 스스로 해결할 수 있어서 기능을 추가해야 할 때 다른 업체에 의지하지 않아도 된다.
그래서 결론을 정리하자면, 프로그래밍을 못해도 데이터 과학자가 될 수는 있다. 다만, 보다 능숙한 데이터 과학자가 되려면, 그리고 업무를 보다 효율적으로 처리하려면 프로그래밍을 할 줄 아는 것이 아주 도움이 된다.
이쯤되면 한 가지 궁금한게 생긴다. 데이터 과학에 대한 향후 전망은 어떨까?
기술의 발전에 따라 데이터 과학이 10년이나 20년 후에도 지속될 수 있을 것인가?에 대한 질문에 두 가지를 이유로 우려하는 이들이 있다. 첫 번째로 데이터 과학이 자동화될 것이고, 두 번째는 데이터 과학의 공급이 과잉되어 고용 시장의 거품이 터진다는 점에서다.
데이터 과학의 일부분이 자동화되는 것은 맞다. 자동화된 머신러닝(AutoML)은 여러 모델과 성능을 비교하는 것이 가능해질 뿐만 아니라 데이터 준비(변수 스케일링)와 같은 auto ml 부분에 유용하게 사용할 수 있다. 이는 데이터 과학 과정의 극히 일부분이다.
자체 데이터를 생성해야 할 때 완전히 적합한 데이터를 정리하는 것은 쉽지 않다. 일반적으로 데이터 생성은 사용자 경험 연구원 및 엔지니어와 협업하여 이뤄지며 사용자의 행동을 조사하거나 기록하여 분석에 활용한다.
고용 시장의 거품이 터질 가능성을 1980년대 소프트웨어 엔지니어와 비교해보자. 컴퓨터의 가격이 하락하고 성능이 향상되면서 대중성이 가속화됐다. 컴퓨터가 모든 것을 대체하고 프로그래머가 사라질 것이라고 예상했다. 하지만 정반대의 상황이 되었다.
미국에는 소프트웨어 엔지니어가 12만 명 이상 있다. ‘웹마스터’라는 직업은 사라졌지만 훨씬 더 많은 사람이 웹사이트 개발 및 유지 보수, 성능 향상 등과 관련된 일을 한다.
앞으로 데이터 과학이 더욱 전문화되면 ‘데이터 과학자’라는 일반적인 이름은 사라질 수 있다. 하지만 많은 기업이 여전히 데이터 과학을 활용하는 초기 단계에 있으며 풀어야 할 과제가 아직 많이 남아 있다. 따라서 더 전문화되고 세분화된 직업이 생겨날 것이다.
이 글은 <데이터 과학자 되는 법> 도서 내용 일부를 발췌 편집하여 작성되었습니다. 취업 준비부터 면접, 이직, 경력관리까지 데이터 과학자로 성장하기 위한 보다 자세한 정보는 하기 책에서 만나볼 수 있습니다.
최신 콘텐츠