머신러닝을 공부하는 입장에서, 데이터 사이언티스트의 공부 과정에 대해 많은 관심이 있습니다. 이와 관련된 자료를 조사하는 도중, 외국 블로그에서 좋은 자료를 발견해서 정리해 보았습니다. 공부해야 할 필수 과정과 교양 과정으로 나눠서 정리해 두었는데, 한번 읽어서는 부족하고 여러 번 읽어 보아야 할 것 같습니다.
개인적인 관측 범위에서의 이야기입니다만, 데이터 사이언티스트라는 직업은 "21세기에서 가장 섹시한 직업"으로서 찰나적인 주목을 모은 제1차 붐, 인공 지능 붐에 부추겨 불이 붙은 제2차 붐, 끓어오른 제3차 붐을 거쳐 사회에 정착해 온 느낌이 있습니다.
이제 화제가 되는 것이 "데이터 사이언티스트(가 되려면)는 무엇을 공부해야 할까"라고 하는 것입니다.
그런데, 데이터 사이언티스트 붐이 시작된 지 10년이 지나, 둘러싸는 학술·기술적인 환경도 크게 바뀌어 가는 것으로 보입니다. 대표적인 것이 최근의 NN 수법의 융성으로, 예를 들면 "Transformer라면 얼마든지 스스로 짜서 돌릴 수 있지만 SVM 이 무엇인지 전혀 모르는 학생이 많이 있다" 같은 이야기를 듣는 일도 늘어나고 있습니다.
"단 5년 전이라면 듣지 못한 것 같은 인기 기술 트렌드가 지금은 오랫동안 주류가 되기는커녕 이미 폐기되기 시작하고 있다", 라는 이야기는 더 이상 일상다반사입니다.
그래서 지난 10년에 걸친 데이터 사이언티스트라는 직업의 역사를 근거로 하면서 "비즈니스 실무가로서 일하는 데이터 사이언티스트(가 되려면)는 무엇을 공부해야 하는가"에 대해 다시 고찰해 보자 생각합니다.
"무엇을 공부해야 하는가"는 세 가지로 크게 나눌 수 있다.
서두에서도 쓴 대로입니다만, 붐 발흥으로부터 10년이 지나 어느 정도 성숙해 온 데이터 사이언티스트 업계에 있어서, 그 학식·지식에 대해서도 「모두가 업무에 필요」라고는 한정되지 않고, 서서히 서로 온도차가 나오고 있는 것처럼 보입니다. 물론, 항례의 스킬 요건 기사에서도 지난 몇 년 지적해 온 것처럼 「데이터 사이언티스트」 「기계 학습 엔지니어」 「데이터 아키텍트」의 3 직종의 구별이 점점 강해져 왔다고 하는 측면도 있습니다. 게다가 각종 라이브러리나 프레임워크 , 심지어 클라우드 기계 학습의 진보에 수반해, 「반드시 전부 스스로 하지 않아도 좋아졌다」 것도 늘어나고 있습니다.
그래서 이번은 주로 「애널리스트의 연장」에 해당하는 「데이터 사이언티스트」 즉 현재에도 수요가 많은 「올 라운더 타입의 데이터 분석직」에 적을 좁히기로 합니다. 게다가 요즘의 데이터 분석 업계의 경향으로서 「어떤 학술·기술적 사항이 어떤 괄호로 나눌 수 있을까」를 관찰해 보면, 대체로 이하의 3개로 나눌 수 있을 것 같습니다.
- '교양'
- '필수'
- '차별화'
이하, 이 3 항목의 각각에 대해 구체적 예를 들으면서, 왜 이렇게 분류할 수 있다고 생각했는지, 나아가서는 각 항목을 배우는 것에 어떠한 의의가 있는지,에 대해 고찰해 보겠습니다.
「교양」에 해당하는 항목
첫 번째 '교양'은 단적으로 말하면 '근년의 실제 일에서는 사용할 기회가 제한되거나 원래 사용되지 않을 수도 있지만, 인접 영역이나 발전 사항을 배우는 데 도움이 되기 때문에 알아두면 좋은'항목을 가리 킵니다. 이것은 의외로 적지 않아서, 실제로 내가 10년 전에 데이터 분석 업계에 참가했을 무렵은 「모두가 배우고 있어 당연했다」에도 불구하고, 최근 2년 정도는 「그런 항목이 있는 것은 알고 하고 있지만 내용은 전혀 모르는 · 라이브러리를 사용하여 실행할 수 있을 뿐”이라고 말해 버리는 사람들이 꽤 늘어난 것 같은 생각이 듭니다. 아래에 그에 해당한다고 생각되는 것을 열거해 보겠습니다.
귀무가설 유의성 검정 (NHST)
「통계적 가설 검정」이라고 하는 분이 알기 쉬울 것입니다. t검정, 분산분석(ANOVA), 카이제곱 검정 등의 수법이 대표적이라고 생각합니다만, 기본적으로 빈도론 기반의 수법이므로 그 해석이 귀찮거나 또 p값이라고 할까 “p <0.05로 유의 '이 아니면 분석 자체에 의미가 없다고 보기 쉽다는 점이 있어, 관측 범위에서는 '일단 데이터를 t.test, chisq.test(R의 base의 경우)라든지 ttest_ind, chi2_contingency( Python의 scipy. stats의 경우)에 집중하면 좋겠다” 같은 취급을 하고 있는 것이 많을 것 같습니다.
실제로는 실험계획법으로부터 배울 필요가 있고, 원래 재현성 문제라는 귀찮은 문제 도 있고, 검정 수법 자체도 예를 들면 「t 검정 등 대표적인 수법은 「차이가 있을 때만 의미가 있다」 것뿐만 아니라 『차이가 없다』는 것을 나타내면 비열성 검정 이 필요하다」라고 하고 파고 갈수록 늪 같은 측면이 있어, 뭉치기 어려운 것도 사실이지요. 그리고 지금 현재 많은 데이터 사이언티스트들이 다루는 일 속에서 스트레이트로 NHST '만'으로 A/B 테스트 분석을 한다는 것 자체가 줄어들고 있다 이야기도 아니다, 라는 분위기가 있을 것 같습니다.
NN 이전의 고전적인 기계 학습 기법
내가 한때 2014년에 KDD에 참가했을 무렵은 industry track의 발표라고 하면 "특징량 엔지니어링은 어리석은 지, 마지막 분류 문제는 로지스틱 회귀· SVM ·랜덤 포레스트 중 하나로 풀린다"같은 것이 매우 많았던 기억이 있습니다.
로지스틱 회귀· SVM ·랜덤 포레스트는 이전에는 매우 인기 있는 기계 학습 수법이었던 것입니다만, 최근에는 특히 Kagggle등에서 「보다 노력 적게」 「보다 고정밀도로」라고 하는 방향성의 추구가 이루어진 결과 , 거의 GBDT·NN계 제수 법에 수렴한 감이 있습니다. 이에 따라 위의 고전적인 기법들은 점차 학습상의 우선도가 내려가고 잊혀 가고 있는 것처럼 느끼고 있습니다. 다만, 어느 수법도 「바퀴의 재발명 」과 같이 자신의 손으로 원리적인 아이디어 로부터 수식 전개해 최적화 계획을 도출해, 실장까지 해 보면 여러 가지 배움이 있는 것뿐이므로, 지금 하지만 배울 의의는 있다고 생각합니다.
클래식 데이터 마이닝 기법
옛날에는 데이터 사이언스 관계의 기술서라고 하면, 상당한 비율로 어소시에이션 분석(association rules)을 거론하고 있었던 것 같습니다. 이것은 행렬 분해계의 수법 등 추천 기술이 진보한 것으로 등장할 기회가 없어졌다는 측면이 큰 것일까라고 생각합니다. 같은 이유로, 그래프·네트워크 분석에 대해서도 전문서로 다루어지는 것은 있어도, 데이터 사이언스계의 종합적인 기술서에는 실려 있지 않은 것이 많다고 합니다.
이 근처의 항목은 어쩌면 더 일반적인 EDA (발견적 데이터 분석)의 텍스트 등에서는 소개되고 있을지도 모릅니다만, 어쨌든 「데이터 사이언스」의 본류로부터는 벗어나고 있다고 봐 되게 되어 오는 것일까, 라는 인상이 있습니다.
측도론적 확률론 및 기타 기초 이론 체계
학습의 분석 수법을 연구해 고안할 때는 유용한 것이므로, 신규 수법의 연구 개발을 하지 않는 사람에게는 그다지 의미가 없을지도 모릅니다.
그렇다고는 해도, 후술 하는 「필수」 항목 중에도 나오는 것 같은 「최첨단의 연구 논문을 읽고 최신의 분석 수법을 마스터한다」상에서는 그 지식이 필요하게 되는 일도 많다, 역시 「교양」으로서 배워 두어 손해는 없는 것이 아닐까 생각하고 있습니다.
'필수' 항목
두 번째 "필수"는 읽고 글자처럼 현재의 데이터 과학 실무에 있어서 필수라고 생각되는 기술군입니다. 어떤 의미 여기가 시대와 함께 변천하기 때문에 '교양'과 '차별화'의 내용도 그에 따라 달라진다고 보는 것이 옳을 것입니다. 그리고 이 항목은 동시에 현재 굉장히 고만과 넘치는 '초보자용 데이터 과학 교재'들의 내용의 최대 공약수를 취한 것에 가까운 내용이 아닐까 생각됩니다. 즉, 좋든 나쁘든 "지금 이것들을 알고 있으면 데이터 사이언티스트의 일을 할 수 있어 돈을 벌 수 있다"라고 하는 것이군요.
선형 모델족에 의한 회귀와 예측
현재도 「초수 로지스틱 회귀는 하나의 선택지」라고 하는 화제가 나올 정도이므로, 지금도 여전히 선형 모델족의 차례는 끊이지 않는다고 생각하고 있습니다. 기계 학습의 해석 수법의 하나인 LIME에서 국소적인 선형 모델 근사가 사용되고 있었던 것을 보면 알 수 있듯이, GLM까지 포함한 선형 모델족은 「(회귀에 의한) 설명」에도 「예측 또한 매우 유용합니다. 다니며 책에서 다시 회귀 분석의 기초를 접한다 는 것도 좋을까.
특히, 선형 회귀모델은 어느 쪽인가 하면 기계학습 친근한 일이 많이 기대되는 이번 데이터 과학자에게 있어서는 적은 「통계학 방면의 수법」이며, 예를 들면 다변량 해석적인 어프로치로 다수 있는 시책의 어느 것 가 유효했는지를 나타내고 싶다고 하는 과제에 있어서는 지금도 널리 이용되고 있습니다. t검정이나 카이제곱 검정 이 잊히는 것은 있어도, 아마 선형 모델족은 앞으로도 많은 데이터 사이언티스트가 배우고 계속 사용하는 것이 아닐까 생각합니다.
Kaggle에서 상용되는 GBDT·NN 등의 기계 학습 분류기와 그 적용 기법
개인적으로, Kaggle가 현대의 기계 학습 기술에 준 임팩트 중에서 가장 큰 것은 「GBDT·NN의 테이블 데이터에의 적용 기법의 확립」이라고 생각하고 있습니다. 「교양」의 파트에서도 말했듯이, 2015년 이전은 고전적인 로지스틱 회귀· SVM ·랜덤 포레스트가 “시든” 분류기라고 하는 것으로 즐겨 사용되고 있었던 것입니다. 그런데, Kaggle라는 「스피드감」과 「질리지 않는 정밀도 향상」이 계속 추구되는 「장」이 등장한 것으로, 처음에는 「튜닝이 어려워서 취급하기 어렵다」라고 되어 있던 GBDT나 NN이 일약 요령마저 잡으면 누구나 고정밀도를 두드릴 수 있는 표준기법으로 변모한 느낌이 있습니다.
물론, NN은 테이블 데이터에 한정되지 않고 화상·텍스트 데이터 나아가 다른 도메인의 데이터에도 유용한 것으로, 「NN의 기법에 상세한」것 자체가 데이터 사이언티스트로서 일하는 데 있어서 큰 어드밴티지가 될 수 있습니다. 앞으로도 GBDT·NN의 기법은 오랫동안 데이터 과학자에게 있어서 필수 스킬인 것을 계속할 것입니다.
그럼 또 다른 포인트. 분류기의 적용 기법에는, 예를 들면 「적절한 교차 검증」 「정칙화」라고 하는 메타인 부분(이전 「ML 디자인」이라고 총칭한 적이 있다)도 포함된다고 개인적으로는 생각하고 있어, Kaggle는 그 중요성을 널리 알리는 데에도 크게 기여하고 있다고 생각합니다. 그리고 실무의 현장에서 기계 학습을 다루는 데이터 과학자도 그것에 대한 지식을 가지고 있어야 한다고 생각합니다.
클러스터링 및 추천과 같은 기타 표준 기계 학습 기술
말할 필요도 없이, 기계 학습이라고 하면 분류기와 같은 교사 있어 학습에 한정되지 않기 때문에, 실무의 장면에서는 교사 없는 학습 수법이 사용되는 시추에이션이 많이 있습니다. 클러스터링 등은 그 대표 예라고 생각되지만, 그 밖에도 추천 등도 여기에 포함해도 좋을까 생각합니다. 이미지로서는 교사 라벨을 사용하지 않고 데이터 그 자체의 성질을 이용하는 수법 군으로, K-means에서도 PCA에서도 NMF 이하 행렬 분해계의 수법에서도 대체로 이 근처에 들어간다고 생각합니다.
덧붙여서 이 영역도 근년은 연구가 번성해 여러 가지 신규 기법의 제안이 있을 것입니다만, 내가 파악하고 있는 것은 기껏해야 t-SNE라든지 시계열에 대한 DTW(Dynamic Time Warping) 베이스의 클러스터링 정도로, 조금 캐치 업 할 수 없는 느낌이 있습니다.
데이터 기반의 정비·구축에 관한 기초적 스킬
이것은 항례의 스킬 요건 기사에서는 「데이터 아키텍트」와의 중복 영역으로서 들고 있는 것으로, 편하게 말하면 「최소라도 SQL 인 어느 정도 기초적인 구문은 써 주었으면 한다」라든가 「Bigquery의 취급 방법 정도는 기초 레벨로 좋기 때문에 알고 있던 것이 좋다”라고 하는 정도의 이야기군요. 실제로는 어디의 현장에 가도 보통은 따로 인프라 엔지니어가 있어 그들이 데이터 기반의 정비의 곳까지 포함해 보고 있는 것이 많다고 생각하기 때문에 , 너무 돌진한 곳까지 할 필요는 없는 마음 만약 그래도 데이터 기반의 정비·구축이 어떤 것인지에 대한 지식과 그들을 다루기 위한 최소한의 기초적 스킬은 가지고 있던 것이 무난하겠지요.
일반적인 개발 환경 정비에 관한 기초 기술
요점은 "시스템 소프트웨어 개발 시 사용하는 환경 지식"이라는 이야기입니다. 이 근처는 가끔 화제가 되는 「우선 Git로부터 기억해야 한다」라든가 「Docker는 필수」 같은 이야기와도 관련되어 온다고 생각합니다만, 개인적으로는 「시대에 의해서도 현장에 따라서도 상황이 크게 바뀌기 때문에 그 때때로 에서 필요한 것을 그 자리에서 배우면 OK」라고 생각합니다. 예를 들어, 지금 현재의 나의 팀에서는 Git도 Docker도 필수가 아닌 데다, Docker에 이르러는 비추천이라고 하는 것으로 업무에서는 전혀 사용하지 않습니다. 다만, 당연합니다만 각각의 대체가 되는 구조가 있는 것이고, 그들은 아무래도 몸에 붙여야 하는 것입니다. 말을 바꾸면 「개별 현장마다 정의되는 「읽고 쓰기 주판」」이라고 하는 것이군요.
그런 의미에서는, 역시 최근이라고 클라우드 환경을 다루는 것이 하나의 열쇠가 될 것입니다. 예를 들어 Colaboratory는 내 팀에서도 좋아하고 사용되고 있으며 AutoML 도구는 클라우드 DB와 연결하여 쉽게 사용할 수 있는 것이 많습니다. 그렇다고 해도 이것도 또 「개별의 현장마다 지정되는 것」이므로, 궁극적으로는 다양한 현장을 건너면서 서서히 지식이 늘어나가는 성질의 것일지도 모릅니다.
'차별화'가 될 수 있는 항목
마지막 "차별화"는 말 그대로 "아직 세상에 그들을 착용하고 있는 데이터 과학자가 적기 때문에 다른 사람과의 차별화로 이어질 수 있다"항목입니다. 이미 말했듯이, 여기의 구체적인 내용은 확실히 시대에 의해서도 현장에 의해서도 변동하기 때문에, 이 기사에서 들고 있는 것이 앞으로도 계속 차별화로 연결된다고는 보증하지 않는 점 미리 양해 바랍니다.
여러 프로그래밍 언어 학습
갑자기 난이도가 낮은 이야기를 가져와서 「너는 무슨 말을 하고 있는 거야」라고 생각될 것 같습니다만, 이것은 상당히 중요한 이야기입니다. 특히 요즈음은 몹시 넘치는 「초보자용 데이터 과학 교재」의 영향으로 「Python 밖에 할 수 없는 데이터 사이언티스트」가 늘어나고 있는 것 같기 때문에, Python 이외의 언어도 잘 다룰 수 있다는 것은 큰 어드밴티지가 될 수 있습니다. 그것은 물론 R이든 SQL이라도 좋고, C++ 나 Rust 등의 소프트웨어 개발용의 범용 언어라도 좋다고 생각합니다. 그 근처의 언어를 쓸 수 있으면, 예를 들어 라이브러리 개발 등에서도 유용하거나 하는 이유 때문에 비교적 추천입니다.
덧붙여서 항례의 추천 서적 리스트 기사에서도 들었듯이, R과 Python의 양도가 될 뿐이라면 최근에는 좋은 서적이 여러 가지 있습니다. 예를 들면 이쪽의 「제로로부터 시작하는 데이터 사이언스 입문 R・Python 일거양득」은 말 그대로 「전혀 같은 분석 조작을 R과 Python의 양쪽 모두에서 똑같이 쓴다」 방법이 실려 있어, 개인적으로는 좋은 교재라고 생각합니다.
최첨단 연구 논문에서 제안된 NN 기법
이것은 연례 기술 요건 기사에서도 언급한 바와 같이, 만일 NN 기반의 기능이 판매 소프트웨어를 개발하고 있고 경쟁사와 경쟁하고 있다면 항상 최신의 NN 기법을 도입하여 보다 편리합니다. 보다 임팩트 가 있는 기능 개발을 하고 싶어지는 것이 인정이라고 할 것입니다. 따라서 arXiv에 매일 산만큼 등록되는 NN 수법 제안 논문을 읽고, 그들을 신속하게 구현할 수 있다는 스킬도 중요해질 것입니다. 최근이라면 diffusion model 근처가 주목을 받고 있을까요?
복잡한 베이지안 통계 기법
연례 기술 요구사항 기사에서는 일관되게 베이즈 통계 기법을 습득하는 것을 권장하고 있습니다. 한 번이라도 MCMC 샘플러를 구사한 계층 모델의 위력에 접하면, 다시 돌아갈 수 없는 정도의 매력이 거기에 있다고 생각합니다. 개인적으로는 MMM(Media Mix Modeling)에서 반드시 베이즈 통계 모델링을 사용하게 되기 때문에, 광고· 마케팅 분야의 데이터 사이언티스트는 「필수」 여야 한다고 생각하고 있습니다.
「복잡한」이라고 말해 두면서 「표준 베이즈 통계학」을 추천한다고 하는 모순해 보이는 것을 하고 있습니다만(웃음), 이미지로서는 이쪽의 서적에서 소개되고 있는 것 같은 베이즈 통계학의 지식이 있으면 충분할까. 요점은 RStan, PyMC3, Tensor Flow Probability, NumPyro를 사용하여 MCMC에서 베이즈 모델의 추정을 할 수 있으면 일단 OK라는 스탠스입니다.
통계적 인과 추론
개인적으로는 '효과 검증 입문'에서 다루어지는 수준에서 좋기 때문에 통계적 인과 추론의 지식을 갖추고 있는 것이 데이터 과학자에게는 바람직하다고 생각하고 있습니다. 하지만, 관측 범위에서는 여기까지 익히고 있는 사람은 데이터 사이언티스트 업계에서도 아직 그다지 다수파가 아닌 것처럼 보입니다. 비교의 문제로 말하면 제약이나 역학과 같은 의료 통계 분야의 데이터 과학자는 (분야별 상식으로서) 통계적 인과 추론을 고수하고 있는 사람이 많다고 느끼고 있습니다.
그러나, 그 이외의 분야에서는 필요하지 않을까 하면 그런 일은 전혀 없고, 조금이라도 샘플 간의 이질성이 섞이는 상황이라면 간단하게 심슨의 패러독스 가 일어날 수 있다는 것은 실무계의 데이터 과학자라면 누구나 한 번은 체험한 적이 있을 것이며, 그러한 때에 어떻게 해결하면 좋은지 지식이 있는 것은 중요할 것입니다.
각 분야에 고유한 체계적 지식
마지막 끝에 굉장히 애매한 테마를 가져왔습니다만, 편하게 말하면 「개별 분야에서 데이터 과학자로서 존재감을 내고 싶다면 각 분야의 도메인 지식도 보통사람 수준 이상으로 마스터하라」라는 이야기입니다. 해외에 눈을 돌리면 MBA 도 가지고 있는 데이터 사이언티스트라고 하는 것이 드물지 않지만, 개인적으로는 이것도 훌륭한 「도메인 지식을 올린」 데이터 사이언티스트가 아닐까 생각하고 있습니다.
참조 원본 글 링크: https://tjo.hatenablog.com/entry/2022/07/29/173000
'개발일기 > 개발환경' 카테고리의 다른 글
개발자 인기 시대에서 경기 침체를 대비해 IT 경력 관리하는 요령 (0) | 2022.08.13 |
---|---|
2021년 C++은 여전히 배워야 하는 언어인가? 정답은 예! (0) | 2021.09.06 |
AI 머신러닝 딥러닝 위해 필요한 수학 공부 과정 (0) | 2021.08.04 |
댓글