1. Feature 엔지니어링의 정의와 목표
- 정의:
- Feature 엔지니어링은 원시 데이터(raw data)를 머신러닝 모델이 효과적으로 학습할 수 있도록 변환하거나 새로운 변수를 생성하는 과정입니다. 단순히 데이터를 입력으로 사용하는 데 그치지 않고, 데이터 속 패턴과 의미를 모델이 잘 활용할 수 있도록 설계하는 작업입니다. 이는 기술적 접근뿐만 아니라 창의성과 도메인 이해가 결합된 "예술과 과학"의 영역으로 볼 수 있습니다.
- 세부 설명: 예를 들어, 숫자 데이터뿐만 아니라 텍스트, 이미지, 시간 시계열 같은 비정형 데이터도 포함됩니다. 산업 현장에서는 이런 데이터가 대부분 정제되지 않은 상태로 주어지기 때문에, Feature 엔지니어링이 필수적입니다.
- 비유: 원석을 다듬어 보석으로 만드는 과정. 좋은 원석(데이터)이 있어도 가공(Feature 엔지니어링)이 부족하면 최종 결과물(모델 성능)이 기대에 미치지 못합니다.
- 산업현장에서의 중요성:
- 산업 데이터는 잡음, 결측값, 비구조적 특성을 가진 경우가 많습니다. 예를 들어, 제조업의 센서 데이터는 기계 고장으로 값이 누락될 수 있고, 이커머스 로그는 고객 행동의 불규칙성을 반영합니다. Feature 엔지니어링은 이런 데이터를 모델이 이해할 수 있는 형태로 바꿔줍니다.
- 실무적 예시: 금융 산업에서 고객의 거래 패턴을 분석할 때 단순히 "거래 금액"만 보는 것이 아니라, "최근 7일간 평균 거래 금액" 같은 변수를 추가해 더 깊은 인사이트를 얻을 수 있습니다.
- 목표:
- 모델 성능 향상: 데이터의 신호(signal)를 강화하고 잡음(noise)을 줄여 예측력을 높입니다.
- 예: 이상치를 제거하거나, 관련 없는 변수를 배제해 모델이 핵심 패턴에 집중하게 함.
- 도메인 지식 반영: 산업별 전문성을 데이터에 녹여냅니다.
- 예: 의료 데이터에서 "혈당 수치"와 "식사 시간"을 결합해 "식후 혈당 변화율"을 계산.
- 효율성: 모델의 계산 복잡도를 줄이고 학습 속도를 개선합니다.
- 예: 변수 간 상관관계가 높은 경우 하나로 통합하거나, 차원 축소를 통해 불필요한 계산을 줄임.
- 세부 고려사항: 목표는 단순히 "좋은 피처"를 만드는 데 그치지 않고, 모델과 비즈니스 목표(예: 비용 절감, 고객 만족도 향상)에 맞게 최적화하는 것입니다.
2. Feature 엔지니어링의 주요 과정과 기법
- 주요 과정:
- Feature 엔지니어링은 크게 세 단계로 나눌 수 있으며, 각 단계는 산업 데이터의 특성을 반영해 진행됩니다.
- 데이터 탐색 및 이해:
- 데이터의 분포, 결측값, 이상치, 상관관계를 분석합니다.
- 세부 설명: 예를 들어, 제조업에서 센서 데이터의 결측값이 특정 시간대에 집중되어 있다면 설비 점검 주기를 반영한 문제일 수 있습니다. 이커머스에서는 고객 행동 로그에서 "장바구니에 담은 시간"과 "구매 완료 시간"의 분포를 통해 구매 결정 패턴을 파악할 수 있습니다.
- 도구와 접근법: 히스토그램, 상자 그림(box plot), 상관 행렬 같은 기본 통계 기법을 활용하거나, 도메인 전문가와 협력해 데이터의 맥락을 이해.
- 변환 및 생성:
- 기존 변수를 변환하거나 새로운 변수를 만듭니다.
- 세부 설명: 단순 변환(예: 로그 변환으로 데이터 분포를 정규화)부터 복잡한 생성(예: 두 변수의 비율 계산)까지 포함됩니다. 시간 데이터에서 "월말 여부"를 추가하거나, 고객 데이터에서 "최근 구매로부터 경과 일수"를 계산하는 식입니다.
- 산업 예시: 물류 산업에서 "배송 소요 시간"을 "거리"와 "교통량"으로 나눠 "단위 거리당 소요 시간"을 생성.
- 선택 및 최적화:
- 모델에 불필요한 변수를 제거하거나 중요한 변수를 강조합니다.
- 세부 설명: 상관관계가 높은 변수는 하나로 통합하거나, 정보 이득(information gain)이 낮은 변수를 제외. 차원 축소 기법(예: PCA, t-SNE)을 사용할 수도 있습니다.
- 실무 고려사항: 변수가 너무 많으면 과적합 위험이 있으므로, 모델 복잡도와 데이터 크기를 고려해 선택해야 합니다.
- 주요 기법:
- 산업 현장에서 자주 활용되는 기법을 세부적으로 살펴보겠습니다.
- 결측값 처리:
- 현실 문제: 센서 고장, 사용자 입력 누락 등으로 발생.
- 방법:
- 평균/중앙값 대체: 단순하지만 도메인 특성을 무시할 수 있음.
- 선형 보간: 시간 시계열 데이터에서 유용(예: 온도 데이터의 누락값을 앞뒤 값으로 채움).
- 도메인 기반 대체: 제조업에서 "설비 정지 시 0으로 간주" 같은 규칙 적용.
- 주의점: 결측값 처리가 모델 결과에 큰 영향을 줄 수 있으므로, 민감도 분석을 병행하는 것이 좋음.
- 범주형 데이터 변환:
- 현실 문제: "제품 카테고리", "지역 코드" 같은 비수치 데이터를 모델에 반영.
- 기법:
- One-hot encoding: 각 범주를 별도 열로 변환(예: "남성/여성" → [1,0] 또는 [0,1]).
- Target encoding: 타겟 변수와의 관계를 반영(예: "카테고리별 평균 구매율"로 변환).
- 산업 예시: 이커머스에서 "검색 키워드"를 타겟 인코딩해 추천 시스템에 활용.
- 장단점: One-hot encoding은 차원이 커질 수 있고, Target encoding은 데이터 누출(leakage) 위험이 있음.
- 스케일링 및 정규화:
- 현실 문제: 변수 간 단위 차이(예: "매출(원)" vs. "클릭 수(회)")로 모델이 왜곡될 수 있음.
- 기법:
- Min-Max Scaling: 0~1로 변환, 이상치에 민감.
- Standardization: 평균 0, 표준편차 1로 변환, 분포 유지에 유리.
- 산업 예시: 금융에서 "대출 금액"과 "상환 횟수"를 스케일링해 신용 모델에 입력.
- 세부 고려사항: 모델 종류에 따라 필요 여부가 다름(예: 트리 기반 모델은 스케일링에 덜 민감).
- 시간 데이터 처리:
- 현실 문제: 시계열 데이터는 패턴 추출이 중요(예: 계절성, 주기성).
- 방법:
- 변수 추출: "요일", "시간대", "주차(week number)" 등.
- 차이 계산: "이벤트 발생 간격" 같은 동적 변수 생성.
- 산업 예시: 헬스케어에서 "진료 후 경과 일수"를 추가해 환자 상태 예측.
- 도전 과제: 비정기적 이벤트(예: 공휴일)는 별도 처리가 필요.
* Grok과 ChatGPT를 활용하여 작성하였습니다.