logo

Contact

If you want to contact us, please use following emails. Any enquiries will be welcomed. :)

Technical stuff


james@deepnumbers.com

Marketing stuff


jenny@deepnumbers.com

로보어드바이져를 개발하면서 알게 된 것들 3 – 머신러닝의 진수, Feature Engineering!!!

digging-1100509_1920

로보어드바이져를 개발하면서 알게 된 것들 3 – 머신러닝의 진수, Feature Engineering!!!

알고리즘은 알고리즘 일 뿐

 

서로 다른 철학을 가진 머신러닝 알고리즘들로 모델을 만들어 보았지만 크게 달라지는 것은 없었다.

Occam’s Razor를 따르는 알고리즘이든, 아니던간에 유의미한 수준의 예측력을 보여주지 못했다.

과거의 데이터로 테스팅하는 것 역시 절대적인 판별의 기준으로 사용할 수 없는 것이, 적용하는 시점에 따라 다른 결과를 보여주기 때문에 이것을 우리가 간단히 좋다 혹은 나쁘다라고 이야기하기 어려운 것이 현실이다.

데이터의 특성을 알기 때문에 크게 기대하지 않았지만, 항상 그렇듯이 슬픈 예감은 틀리는 적이 없다.

아직 내가 테스트하지 않은 알고리즘들이 많이 있었기 때문에 테스트하지 않았던 다른 알고리즘들도 이번기회에 모두 테스트를 해볼까 고민했었다.

하지만 하지 않기로 결정했다. 왜냐하면 크게 달라질 것이 없을 것 같다는 생각을 지울만한 논리적인 근거가 내 머리속에 없었기 때문이다.

 

Feature Engineering을 해야 하나?

 

그리고 한동안 진지하게 고민을 했다.

왜냐하면 이제 알고리즘의 종류도 바꾸어보고, 그리고 이런저런 시도를 해보았으니, 데이터를 건드리지 않는다면 이제 내가 시도할 수 있는 수단은 Feature Engineering이 가장 유력했다.

Feature Engineering이 머신러닝 알고리즘이 학습하기 쉬운 형태로 데이터를 변환하거나 새로운 Feature를 만들어 주는 것을 의미한다.

예를 들어 기존데이터를 이용해 머신러닝알고리즘을 학습시키면 정확도 35% 밖에 나오지 않는 것을 임의로 예측력이 있다고 판단되는 변수의 값에 2를 곱하고, 그렇지 않은 변수의 값에는 0.5를 곱하는 등, 얼핏 생각해보면 별거 아닌 작업을 해주게 되면 놀랍게도 정확도가 10% 이상, 운이 좋은 경우에는 20%이상 향상될 수도 있다.

그만큼 Feature Engineering은 머신러닝에 있어 데이터 다음으로 결과물의 품질에 중요한 영향을 미치는 요소라고 할 수 있다.

머신러닝을 잘하는 사람들의 진정한 실력은 알고리즘이 아니라 Feature Engineering에서 나오기 때문에 나름대로의 Feature Engineering에 대한 노하우가 있다.

왜냐하면 어떤 문제가 있을때, 데이터가 동일하고, 사람들이 쓸 수 있는 알고리즘들이 뻔하기 때문에 결과물의 품질은 누가 얼마나 머신러닝 알고리즘이 학습하기 쉬운 형태로 변환해주는가에 달려있기 때문이다.

머신러닝으로 다른 사람들보다 놀라운 결과를 보여주는 경우는 결국 Feature Engineering을 잘했다는 것인데, 경우에 따라 다르기는 하지만 Feature Engineering의 실질적인 내용을 보면 실소를 금하는 경우가 적지 않다. 아주 작은 것이고, 설마 했던 것들이 실제 문제 적용되면 예상밖의 결과를 종종 만들어낸다.

이것이 Feature Engineering의 위력이고, 데이터과학자가 절대 Feature Engineering을 버릴 수 없는 이유이다.

그래서 Feature Engineering 를 “Black Art” 혹은 “Black Magic”이라고도 이야기한다. Feature Engineering을 왜 이런 단어들을 써서 표현하는지는 조금만 생각해보면 바로 알 수 있다.

눈치빠른 분들은, 그렇다면 Feature Engineering에 대한 감을 잡을 수 있을 것이다. ^^

어쨌든 머신러닝으로 성공하고 싶은분들은 알고리즘보다 Feature Engineering을 열심히 공부하는 것이 훨씬 더 머신러닝 인생에 도움이 될 것이다.

 

가고 싶지 않았던 길, Feature Engineering

 

Feature Engineering에 Engineering이라는 단어가 들어가 있어 뭔가 대단히 과학적이고, 논리적인 접근을 할 것 같은데, 실상은 그렇지 않다. 한마디로 요약하면 삽질이라고 할 수 있다.

Feature Engineering이 기본적으로는 삽질이기는 하지만 그렇게 단순무식한 삽질은 아니고, 수학이라는 도구를 가지고 하는 것이기 때문에 나름으로는 고상한 삽질이라 할 수 있으나, 본질이 삽질이라는 것은 결코 변하지 않는다.

삽질은 많은 인내와 시간 그리고 꼼꼼한 기록을 요구하기 때문에 결코 달갑지 않은 작업이다.

사실 처음에 Deep Learning에 많은 관심이 갔던 이유도 이러한 삽질, 즉 Feature Engineering을 피할 수 있어서 였는데, 결국 마주하고 말았다.

고민고민하다가 내가 원하는 목표의 달성을 위해서는 결국 Feature Engineering이라는 고난의 길을 가는 것으로 결심했다.

말이 좋아 Feature Engineering이지, 예측력이 높은 변수를 찾아내거나, 변환하거나, 혹은 새롭게 만들어내는등 다양한 종류의 삽질을 해야하고, 그 삽질이 언제 끝날지도 알 수 없는, 한마디로 미지의 동굴을 탐사하는 것과 유사하다.

더욱이 내가 다루는 데이터는 난이도가 높은 Random Data이기 때문에, 어쩌면 시작부터 잘못되었는지 모르겠지만 다른 방도가 없어서 Feature Engineering을 시작했다.

 

user-gravatar
안 명호

어느 날 알게 된 머신러닝에 흠뻑 빠져 그동안 애지중지하던 클라우드를 버리고 머신러닝으로 전향하였다. 이제 더는 다른 기술은 관심을 두지 않고 머신러닝 한길만으로 정했기에 머신러닝을 공부하며 어려운 수식들을 다시 보느라 고생하고 있지만, 하루하루 배워가는 지식에 행복해하며 지내고 있다.

No Comments

Post a Comment

Comment
Name
Email
Website