반응형
Feature Engineering이란?
Feature Engineering(피처 엔지니어링)은 머신러닝에서 모델이 더 잘 학습할 수 있도록 입력 데이터를 가공하고 변형하는 작업입니다.
모델 자체보다도 피처가 얼마나 잘 설계되었느냐가 성능을 좌우합니다.
예시로 쉽게 이해하기
예를 들어 다음과 같은 고객 데이터가 있다고 해볼게요.
고객ID | 생년월일 | 최근구매일 | 총구매횟수 | 성별 |
---|---|---|---|---|
001 | 1990-05-01 | 2025-06-20 | 10 | 남 |
002 | 2000-12-10 | 2025-06-15 | 3 | 여 |
이 데이터에서 쓸모 있는 피처를 만들기 위해 할 수 있는 작업은?
- 생년월일 → 나이 변환
- 최근구매일 → 최근 구매로부터 며칠 지났는지 계산
- 성별 → 숫자형으로 인코딩 (예: 남=0, 여=1)
실습 예제 (Python + pandas)
import pandas as pd
from datetime import datetime
# 원본 데이터
df = pd.DataFrame({
'birth': ['1990-05-01', '2000-12-10'],
'last_purchase': ['2025-06-20', '2025-06-15'],
'purchase_count': [10, 3],
'gender': ['남', '여']
})
# 현재 날짜 기준
today = pd.to_datetime('2025-06-27')
# Feature Engineering 적용
df['birth'] = pd.to_datetime(df['birth'])
df['age'] = today.year - df['birth'].dt.year
df['last_purchase'] = pd.to_datetime(df['last_purchase'])
df['days_since_last_purchase'] = (today - df['last_purchase']).dt.days
# 성별 인코딩
df['gender_encoded'] = df['gender'].map({'남': 0, '여': 1})
# 결과 확인
print(df[['age', 'days_since_last_purchase', 'purchase_count', 'gender_encoded']])
출력 결과
age days_since_last_purchase purchase_count gender_encoded
0 35 7 10 0
1 25 12 3 1
이처럼 가공된 데이터를 머신러닝 모델의 입력값으로 활용하면, 모델은 더 잘 학습할 수 있게 됩니다.
실제 적용 사례
1. 타이타닉 생존자 예측
캐글(Kaggle)에서 유명한 타이타닉 예측 경진대회에서는 다음과 같은 피처 엔지니어링이 성능 향상에 매우 중요했어요.
Name
에서 Mr, Mrs, Miss 등 호칭(title) 추출 → 사회적 지위 파악FamilySize
=SibSp
+Parch
+ 1 → 가족 규모 계산Cabin
유무 → 상류층 여부를 암시할 수 있음
2. 금융 사기 탐지
신용카드 사기 탐지 시스템에서는 단순 거래 금액 외에도 다음과 같은 파생 피처가 성능을 높였습니다.
- 하루 거래 횟수
- 이전 거래와의 시간 간격
- 거래 금액의 평소 패턴 대비 편차
정리
작업 내용 | 설명 |
---|---|
파생 변수 만들기 | 나이, 구매 간격 등 |
범주형 변수 인코딩 | 성별, 지역, 직업 등 |
스케일 조정 | 구매 금액, 거리 등 |
결측값 처리 | 평균, 중앙값, 또는 제거 |
노이즈 제거 및 이상치 처리 | 잘못된 값 정제 |
Feature Engineering은 데이터의 가치를 높이는 과정이며, 실제 프로젝트 성능 향상에 가장 결정적인 역할을 합니다.
반응형
'개발 창고 > AI' 카테고리의 다른 글
LangChain이 뭐예요? ChatGPT를 내 서비스에 붙이는 프레임워크! (1) | 2025.07.01 |
---|---|
AutoML이란? 파이썬 예제로 배우는 머신러닝 자동화의 모든 것 (2) | 2025.06.30 |
파이썬으로 배우는 탐색적 데이터 분석 실전 가이드 (3) | 2025.06.28 |
파이썬으로 머신러닝 시작하기: Scikit-Learn 핵심 정리 (2) | 2025.06.27 |
복잡한 모델을 간단하게: Lasso Regression의 모든 것 (2) | 2025.06.26 |