개발 창고/AI

Feature Engineering이란? 머신러닝 성능을 높이는 핵심 기술!

Royzero 2025. 6. 29. 22:00
반응형

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은 데이터의 가치를 높이는 과정이며, 실제 프로젝트 성능 향상에 가장 결정적인 역할을 합니다.

반응형