데이터 사이언티스트, 머신러닝 전문가가 되기 위해서는 많은 것을 배우고 체득해야 합니다. 주어진 시간내에 많은 것을 배우려면 요령이 필요한데요, 지극히 저 개인적인 관점에서 데이터 사이언티스트나 머신러닝 전문가가 되기 위한 5가지 학습법을 소개해 드립니다.
1. 데이터 가공/처리와 분석 능력을 키우세요
실전에서 머신러닝 애플리케이션을 적용할 때 절반 이상의 영역은 데이터 전처리(Preprocessing), 피처 엔지니어링(Feature Engineering)과 같은 데이터 가공/처리 부분입니다. 또한 데이터의 구성 및 피처들간의 관계, 분포도, 왜곡도, 상관관계, 아웃라이어 검출등의 데이터 분석에도 많은 시간이 소모 됩니다.
오늘날 머신러닝 알고리즘은 매우 편리하게 패키징 되어, 일반화된 함수 호출로 쉽게 구현이 가능합니다. 오히려 머신러닝 알고리즘이 잘 동작할 수 있도록 데이터를 효과적으로 가공/처리하는 것이 머신러닝 애플리케이션 구현에 있어 더 중요할 수 있습니다. 실제로 캐글의 여러 경연 과제에서는 이러한 데이터 처리가 높은 순위를 달성하는데 가장 중요한 요소가 되기도 합니다.
이를 위해 사이킷런/케라스 등의 머신러닝 패키지 뿐만 아니라 넘파이와 판다스에 대한 공부도 같이 병행해야 합니다. 특히 회사에서는 대부분 RDBMS 형태로 데이터를 가지고 있기 때문에 SQL과 데이터 모델에 대한 이해가 매우 중요합니다.
https://www.jokejive.com/topic/data
2. 무조건 따라해 보세요.
예나 지금이나 개발 감각을 키우는 가장 빠른 방법중의 하나는 좋은 소스 코드를 무작정 따라해 보는 것입니다. 머신러닝 개발도 예외가 아니며, 캐글(www.kaggle.com)은 이를 위한 최고의 장소입니다. 실전에서 얼마나 다양한 머신러닝 애플리케이션들을 직접 구현해 보고 많은 문제점들을 해결해 보았는지는 머신러닝 능력을 결정하는 중요 척도 입니다. 캐글은 이러한 실전 능력을 배양할 수 있는 가장 좋은 학습 공간이자 놀이터 입니다.
물론 캐글을 처음 접하거나, 아직 머신러닝 코드에 익숙하지 않은 분들의 캐글의 많은 자료와 소스코드들을 제대로 이해하기 어려 울 수 있습니다. 하지만 이건 누구나 마찬가지입니다. 일단 몰라도 캐글에 주기적으로 발을 붙이고 쉬운 커널부터 천천히 학습해 보십시요. 캐글을 여러분의 놀이터로 삼느냐, 그렇지 않느냐에 따라 여러분의 실력이 크게 달라 질 수 있습니다.
3. 이론과 실습은 언제나 낄끼빠빠
효과적인 학습은 이론과 실습의 균형을 잘 맞추는 것입니다. 그런데 이론과 실습에 투자하는 시간 비율은 어떻게 정하면 좋을까요? 사실 황금 비율은 없지만 저의 지극히 개인적인 의견으로는 머신러닝이 실용학문임을 감안하고 실습에 많은 시간을 투자하는게 좋다고 생각합니다.
이는 데이터 사이언티스트가 알아야 할 확률/통계/선형대수나 머신러닝 알고리즘 이론등에 대한 공부를 소홀히 하자는 얘기가 아닙니다. 우리가 많은 시간을 들여서 이론을 배우는 이유, 특히 기반 이론을 배우는 이유는 확실한 기반 개념을 확립해야만 더 어려운 문제를 해결 할 수 있기 때문입니다. 하지만 안타까운것은 확률통계/선형대수/머신러닝 수식과 이론 알고리즘에 너무 많은 시간을 투자하다가 수식의 벽에 막혀 본 게임도 하기전에 지쳐서 떨어져 나가는 경우입니다.
만일 본인이 리서치나 연구원쪽으로 방향을 정했다면 당연히 수식과 이론에 시간을 많이 투자하는 것이 맞습니다. 하지만 현업에서 데이터 분석 기반의 데이터 사이언티스트가 되기를 원한다면 어느정도 선에서 이론을 이해하고, 다양한 실습과 실전 문제 해결 경험을 쌓는것이 더 중요할 수 있습니다.
이론과 실습을 다양하게 반복하면서 공부하다보면 이론과 실습이 언제 끼고 언제 빠져야 하는지, 어떻게 시간 배분을 해야 할지 감을 잡을 수 있습니다. 기반 개념 확립을 위한 이론 학습, 그리고 개발/구현을 통해 기반 개념을 강화하는 균형을 통해 여러분의 실력을 향상 시킬 수 있으려면 이러한 시간 배분을 의식적으로 하도록 노력해야 합니다.
4. 작심 삼일을 빠르게 반복하십시요.
좋은 와인은 시간이 필요합니다. 데이터 사이언티스트가 된다는 것은 배움의 긴 여정을 떠나는 것이고, 그 과정에서 좌절하고 멈추기 쉽습니다. 어렵다고 생각되면 잠시 여유를 가지십시요. 그리고 다시 시작하십시요.
우리의 뇌는 자는 동안 낮동안 배웠던 많은 것들을 재정돈/정렬 과정을 통해 배움을 한단계 더 성숙시킬 수 있게 만들어져 있습니다. 이 과정에서 중요한것은 우리의 뇌가 식기 전에 다시 돌아와야 한다는 것입니다. 작심 삼일의 적당한 휴식기를 가지고 빠르게 복귀할 수 있는 정신력을 발휘한다면 작심 삼일이 작심 일주일, 작심 한달, 작심 6개월이 될 수 있습니다.
저는 개인적으로 '정신 사나워' 방식의 공부도 좋아합니다. 알고리즘 공부하다가 이해가 안되면 Kaggle의 경연대회 문제를 풀어보거나, 다시 지루해지면 다른 알고리즘이나 또 다른 Kaggle 구현 문제를 풀어 보는 방식입니다(그래도 지루하면 서점이나 도서관에 가서 관련 책들을 흝어보는 시간을 가집니다). 집중을 중시하는 분들에게는 어색한 방식이지만 저에게는 흥미를 잃지 않고 지속적으로 학습을 가능하게 해주는 방식입니다.
5. 늘 한단계 더 어려운 문제에 도전해보세요.
헬스클럽에서 Personal Training을 시작하면 트레이너들이 늘 하는 말이 있습니다. '근육은 찢어지는 과정을 통해 더 커지고 성장합니다'. 운동을 몇시간동안 오래 했느냐 보다 근육이 찢어질만큼 고강도로 했느냐가 근육 성장에 더 중요합니다. 머신 러닝을 배우는 과정 역시 마찬가지 입니다.
처음에는 Toy 데이터 세트로 시작했다가 수백개의 컬럼을 가진 여러개의 데이터 세트를 문제를 확장하고 어느정도 자신감이 붙으면 이제는 Kaggle의 다른 데이터 사이언티스트들과 경쟁해보십시요. 익숙하지 않은, 그리고 어려운 경연 대회의 문제들을 풀어 본다면, 자신의 실력을 키울 수 있다는 믿음을 잊지 마십시요.
어려운 문제에 도전하면 누구나 다 처음에는 떨어져 나갑니다. 중요한 것은 다시 도전하는 것이며, 이번에 도전할 때는 지난번 보다 조금만 더 오래, 조금만 더 많이 버티는 겁니다.
배움의 왕도는 배움 자체를 즐기는 것입니다. 하지만 이런 능력을 보유한 사람은 매우 드뭅니다. 만약 즐길 수 없다면 즐기는 척 우리의 뇌를 속여 보는건 어떨까요?
행복해서 웃는게 아니라 웃어서 행복하다는 말도 있듯이, 데이터 사이언티스가 익혀야할 많은 것들을 배우면서 지겨움과 극복하기 어려운 문제에 봉착할 때 마다 잠시 내려놓거나, 오히려 거리낌없이 다른 데이터 사이언티스에게 도움을 요청한다거나, 머신러닝 프로젝트의 일원으로 직접 구현에 참여하는등 지금 봉착한 문제에서 잠깐 떠나서 다른 해결책을 찾아 보는 겁니다.
언제나 잊지 말아야 할 것은 우리의 두뇌는 우리가 생각한 것 보다 훨씬 대단한걸 해낼 수 있는 능력이 있다는 것입니다.