특징 공학 (Feature Engineering)
쉽게 풀면
요리를 할 때 재료를 씻지도, 썰지도 않은 채 통째로 냄비에 넣으면 맛있는 음식이 나오기 어렵습니다. 재료를 손질하고 알맞은 크기로 썰어야 요리가 잘 됩니다. 특징 공학도 마찬가지입니다. 원본 데이터(재료)를 그대로 모델에 넣는 대신, "날짜"에서 요일이나 공휴일 여부를 뽑아내거나 여러 수치를 조합해 새로운 값을 만드는 등, 모델이 패턴을 더 쉽게 찾을 수 있도록 데이터를 손질하는 과정입니다.
왜 중요한가
아무리 정교한 모델을 쓰더라도 입력되는 데이터의 질이 낮으면 좋은 성능을 내기 어렵기 때문에, 특징 공학은 실무 머신러닝 프로젝트와 응용 논문에서 모델 구조 못지않게 중요한 요소로 다뤄집니다. 특히 정형 데이터(테이블 형태 데이터)를 다루는 금융, 의료, 산업 예측 분야의 연구에서는 딥러닝보다도 도메인 지식을 반영한 특징 설계가 성능을 좌우하는 경우가 많아, 어떤 특징을 어떻게 만들었는지가 논문의 기여로 강조되곤 합니다.
논문에서는 이렇게 쓰입니다
이 문장은 빠진 값을 채우고 범주형 데이터를 원-핫 인코딩으로 변환하는 등 데이터를 정성껏 다듬은 결과, 모델의 성능이 눈에 띄게 좋아졌다는 뜻입니다.
이 문장은 금융 분야에서 원본 거래 기록을 그대로 쓰는 대신, 도메인 지식을 바탕으로 의미 있는 요약 지표를 새로 만들어 모델에 넣었더니 예측력이 좋아졌다는 뜻입니다.
이 문장은 제조업 설비 예지보전 연구에서 시간에 따라 변하는 센서 신호로부터 통계적·주파수적 특징을 뽑아내는 특징 공학이 고장 탐지 성능을 높이는 데 기여했다는 뜻입니다.
조금 더 깊게 보면
특징 공학은 크게 결측치 처리나 스케일 조정 같은 전처리, 범주형 변수를 수치로 바꾸는 인코딩, 그리고 기존 변수를 조합해 새로운 의미를 담는 파생 변수 생성으로 나눌 수 있습니다. 어떤 특징이 실제로 모델 성능에 기여하는지를 판단할 때는 특징 중요도(feature importance)나 상관관계 분석 같은 방법이 함께 쓰이며, 지나치게 많은 특징을 사용하면 계산 비용이 커지고 과적합 위험도 높아지기 때문에 특징 선택(feature selection) 단계를 거치는 경우가 많습니다.
주의할 점
특징을 무작정 많이 만들어 넣으면 모델이 훈련 데이터의 잡음까지 외워버리는 과적합이 발생하기 쉽습니다. 또한 최근 딥러닝에서는 사람이 특징을 직접 설계하는 대신 모델이 데이터로부터 스스로 유용한 표현을 학습하는 표현 학습(representation learning) 방식으로 특징 공학의 역할이 점점 대체되고 있습니다.