Data Scientist가 되고 싶은 분들께, 어떻게 방향을 잡아야 할까요?
카테고리: Blog
태그: Blog Data Science
안녕하세요?
Data science에 관심을 갖는 분들이 정말 많습니다. 지금 한참 사회활동 중인 분들을 포함해서 어린 학생들까지.. 이제 저희가 살아갈 시대는 감히 “n차 전직” 시대라고 저는 생각합니다.
MMORPG 게임들을 해보신 분들은 2차 전직이라는 개념에 익숙하실텐데요, 전공-부전공, 2중 전공과는 다른 누구나 첫번째 직업, 두번째 직업, 여러 개의 직업들을 거치면서 한 두 가지 역할에 고정되지 않은 발전적 성장을 해나가게 될 것입니다. 현재 사회 구조는 5-60대 이후의 “정규 코스” 같은 것은 준비되어 있지 않은데, 우리는 100세 까지 살 것이고, 심지어 건강수명이 7-80에 이르니까요.
(feat.라그나로크 온라인 - 게임이 사회를 창조하고 유지가능하도록 하기 위해 고안해낸 많은 장치들은 떄로 훌륭한 영감을 줍니다!)
data science에 대한 설명들은 많지만 대부분 구체적인 감을 제공하는데에는 부족한 것 같아서, 오늘은 먼저 많은 분들이 제게 물었던 “선생님이 하는 그거!”에 대해서 조금 설명하면서, n차 전직시대의 하나의 매력적인 속성인 ‘data science’라는 다층적이고 다면적인 영역에 대해서 스스로 방향을 잡을 수 있도록 설명해 보고자합니다.
저는 Informaticist입니다.
저는 하나로 말하라면 Informaticist(정보학자)인데요, 다음과 같이 더 특정해 볼 수 있습니다.
1) domain expertise(전문성을 가진 영역)
▶ healthcare(from public health to clinical level)입니다.
2) Informatician = Informatian + Scientist
▶ 저는 정보학을 하는 전문가(과학자)이기도 합니다. 정보학이란 Data가 어떻게 Information(정보)가 되고, Knowledge(지식)이 되고, Wisdom(지혜)이 되는지의 소위 DIKW의 구분과 그 변환의 흐름과 과정에 관련된 탐구입니다.
3) 2)의 일부로써, Data Scientist
▶ Data로부터 과학적인 방법으로 Information(정보)를 도출하고 insight(지식/지혜의 단초)를 부여하거나 찾아내는 것이 data scientist가 하는 일입니다. 과학적으로 데이터로부터 정보를 도출하는데에는 놀랍게도(!) 두 가지 방법이 있습니다.
(1) 통계
(2) 논리학 (중요!)
여기에 현실과 괴리를 최소화하고 실제적 의미를 도출하려면
(3) 도메인 지식이,
big data를 다루면서 이 세 가지를 통합하여 data science를 하려면
(4) 프로그래밍 스킬 이 필요하게 됩니다.
4) Data engineer
- Data를 다루기 위해서 어떤 hardware/software적인 안배를 할 수 있는가, 이와 관련된 모든 조정을 data engineering이라고 할 수 있습니다.
- 주로 보편적인 job market에서는 hareware engineering이 더 많고 물리적인 기술 수준에 중점적인 영역이며 어떤 서버를 어떻게 구성하고 운용할지 하는 것들이 모두 포함됩니다. 우리 기관에서 클라우드를 쓸지, 자체 서버를 쓸지, 쓴다면 어떤 사양을 어떻게 조합할지, 서버간 운용은 분산으로 할지, 어떤 프로젝트에 하둡을 쓸지 등등.. 앞으로 제 글에서 쓰이는 data engineering은 주로 아래 기술된 software관점을 말합니다.
- software적인 관점에서의 data engineering은 데이터를 어떻게 저장하고 어떤 형태로 추출/변환하고 자유자재로 활용할 수 있도록 최적화 할 것인가 하는 부분에 관련됩니다. 현재 국내에서 의료 관련 데이터 플랫폼 구축과 관련된 내용들은 대부분 이 후자의 역할이 강조됩니다. ready-to-use data, 또는 analysis-ready data라고 근래 많이 불리는 활용 가능한 dataset으로 raw data를 변환하고 유지보수하며 sharing하는 방안에 대한 일련의 과정에 모두 관련됩니다. (물론 데이터 플랫폼에는 security와 네트워크, 전송기술 등도 빠질 수 없지만, security는 도메인이 바뀐다고 바뀌는게 아니라 hardware engineering처럼 현재 발전된 기술 수준에 따라 어느정도 선택지가 정해져 있게 되어서 여기서 기술력의 편차가 크게 발생하지는 않습니다.)
- 따라서 여기에는 data modeling(최종 쓸모있는 데이터의 요소와 형태)과 데이터 처리기술이 포함되고, 데이터 처리기술은 원본 데이터의 형태와 최종 데이터의 설계에 따라 자연어처리, 추론 알고리즘, 영상 처리, 차원 축소, 논리 변환과 같은 다양한 방법이 그때그떄 필요에 따라 사용됩니다.
(record와 document란 무엇인가 이런 것들도 너무너무 재미있는 주제이지요 ㅎㅎ)
5) applicational designer
- 소위 말하는 “개발자/설계자”할 때의 설계자이기도 합니다. 일례로, 각각 1000 병상 이상 규모의 서로 다른 두 병원에서 제가 만든 단위 시스템들이 지금도 사용되고 있습니다. 모 병원의 암센터 개원에 맞춰 릴리즈되어 현재까지 10년가량 잘 사용되고 있는 항암제 처방시스템 (2년 프로젝트)과 모 병원의 25년간 쌓인 데이터를 활용한 실시간으로 변환되는 질환특화레지스트리 구축 시리즈의 첫 케이스가 운용계와 분석계에서 각각 대표적인 사례라고 할 수 있겠습니다. 이 경험과 역량은 informaticist로서 사람과 정보시스템, 그리고 workflow간의 역동과 data의 생성-표출-활용-의사결정과 인지과정-다시 data의 입력으로의 전 과정을 고려하면서 지속가능하고 현실세계에 유의미한 차별성 있는 설계를 하는데 도움을 줍니다.
- 하지만 이 부분은 저의 특성이고, data scientist로서 이런 접점을 가지고 싶으시다면 visualization tool 또는 web publish하는 방법을 한 가지 가져가시면 좋겠다 정도로 권해드리고 싶습니다. 저는 흐름에 따라 여러 전직을 한 셈이고, 여러분은 바로 data scientist로 가실 것이니까요.
그리고 이런 속성은 하나 추가에 3~5년씩 잡으셔야 됩니다. 그것도 운이 좋으면요!
Data scientist로서의 나 설계하기
먼저 저라는 사례를 통해서 어렴풋이 “어떤 역량을 세트로 가지느냐에 따라 나의 특성이 생겨난다” 그리고 그것을 효과적이고 효율적으로 잘 구성할 수록 나는 경쟁력을 가질 것이다. 라는 생각이 드셨으면 합니다. 그러면 data scientist는 어떤 최소한의 역량 세트로 구성되는지를 좀 더 구체적으로 살펴볼게요.
우리가 생각하는, 사회에서 필요로 하는 data scientist는 1) domain expertise + 3) data scientist입니다.
그런데 교육과정들은 주로 3)에 대한 교육과정이 많습니다. 왜냐하면 1+3의 조합은 무궁무진한데 3)은 공통 요소를 가지고 있거든요. 기초통계라든가, R, python, DB와 같은 프로그래밍 친숙도라든가.. 그래서 여기서부터 시작하게 되는 경우가 많은데, 그러고 나면 공통요소라는 것은 아이러니하게도 “공통”이라(경쟁력=”차별성”의 반대..), 결국 이것도 저것도 아닌 것에 그치게 되어 현실에서는 공허합니다.
“데이터 사이언티스트 과정을 마쳤는데 데이터 사이언티스트가 아니야..?!”
게다가 우리는 결국 “과학”적인 방법으로 “통찰”까지 이끌어내야하는데 기술적인 것에 주로 초점을 맞추다보니 과학은 무엇인지에 대한 통찰이 별로 없어서 기술적인 부분에서 어렵다 어렵다 하다가, 이걸 끝내도 막상 어떤 domain에 들어가면 거기에 특화된 고급통계 중 어떤 기법이라든지 어떤 부분에 중점을 둬서 해결해야 할 문제인가에 대한 전체에 대한 관점의 부재라든지 하는 벽들과 다시 마주하게 됩니다. 컴퓨테이션 알고리즘 위주의 코딩테스트는 매우 중요하고 기본적이지만 이걸 잘 통과했다고 좋은 프로그래머인가 와는 또 결이 좀 달라지는 것 처럼 A 따로 B 따로 해서는 A+B를 못하는 기이한 현상을 겪고 “코더”취급을 면하지 못하게 됩니다.
균형 잡힌 “Data scientist로서의 나” 설계하기
그러니까 균형 잡힌 “Data scientist로서의 나”의 설계는 다음과 같이 해볼 수 있겠네요. 제가 드릴 수 있는 최고의 조언은 아래의 “순서”가 중요하다는 것입니다.
1) 관심 영역의 설정
- 다루는 현상과 데이터의 유형이 매우 판이하게 달라질 수 있습니다.
- 극단적으로 bioinformatics는 genome이라는 독특한 형태의 데이터를 처리하고 이로부터 정보와 지식을 도출하는 일련의 방법들이 엄청나게 큰 규모이다보니 하나의 학문으로 아예 자리를 잡았습니다. bioinformatian은 당연히 data scientist이죠. 하지만 이 분야는 영역 특이성이 매우 강하기 때문에 아예 생물정보학과로 가서 정해진 커리큘럼을 따라갈 수 있다는 장점(!)이 있습니다.
- healthcare, 특히 medical에서는 많은 분석들이 sampling과 survival analysis를 요구하는데 survival analysis는 다른 영역에서는 이렇게까지 빈번하게 사용되는 분석법은 아닐 수 있습니다. 즉, 교과과정에 아예 없을 수도 있습니다.
- 금융과 같은 영역이라면 데이터의 시계열성이 중요해서, 시계열 데이터에 대한 중점을 두고 교육과 훈련이 이루어져야 합니다.
- 현대 사회와 같이 고도로 발전된 문명에서 “모든걸 다 잘”하는 사람에 대한 환상은 버려야 합니다.
2) Science에 대한 이해
- 과학이란 무엇인가?를 알고 과학자로서의 기본적인 태도를 갖춰야 합니다. 이건 대학원을 나왔다, 아니다로 판별되는 것도 아니고 학위가 담보해주지도 않습니다. 어렵게 생각하지 마시고, 주눅드실 것도 없고, ‘data’에만 집중하지 말고 ‘science’라는 점도 생각해보자. 고 염두에 두어 주시면 됩니다.
(각각 별도의 글을 팔 생각입니다..) - 이 부분 건너뛰고 남이 작성한 함수에 남이 생성한 데이터 넣어서 결과값 나온다고 나는 data scientist이다.. 하는 경우가 드물지않게 있습니다. 그러면 방향성이 없기 떄문에 일련의 작업을 쌓아두면 나무야 미안해 석탄아 석유야 미안해..이면 다행이고, 고급스러운 단어로 표현하면 ‘지적 사기’에 지나지 않습니다. 값을 요약할 떄, 극단값을 처리할 때, 분석 방법을 선택할 때, 데이터와 통계적 모델링을 할 때, 모든 순간에 과학에 대한 지향이 나의 정체성이어야 합니다. 물론 각각의 문제에 대해 정답은 없지만, 이 결 자체는 반드시 눈에 보입니다. - data scientist의 영역은 추상적이고 전체를 개인이 인지할 수 없는 곳에 있기 때문에, 과학에 대한 지향과 내적 정직성과 방법론적 엄밀성은 필수입니다. 이것만이 양질의 결과를 담보합니다.
- 원래 문명사회에 산다는 것, 그리고 지적으로 기여한다는 것은 놀라운 엄청난 성취들을 활용해서 먼지만한 활용을 만들어 내는 것입니다. 그러니까 남이 작성한 함수에 남이 생성한 데이터를 넣고 결과를 얻는 건 당연한 과정입니다. 우린 모두 누군가에게 지적으로 빚지고 있죠. 요점은 이를 인정하지도 않고, 내가 만든 것도 아닌 테크닉으로 스스로를 과대평가하고, 더 나가서 내가 뭘 하는지 모르고 해서는 안된다는 것입니다.
- 이 점을 인정하면 공부도 훨씬 편합니다. 우리는 1)에서 목표의 경계를 세웠고, 이후 스킬셋 부분에서 이 분야에서는 어떤 관점으로 처리한 값들이 중요한데, 거기에 필요한 “함수”와 “데이터의 특성”은 뭔지를 집중하면 되니까요.
거의 집어준데서만 시험문제 나오는 느낌 - 실리적인 면에서도 data science는 다차원적인 작업이라, 이 부분에서 한 요소에서 삐끗하면 어차피 전체에서 앞뒤가 안맞아서 나에게도 후속작업에서 재앙이고 그 결과물을 남이 봐도 누군가는 다 알아보게 됩니다.
흐지마..흐지말라고
예를 들어, ready-to-use dataset을 400개의 요소를 가진 raw data로부터 생성하고자 한다, 하면 쓸 수 없는 데이터를 만드는 방법은 400개의 400승(제곱)만큼 존재할 것입니다. 우리가 원하는 단 하나의 최적의 데이터는 “scientific data”일 것이며 제가 수행했던 작업에 대한 차별성에 굳이 이름을 붙인다면 scientific data engineering라고 할 수 있겠습니다.
(전자는 모 저널 이름과도 같죠? ㅎㅎ 새로운 개념 생성의 역할을 하는 학계에서도 이 저널은 open science의 비가역적인 흐름속에서 2014년에야 나왔습니다.)
3) 통계, 시각화, 프로그래밍 스킬
이제 세 가지는 한 몸입니다.
여기서 R이나 python이나 Matlab이냐 SAS냐 SPSS냐 등등 논의가 있는데, data science하려면 big data handling이 포함되어야 하기 떄문에 새로 배우는 분들에게는 SAS나 SPSS는 탈락입니다. “사회과학을 해서 선후배들에게 대학원에서 배우려면 SPSS를 써야 됩니다.”, “보건학을 하는데 제 주변은 모두 SAS를 씁니다.” 예를 들어 이런 대학원생 분들과 같은 특별한 경우를 제외하고는 그냥 R과 python을 하세요.
‘나는 기계학습, AI에 특화 또는 어떤 application으로 연결되는 일들에 관심이 있다’, 하면 python으로 바로 가시기를 권해드리고 앞으로도 python만 쓰실 확률도 적지 않습니다. 그 외의 경우에는 R로 시작하시면 좋습니다. 기초 통계를 튼튼히 하면서 통계적 사고와 컴퓨터 다루기에 익숙해지면 그떄 필요에 따라 python을 가감하시면 되어요. 내가 이미 웹 프로그래밍이라든가 다른 프로그래밍 수업에서 python을 배운 적이 있어서 이게 편하다, 그러면 python으로 시작하시면 됩니다.
확률, 분포, t-test, ANOVA, correlation, regression과 같은 개념까지는 어떤 툴로 쭉 가셔도 상관없어요. 통계 개념과 프로그래밍 언어(주요 패키지, 함수, 결과 읽는 법 등)을 같이 배우면 됩니다. 이 때 가능하면 1)에서 정한 도메인의 예시 데이터들과 예시 코드들로 수행하시면 됩니다. 데이터 특성에도 익숙해 질 겸..
그리고 나서 해당 도메인에서 주로 강조되는 고급통계 혹은 예측/분석 기법들을 익히시면 됩니다. 그리고 연구가 좋으면 논문을 따라해보고, 산업계에 나갈것이면 멋진 보고서를 따라해보고, 하면서 mock-up project를 몇 개 해보면 자신감이 붙습니다. 제 소견에는 이쯤 되면 어디가서 data scientist로 준비를 했다, 나는 data scientist이다 하셔도 충분합니다. 이후에는 어디서 무얼할지도 스스로 눈에 보이실 것이고 이쯤 되면 곳곳에 롤모델들도 보이실 것이고 self-education에도 익숙해져서 다음에 이거해봐야지 하는 확신이 들고 충분히 수행할 수 있습니다. 이쯤 오면 재밌어서 못나감 깔깔 거북목 조심하세요!
4) 기타: 시작하려면 컴퓨터를 새로 사야하나요
- 10년전에 엄마아빠 인터넷하던거다 이런거 아니면 어지간하면 최신형 중간사양 정도로도 됩니다. science의 멋진 점은 “재현가능”, “논리적 과정”이기 때문에 200건의 데이터라도 과학적으로 처리할 수 있으면 불러오는 데이터셋만 커지지 200만건의 데이터도 똑같이 처리할 수 있습니다. 배우는데는 엄청난 자원은 필요없어요. (영상 기계학습 논외이지만 colab등이 우리에겐 있지않겠습니까?)
- 모니터는 언제나 거거익선 (하나 큰 거 보다는 n모니터가 좋음), 모니터받침은 필수, 손목과 발 받침, usb가습기 강추.
- R 을 쓰신다면 램은 거거익선(16GB 이하는 안써봤어요. 성격이 급해서)
- 굳이 예시를 원하신다면 저는 어지간한 작업은 제 노트북(갤럭시 프로, 2020년형)과 데스크탑(intel i5, 32GB ram, SSD 1T)에서 다 합니다. 데이터 원천이 free-text까지다 하면 천만건 넘어가도 여기서 다 됩니다. 물론 기관단위 일 할때는 기관에서 제공하는 폐쇄망PC를 쓰지만…
개발용이라고 사양이 좋은거 줄거라는 편견을 버…. - 기계학습이나 영상하시는 분들은 GPU필요한데 이렇게 컴퓨테이션 파워 많이 먹는 작업들은 어차피 hardware수준의 data engineering관점이 좀 있으셔야하고, 그걸 획득하기 전에는 그냥 클라우드 사용법을 배우시는걸 권합니다. 학생이시거나 학교에 적이 있으시면 요즘 대학들에서 서버를 직접 분양해주기도 해요! 그런데 이것도 data size와 패키지/기법의 특성을 많이 타기때문에 처음부터 뭘 사서 하진 마시고 내가 가진 컴퓨팅 자원 안에서 해볼 수 있는 것들을 해보시면서 감을 잡으시는걸 권해드리고 싶습니다.
- 무작정 막연히 프로그래밍이고 뭐고 난 그냥 시작이야. 하시면 데이터 사이언스를 위한 R 카테고리의 글처럼, R 깔고 무작정 swirl 패키지부터 하나씩 따라해보시길 권장드립니다!
앞서 domain expertise + data science 역량 = data scientist의 시작 이라고 말씀드렸습니다. 1) domian 정하기, 2) scientist로서의 태도와 관점 갖추기 두 가지는 사실 3) data science역량 갖추기에 비하면 매우 짧은 시간입니다. 그런데, 이것들이 선행되지 않으면 3)에서 괴이한 스킬셋(처음부터 끝까지 하나의 분석과 보고서를 생성할 수 없는)을 갖추게 되거나 괴이한 결론(엄~청난 규모의 과제를 수행했는데 lesson이 없음..)등 그 때 가서는 이미 투자한 시간이 아까워서 돌이키기도 힘든 시간낭비를 하게 되기 쉽습니다.
그래서 완성체를 생각하면서 방향을 잡을 수 있도록 막연하게 “data scientist”를 직업으로 가지고 싶다, “선생님이 하는 그거”를 업무나 연구에서 적용해보고 싶다(물론 대부분 제가 한 작업의 한가지 정도씩을 보시게 되니까, 실제로는 다 다른 내용을 원하실 수 있습니다)하는 열망을 가지신 분들께 같이 마주앉아 이야기할 시간이 부족해서 늘 어버버 했던 이야기를 정리해서 올려보게 되었습니다.
이제 이해하시다시피 data scientist는 domain expertise + data science(에서도 특정 방법론들의 세트, 물론 확장은 가능)이기 때문에 100명이면 100명이 커버리지가 다 다를 수 있습니다.
‘과학’이 주는 자유
만나보면 많은 학생들, 또 많은 직장인들이 나이를 떠나 미래를 생각하며 무언가를 하고 싶어합니다.
제가 하고 있는 일이 그쪽이다보니 대부분이 data와 관련된 뭔가를 해보고 싶어서 저를 찾아오기도 하고 묻기도 합니다. 물론 저는 정규교육을 통해서 미래를 준비하는 것도 아주 좋다고 생각합니다. 하지만 너무 많은 분야가 창발적으로 생기다보니 모든 커리큘럼이 이미 준비되어 있을 수가 없고, 또 생각보다 많은 사람들이 1차로 하고 있는 일에 많은 시간과 노력, 비용을 투자하고 있기 때문에 정규교육의 기회를 현실적인 문제들로 얻지 못하기도 하며, 단지 그 떄문에 자신감을 잃고 아예 시도도 하지 못하는 안타까운 경우도 많이 보았습니다. (1차 직업도 난이도가 있는데, 이미 사회생활과 병행하면서 두번째라니. 이제 평생 공부는.. 포기하면 편합니다 AI번역기 있는게 어딘가요) 어렵게 생각하지 마시고 내가 나의 미래를 그리고 시작하세요. 이런 면에서 저는 무척 운이 좋았고, 감사한 은인들을 많이 만났습니다. 감사한 마음을 담아 혼자 찾아가기 부족한 리소스들을 제 분야에서라도 쪽글로라도 채워보려고 조금이나마 노력해 보려고 합니다.
더 많은 사람들이 더 열린 세상에서 더 많은 형태의 열린 기회들을 얻었으면 좋겠습니다. 그래서 오로지 각자가 자기 자신으로 평가받을 수 있는 사회가 되었으면 합니다. (근데 그러려면 나도 열려있고, 스스로의 눈으로 각자를 보려고 노력해야 합니다!) 여기에 n차 전직이 당연시 되는 사회가 현재, 또는 코앞이라는 것은 중요한 전제이며, 20년전에 수능 성적이 어땠는가.. ‘첫번째’ 전공이 무엇인가’만’ 집중하는 이런 우문을 누가 누구에게도 하지 않는 세상이 되었으면 좋겠습니다.
엄밀성이 자유를 담보하는 :) 즐거운 데이터 과학의 세계로 오세요!
(image credit: DALLE via chatGPT)
댓글 남기기