데이터과학 유망주의 매일글쓰기 31일차

배우는 자(Learner Of Life)
5 min readOct 19, 2020

--

특성(feature)아 너 원래 이렇게 어려웠니?..

# 특성, #feature engineering, #Decision Tree

Feature란 사물의 특징을 나타내는 “특성"을 뜻한다.

오늘 한일:

데이터 과학에서 특성(feature)은 각 열(column)을 뜻한다. 각 열이 모여서 데이터가 되듯이, 특성은 데이터를 구성하는 중요한 요소들이다.

그러나 데이터에 이미 존재하는 특성뿐만 아니라, 새로 특성을 만들어 내는 것 역시 중요하다. 머신 러닝에서는 이 특성이 얼마나 잘 만들어졌느냐에따라 모델의 성능이 좌우되기도 한다.

그러나 나 같은 초보 데이터과학자에게 이러한 특성을 만든다는 것은 생각보다 쉬운 일이 아니다. 특히, 내가 데이터를 잘 모르거나, 데이터가 다루는 분야에 대한 기본지식이 없을 경우 더욱 그렇다. 마치 초보 화가가 인물화를 그리는데, 인물의 특징을 잘 묘사해내기 어려운 것과 같다. 특성을 만드는 일도 어느 정도 예술의 경지에 이르러야 잘할 수 있는 것일까?

오늘 과정에서는 지도학습의 분류기법 중 하나인 결정트리(Decision Tree)에 대해 배웠다. 이 결정트리에서는, 정확도를 좌우하는 요소들이 있는데, 각 특성들이 그 중에 하나이다. 각 특성들이 결정트리의 성능에 얼마나 중요한지를 그래프를 만들어 볼 수 있는데, 반드시 가장 큰 영향을 주는 특성 부터 거의 영향이 없는 변수들이 분명히 있다. 이미 있는 특성을 사용할 경우, 하이퍼파라미터인 최소 샘플의 수와 최대 트리의 단계 수 등을 조정하면, 성능에 어느 정도 영향은 있지만 그 한계가 분명히 있다. 그러나 특성을 새롭게 조합하여 만들어 내는 경우, 좀 더 적은 수의 특성으로도 더 좋은 성능의 모델을 만들어내기가 용이하다. 결국, 데이터의 특성들을 얼마나 잘 이해하고, 그것들을 활용하여 얼마나 효율적이고 새로운 특성을 만들어낼 수 있느냐가, 좋은 데이터과학자를 구분할 수 있는 하나의 기준이 된다. 아쉽게도, 나는 이 기준을 아직 만족하지는 못했다.

오늘 과제에서는 이 결정 트리를 활용하여, 테스트 데이터를 통해 예측한 값이 얼마나 정확한지 판단하기 위해, 예측값들을 csv파일로 추출해 Kaggle 챌린지에 제출하는 것이었다. 오늘 다룬 데이터는 코로나와 관련된 예방접종 데이터였는데, 이 분야에 대한 지식이 없어 어떠한 특성을 만들어야 할지 고민이 많이 되었다. 결국, 고민 끝에 하나를 하긴 했다. 바로 예방접종 대상자들의 고용상태를 나타내는 employment_status라는 특성을 조정했다. 이 특성의 “Not in Labor Force”라는 엔트리가 모두 “Unemployed”라는 엔트리로 변경될 수 있지 않을까 생각했다. (일을 안한다는 것은 고용상태가 아니라는 뜻이기 때문에 이렇게 특성의 값들을 변경할 수 있지 않을까 생각했다.) 결과적으로 새로운 특성을 만들었다기 보다는, 이미 있는 특성의 범주값들을 축소시켜 더 작은 범주만을 가지게 한 것이었다(“Unemployed” 또는 “Employed”).

이러한 특성을 활용하여 모델링을 진행한 결과, 전체 스코어에서 큰 차이가 없었다. 이 특성이 예방접종자를 예측하는데 그다지 큰 영향이 없었다는 뜻이다. 뭐, 이것도 하나의 공부라면 공부라고 할 수도 있겠지만, 좀 더 의미있는 특성을 만들지 못했다는 것은 아쉽다.

앞으로 할일:

매일 과제를 수행하면서, 너무나 부족한 점이 많이 느껴진다. 다행스럽게도, 이는 나뿐만이 아닌 초보 데이터과학자들은 누구나 느끼는 것이다. 자연스럽다는 의미일 것이다. 지금 내가 참여하는 부트 캠프에서는, 당연히 9개월 이라는 짧은 기간에 대학원생 수준에 버금가는 이해를 가질 수는 없을 것이라고 말해주시고, 너무 그것에 자책하지 말라고 말씀을 해 주신다. 하지만, 이 것을 제대로 이해하지 못하고, 이 과정을 졸업했을 때 과연 인터뷰를 제대로 할 수 있을지, 면접에서 내가 데이터과학자로써 가능성이 있다는 입증을 할 수 있을지 우려되기도 한다. 물론, 아직 2달도 안 된 시간이지만, 앞으로 7개월 후에 내가 대학원생에 버금가는 실력을 쌓을 수 있을지, 물론 노력을 많이 해야겠지만, 조금 걱정이 되기도 한다.

그래도, 매일 배우는 것이 상당히 많고, 무엇보다도 나 스스로 무언가를 해 보면서 얻게되는 것이 많은 것은 매우 다행이며 만족스럽다. 쉬운 과정은 아니지만, 새로운 개념을 매일 접하고, 그것을 소화시키기 위해 씨름하면서 한 고생은, 다음날이 되었을 때 새로운 개념을 접하면서, 훨씬 더 잘 소화되는 것 같다. 하루 하루 남다른 진화를 하는 것이라는 느낌이 든다. 그만큼 힘들지만, 보람있고 흥미롭다.

앞으로 반년 이상 남은 기간동안, 최대한 많이 습득하고 싶다. 그것은 단순히 데이터과학자가 되기 위한 지식뿐만 아니라, 이 과정이 끝난 후에도 나 스스로 무엇이든지 도전하며 배울 수 있다는 자신감과 태도를 지켜나가는 것이다. 결국, 이 과정에서 얻을 수 있는 가장 큰 선물은 그러한 것들이라고 생각한다. 내가 아무리 배워도, 이 양자역학같은 데이터과학의 세계에서 알아야할 모든 지식을 얻는 것은 앞으로 7개월 가지고는 불가능하다는 것을 알고있다. 중요한 것은, 이 과정이 끝나고 나서도 “나 스스로 새로운 지식을 얻을 수 있는 능력"을 키우는 것이고, 이를 통해 계속해서 더 나은 데이터과학자나 한 인간으로 성장하는 것이다. 그렇게 생각을 한다면, 하루 하루 고된 과제도 나름 흥미롭게 해 낼 수 있다.

“배움”이라는 선생님 앞에서, 나는 한 없이 작은 “인생의 학생"이다. 마치 끝없이 팽창하는 이 우주처럼 그의 모습은 다가가면 갈수록, 더 멀어지고, 더 커진다. 하지만, 그에게 향하는 길에서, 나 역시 더 커진다. 이 세상은 끝을 모르게 커지고, 지식의 양 역시 무한대로 팽창한다. 그러나, 그 안에서 나를 계속 단련할 수록, 나도 더 큰 사람이 되가는 것 같다.

내일 과정에서도 오늘 고생한 보람이 느껴졌으면 좋겠다. 무릎을 탁치며 “아 그래서 그랬구나~!”라는 탄성이 또 한번 나오기를 바란다.

--

--

배우는 자(Learner Of Life)
배우는 자(Learner Of Life)

Written by 배우는 자(Learner Of Life)

배움은 죽을 때까지 끝이 없다. 어쩌면 그게 우리가 살아있다는 증거일지도 모른다. 배움을 멈추는 순간, 혹은 배움의 기회가 더 이상 존재하지 않는 순간, 우리의 삶은 어쩌면 거기서 끝나는 것은 아닐까? 나는 배운다 그러므로 나는 존재한다. 배울 수 있음에, 그래서 살아 있음에 감사한다.

No responses yet