Feature Engineering 이란 말 그대로 feature들을 잘 다듬고, 잘 제거하고, 잘 생성하는 engineering을 통해 주어진 데이터를 의사결정에 도움이 되도록 더욱 적절하게 만들어보는 일입니다.
주어진 데이터가 얼마나 적절하게 engineering 되었는지에 따라 의사결정의 규칙이 달라지며,
이는 모델 제작 난이도를 좌우합니다.
머신러닝에서의 feature engineering은 속된 말로 인력을 갈아서(?) 완성됩니다.
거의 모든 일이 수작업이기 때문에 불상사가 일어나기도 합니다.
사람이 오랜 시간 고민을 거쳐 조정한 feature들은 설명이 용이합니다.
당연합니다, 피같은 시간을 들여 직접 고민하고 결정한 것들이니까요.
단, 그 설명력은 성능이 망하지 않는다는 전제 하에서만 유효하겠지요.
성능이 망한다면? 아무리 오랜 고민을 거쳤다 한들 해당 feature들은 설명력을 잃습니다.
다음으로, 오차를 줄이는 데에 도움이 될지 안 될지 모델링 전까지는 알 수 없습니다.
즉, 해봐야 안다 는 것이 단점입니다.
또한, 만들어낸 feature 중 무엇이 도움이 되는 feature인지 설명하기 어렵습니다.
게다가, 원래는 도움을 주던 feature들이 다른 feature가 추가되는 순간 오히려 성능을 저하시키기도 합니다. 오늘의 아군이 내일의 적이 되는 것입니다.
무엇보다도, 충분한 개수의 특징을 제거/생성/수정한 게 맞는지 알기가 어렵습니다.
사람의 주관적인 판단과 기계의 판단 사이에는 괴리가 있지요.
사람 입장에선 충분해보여도 기계 입장에선 우주먼지 한 톨일 수 있습니다.
마지막으로, 우리가 나름의 기준을 세워 수많은 새로운 feature들을 만들었다고 합시다.
이런 경우 너무 많은 feature를 생성한 나머지 모든 feature 하나하나를 설명하기엔 연결고리가 너무 복잡해 설명이 지저분해집니다.
그렇다면, 좋은 변수란 어떤 것들일까요?
좋은 변수들은 오차를 줄여주고, 예측률을 높여 성능을 높여줍니다.
또한, 각 변수 하나하나를 설명하는 일이 용이합니다. 분명한 특징을 가지고 있으니까요.
그리고 모델링을 위한 충분한 개수의 feature를 가지고 있을 때,
우리는 그것들을 좋은 변수들이라고 말할 수 있습니다.
자, 그래서 좋은 변수들은 어떻게 뽑아야 하냐고요?
사람만의 힘으로 최적의 변수들을 뽑아내기란 쉬운 일이 아닙니다.
대신, Deep Learning(딥러닝)이 그 일을 대신 해줄 수 있지요.
feature의 양을 조절그렇다면, 딥러닝이 특히 빛을 발할 때는 언제일까요?
딥러닝은 사람이 다루기 어려운, 정제가 어렵고 양이 방대한 고차원 데이터를 다룰 때 용이합니다. (ex. CV)
우선, 이미 잘 정제된 데이터를 Tabular Data("정형 데이터")라고 합니다.
대표적인 예로 excel, csv 파일 등등이 있지요.
정형 데이터의 경우 보통 데이터 양이 많지 않으며, 사람이 feature engineering을 진행할 만한 데이터들도 꽤 많습니다.
그러나 이와 반대되는 비정형 데이터들의 경우는 보통 데이터 양이 압도적으로 많으며, 사람이 직접 다루기가 매우 어렵기 때문에 딥러닝에 맡기는 것이 현명합니다.
즉, 딥러닝은 이미 잘 정제된 데이터보다는 비정형 데이터를 다루기에 적합합니다.