Feature Engineering
❓Feature Engineering의 정의
feature engineering은 머신러닝 알고리즘을 작동하기 위해 데이터에 대한 도메인 지식을 활용하여 특징(Feature)을 만들어내는 과정이다.
❓Feature Engineering 필요한 이유
머신러닝 학습에 있어 항상 완벽한, 이상적인 학습 결과를 기대할 수 없다. 내가 가지고 있는 데이터가 방대하다해도 그 데이터를 모두 결과 도출에 사용하면 좋은 결과를 보여줄 것 같지만 오히려 잘못된 결과를 도출하는 경우가 많다.
즉, 머신 러닝의 성능은 입력하는 데이터에 굉장히 의존적이라고 할 수 있다. 그렇기에 데이터에서 학습에 필요할 것 같은 적잘한 feature들을 찾는 과정을 거치고 그러한 feature들을 이용해 연관된 새로운 feature를 생성한다면 학습에 도움이 될 것이라고 생각한다.
💡내 생각은?
처음 Feature Engineering에 대해 공부할 때에는 이게 굳이 필요해? 라는 생각이 강했다. 왜냐하면 결국 기존에 학습하는 특징들이 연관된 새로운 특징을 만들어 학습하는 것인데 도움이 되는게 맞나?라는 생각이 강했기 때문이다.
그런데 최근 다시 공부를 시작하면서 BMI에 Feature Engineering을 비유한 것을 보고'아 이래서 필요하구나!' 하고 깨우치게 되었다.
BMI지수를 계산하는 것에는 몸무게와 신장이라는 정보가 필요하다. 만약 내가 식단, 운동 등을 추천해주는 어플을 만든다고 생각해보자. 그렇다면 분명히 키와 몸무게를 입력받는 일이 있을 것이다. 그리고 이 과정에서 정말 단순히 키와 몸무게 정보로만 학습한 머신러닝과 키와 몸무게를 BMI로 환산해 학습한 머신러닝이 있다고 생각해보자. 키와 몸무게만으로 학습한 경우에는 분명히 잘못된 학습이 있었을 확률이 높을 것이다.(물론 개인적인 생각이다.. 이해하는데에만 상상하자) 키도크고 무게도 어느정도 있는 사람이지만 BMI지수에 상관없이 무게가 많이 나간다고 많은 운동량과 적은 식사를 추천해준다는 등의 문제가 생길 수 있을 것이다. 하지만 BMI지수를 계산해서 학습한 경우 키와 몸무게를 모두 고려한 수치이기 때문에 그에 맞는 알맞은 운동량과 식사량을 추천해 줄 수 있을 것이다.