
머신러닝을 공부하면서 처음에는 “XGBoost가 좋다더라”, “딥러닝을 쓰면 성능이 높아진다” 같은 모델 이야기에만 집중했었습니다.
그런데 실제 데이터를 다루다 보니, 모델 선택보다 훨씬 중요한 게 있다는 걸 알게 됐습니다.
바로 피처 엔지니어링(Feature Engineering)입니다.
피처 엔지니어링이란?
피처 엔지니어링은 원시(raw) 데이터를 모델이 학습하기 좋게 변환하고, 새로운 의미 있는 변수를 만들어내는 과정입니다.
데이터를 그냥 넣는다고 해서 좋은 결과가 나오는 게 아니라, 모델이 패턴을 잘 잡아낼 수 있도록 데이터를 번역해주는 역할이라고 보면 됩니다.
예를 들어, 날짜 데이터를 그냥 숫자 “2024-09-18”로 쓰기보다는 “요일=수요일, 분기=3분기, 주말 여부=아님”으로 바꿔주면 훨씬 더 직관적인 정보가 됩니다.
왜 중요한가?
- 성능 차이: 같은 모델이라도 어떤 피처를 쓰느냐에 따라 정확도가 크게 달라집니다.
- 해석 가능성: 단순히 “잘 맞춘다”가 아니라 “왜 맞췄는가”를 보여주기도 합니다.
- 실무 적합성: 현실의 데이터는 깨끗하지 않고, 맥락을 반영하지 않으면 모델이 헛도는 경우가 많습니다.
저도 개인 프로젝트에서 로그 데이터를 다뤄봤는데, 원시 이벤트 로그를 그냥 쓰는 것보다 “최근 7일간 접속 횟수”, “마지막 접속 후 경과 시간” 같은 파생 변수를 만들었을 때 예측 성능이 훨씬 좋아졌던 경험이 있습니다.
주요 기법 정리
1. 범주형 데이터 처리
- 원-핫 인코딩(One-Hot Encoding): 카테고리를 0/1 벡터로 변환. 단순하지만 차원이 늘어나는 문제가 있습니다.
- 임베딩(Embedding): 사용자 ID나 제품 코드처럼 값이 많은 범주형 변수는 저차원 벡터로 임베딩하는 게 효율적입니다. 추천 시스템에서 많이 씁니다.
2. 시계열 데이터 피처화
- 날짜/시간 변수를 요일, 주말 여부, 월, 분기 같은 파생 변수로 쪼개기
- 이동 평균, 변화율, 누적 합 같은 통계 피처 추가
- 예: 웹 트래픽 분석에서 단순 “방문 수”보다 “7일 이동 평균 방문 수”를 쓰면 계절성이 잘 드러납니다.
3. 텍스트 데이터 처리
- TF-IDF: 단어의 중요도를 반영해 숫자 벡터로 변환
- n-gram: 단어 조합(예: “인공지능 모델”)까지 고려
- 사전학습 임베딩: Word2Vec, BERT 임베딩을 사용해 문장의 의미까지 반영
4. 수치형 데이터 변환
- 스케일링: StandardScaler, MinMaxScaler 같은 방법으로 값의 크기 차이를 줄임
- 로그 변환: 지출 금액처럼 분포가 치우친 데이터를 안정화
- 다항식 피처: 단순 “x”만 쓰지 않고 “x², x³” 같은 비선형 패턴 반영
5. 도메인 지식 활용
이 부분이 사실 제일 재미있고, 또 분석가의 실력을 보여주는 영역입니다.
- 헬스케어: 키, 몸무게를 따로 쓰는 대신 BMI를 파생 변수로 만듦
- 금융: 거래 횟수, 평균 지출액 → “소비 성향 점수” 같은 지표로 가공
- 서비스 로그: 단순 로그인 횟수보다 “연속 로그인 일수”, “최근 이탈 여부” 같은 피처가 더 예측력이 좋음
실제 사례
- 이커머스: 단순히 “구매 여부(Yes/No)” 대신 “최근 30일 구매 횟수”, “구매 주기”를 피처로 추가하면 충성 고객 예측 정확도가 올라갑니다.
- 헬스케어: 환자 데이터를 그대로 쓰는 것보다, “나이 그룹”, “BMI”, “질병 위험 점수” 같은 파생 변수가 진단 모델에 더 효과적이었습니다.
- 금융: 계좌 잔액보다 “최근 7일 거래 횟수”나 “이상 지출 패턴 여부”가 이상 거래 탐지에 더 도움이 됩니다.
요약
- 피처 엔지니어링은 원시 데이터를 모델이 이해할 수 있는 언어로 바꿔주는 과정이다.
- 단순한 전처리를 넘어서, 새로운 변수 설계 자체가 모델 성능을 좌우한다.
- 도메인 지식을 녹여낸 파생 변수가 있을 때, 데이터 분석은 훨씬 강력해진다.
결국, “좋은 모델”보다 “좋은 데이터 표현”이 더 큰 차이를 만들어냅니다. 그래서 앞으로도 모델링 공부만큼이나, 피처를 어떻게 만들지 계속 고민하고 정리해 나가야겠다고 생각합니다.
피처 엔지니어링은 모델보다 덜 화려해 보일 수 있지만, 실제 프로젝트에선 성능과 인사이트를 동시에 책임지는 핵심 과정입니다.
제가 분석했던 데이터 중에서도, 복잡한 모델을 바꾸는 것보다 파생 변수를 새로 설계했을 때 성능이 더 크게 개선된 적이 많았습니다.
결국 좋은 분석가는 데이터를 잘 이해하고, 거기서 의미 있는 표현을 뽑아낼 줄 아는 사람이라는 생각이 듭니다.
'프로그래밍 > 기술' 카테고리의 다른 글
| 데이터 품질 관리: 좋은 데이터의 기준 (0) | 2025.09.23 |
|---|---|
| 데이터 시각화와 스토리텔링 (0) | 2025.09.22 |
| 시계열 데이터 분석: 시간에 따라 변하는 패턴을 분석 (0) | 2025.09.18 |
| A/B 테스트: 데이터 기반 의사결정의 시작 (0) | 2025.09.17 |
| Explainable AI(XAI): 왜 AI의 ‘설명’이 중요한가 (0) | 2025.09.05 |

데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!