머신러닝 프로젝트의 생명주기, EDA, Feature Engineering

머신러닝 프로젝트의 생명주기는 머신러닝 워크플로우 즉, 데이터를 준비하고 모델을 개발하며 성능을 평가하고 배포하는 전체 과정입니다. 워크플로우를 단계별로 정리하면 다음과 같으며, 이 모든 단계는 반복적이며, 새 데이터를 수집하거나 성능 개선이 필요할 때 다시 돌아가 진행합니다.


1. 문제 정의 (Define the Problem)

목적: 해결하고자 하는 문제를 명확히 정의하고 목표를 설정합니다.

  • 예: 고객 이탈 예측, 이미지 분류, 매출 예측.
  • 출력:
    • 문제 유형 정의 (회귀, 분류, 군집 등).
    • 평가 지표 설정 (정확도, F1 스코어, RMSE 등).

2. 데이터 수집 (Data Collection)

목적: 문제 해결에 필요한 데이터를 수집합니다.

  • 방법:
    • 데이터베이스, 웹 스크래핑, API 호출.
    • 기존 데이터셋 활용.
  • 출력:
    • 데이터 파일(csv, JSON 등).

3. 데이터 전처리 (Data Preprocessing)

목적: 모델 학습에 적합한 형태로 데이터를 준비합니다.

  • 작업:
    • 결측치 처리 (삭제, 대체).
    • 이상치 처리.
    • 스케일링 및 인코딩.
    • 필요 없는 피처 제거.
  • 출력:
    • 정제된 데이터셋.

4. 탐색적 데이터 분석 (EDA: Exploratory Data Analysis)

목적: 데이터의 특징과 패턴을 이해하고 문제와 관련된 중요한 인사이트를 발견합니다.

  • 방법:
    • 시각화(히스토그램, 상관관계, 박스플롯).
    • 통계 분석(평균, 분산, 상관계수).
  • 출력:
    • 데이터의 분포와 관계에 대한 인사이트.

5. 피처 엔지니어링 (Feature Engineering)

목적: 모델 성능을 높이기 위해 데이터를 변환하고 새로운 피처를 생성합니다.

  • 작업:
    • 중요 변수 선택.
    • 변수 변환 (로그 변환, 다항식 생성 등).
    • 차원 축소 (PCA).
  • 출력:
    • 모델 학습에 적합한 최적의 피처 셋.

6. 모델 선택 및 학습 (Model Selection & Training)

목적: 문제 유형에 적합한 머신러닝 알고리즘을 선택하고 데이터를 학습합니다.

  • 방법:
    • 알고리즘 선택 (예: 랜덤포레스트, XGBoost, SVM).
    • 하이퍼파라미터 조정.
  • 출력:
    • 학습된 모델.

7. 모델 평가 (Model Evaluation)

목적: 학습된 모델의 성능을 평가하고 개선점을 발견합니다.

  • 방법:
    • 테스트 데이터 사용.
    • 교차 검증 (Cross-Validation).
    • 평가 지표 계산 (MAE, RMSE, Precision, Recall 등).
  • 출력:
    • 성능 보고서와 개선 방향.

8. 모델 튜닝 (Model Tuning)

목적: 모델 성능을 최대화하기 위해 하이퍼파라미터를 최적화합니다.

  • 방법:
    • 그리드 서치 (Grid Search).
    • 랜덤 서치 (Random Search).
    • 베이지안 최적화.
  • 출력:
    • 최적화된 모델.

9. 배포 (Deployment)

목적: 학습된 모델을 실제 환경에 적용하여 예측값을 제공합니다.

  • 방법:
    • API 배포(FastAPI, Flask).
    • 클라우드 서비스 활용(AWS, GCP, Azure).
  • 출력:
    • 운영 중인 머신러닝 모델.

10. 모니터링 및 유지보수 (Monitoring & Maintenance)

목적: 배포된 모델의 성능을 지속적으로 추적하고 개선합니다.

  • 작업:
    • 실제 예측값과 결과 비교.
    • 데이터 드리프트 감지.
    • 모델 업데이트.
  • 출력:
    • 성능 보고서와 업데이트된 모델.

Feature engineering vs. EDA(Exploratory Data Analysis)**

Feature engineering과 EDA(Exploratory Data Analysis)는 데이터 분석 및 머신러닝 워크플로우에서 중요한 단계지만, 다른 목적과 프로세스를 가지고 있습니다. 다음은 두 개념의 차이점과 역할입니다:

(1) Feature Engineering

목적:
모델 성능을 향상시키기 위해 데이터셋의 특성을 변형, 생성 또는 선택하는 과정.

  • 핵심 활동:

    • 새로운 피처(변수) 생성
    • 예: 날짜를 기반으로 요일, , 분기와 같은 새로운 변수를 만듦.
    • 피처 변환
    • 로그 변환, 스케일링(표준화), 정규화 등.
    • 피처 선택
    • 상관관계 분석, 중요도 분석 등을 통해 모델에 유용한 변수만 선택.
    • 결측값 처리
    • 평균/중앙값 대체, 특정 그룹 기준 대체, 혹은 새로운 피처로 생성.
    • 원-핫 인코딩, 임베딩 등 범주형 변수 변환.
  • 결과물:

    • 머신러닝 모델 학습에 적합한 데이터셋.
  • 주요 질문:

    • 모델 성능에 어떤 피처가 가장 중요한가?
    • 데이터를 어떻게 변형하면 모델이 더 잘 학습할까?

(2) EDA - Exploratory Data Analysis

목적:
데이터를 이해하고 문제에 대한 초기 가설을 세우기 위한 탐색적 분석.

  • 핵심 활동:

    • 데이터의 분포 확인
    • 히스토그램, 박스플롯, 커널 밀도 추정(KDE) 등 시각화를 통해 데이터 패턴 파악.
    • 데이터 품질 점검
    • 결측값, 이상치 탐지 및 분석.
    • 변수 간 관계 탐색
    • 상관계수, 산점도, 그룹별 통계 등.
    • 통계적 요약
    • 평균, 중앙값, 표준편차, 최소/최대값 등의 기초 통계량 계산.
    • 데이터 이해를 위한 시각화
    • 페어플롯, heatmap 등 다양한 시각화 기법 활용.
  • 결과물:

    • 데이터의 구조, 특성, 패턴에 대한 인사이트.
    • 모델링 전 데이터를 정제하고 피처를 생성할 아이디어.
  • 주요 질문:

    • 데이터셋에 어떤 패턴이나 문제(결측치, 이상치 등)가 있는가?
    • 변수 간의 상호작용은 어떠한가?

주요 차이점

특징 Feature Engineering EDA
목적 모델 성능 최적화를 위한 데이터 준비. 데이터를 이해하고 가설을 세우기 위한 탐색.
활동 시점 데이터 탐색 후, 모델링 과정 중이나 직전에 수행. 데이터 파이프라인의 초기에 수행.
중점 피처 생성, 선택, 변환. 데이터 구조, 분포, 관계 분석.
도구/기법 스케일링, 인코딩, 결측치 대체, PCA 등. 시각화(Matplotlib, Seaborn), 기초 통계, 상관분석.
결과물 머신러닝 알고리즘이 처리할 수 있는 최적의 데이터셋. 데이터의 패턴, 문제, 관계에 대한 초기 이해.

요약하면

  • EDA는 데이터의 "문제"를 이해하고, 데이터가 제공하는 "가능성"을 탐색하는 과정입니다.
  • Feature Engineering은 데이터를 "문제 해결"에 활용하기 위한 준비 과정입니다.
  • 일반적으로 EDA → Feature Engineering → 모델링 순으로 진행됩니다.

스케일링 vs. 인코딩 vs. 결측치 대체 vs. PCA

(1) 스케일링 (Scaling)

정의:
스케일링은 데이터를 특정 범위로 변환하여 모델 학습 과정에서 변수들의 크기 차이에 의한 영향을 줄이는 과정입니다. 특히, 거리 기반 알고리즘(k-최근접 이웃, SVM, K-평균 등)이나 기울기 기반 알고리즘(로지스틱 회귀, 신경망 등)에 중요합니다.

종류:

  1. 표준화(Standardization):

    • 평균을 0, 표준편차를 1로 맞추는 변환.
    • 데이터의 분포가 정규분포를 따르지 않아도 적용 가능.
    • 공식:
      [
      z = \frac{x - \mu}{\sigma}
      ]
      여기서 (x)는 값, (\mu)는 평균, (\sigma)는 표준편차.
    • 사용 예: 선형 회귀, 로지스틱 회귀, SVM.
  2. 정규화(Min-Max Scaling):

    • 데이터를 [0, 1] 범위로 변환.
    • 최소값과 최대값의 차이를 기준으로 변환.
    • 공식:
      [
      x' = \frac{x - \text{min}(x)}{\text{max}(x) - \text{min}(x)}
      ]
    • 사용 예: 신경망, KNN.
  3. 로버스트 스케일링(Robust Scaling):

    • 이상치(outliers)에 민감하지 않도록 중앙값(median)과 IQR(사분위수 범위)을 사용.
    • 공식:
      [
      x' = \frac{x - \text{median}(x)}{\text{IQR}}
      ]
    • 사용 예: 이상치가 많은 데이터셋.

왜 중요한가?

  • 스케일이 다른 피처를 동일한 범위로 맞추지 않으면, 특정 피처가 모델에 과도하게 영향을 미칠 수 있습니다.

(2) 인코딩 (Encoding)

정의:
범주형 데이터를 모델이 이해할 수 있는 숫자 형태로 변환하는 과정.

종류:

  1. 원-핫 인코딩 (One-Hot Encoding):

    • 각 범주를 이진 벡터로 변환.
    • 예:
      색상: 빨강, 초록, 파랑  
      → 빨강: [1, 0, 0], 초록: [0, 1, 0], 파랑: [0, 0, 1]  
    • 장점: 범주 간 순서를 암시하지 않음.
    • 단점: 범주가 많아질수록 메모리 사용량이 증가(차원의 저주).
  2. 레이블 인코딩 (Label Encoding):

    • 각 범주를 숫자로 매핑.
    • 예:
      색상: 빨강 → 0, 초록 → 1, 파랑 → 2  
    • 장점: 간단하고 빠름.
    • 단점: 숫자가 크기/순서를 암시할 수 있어, 순서가 없는 범주형 데이터에는 부적합.
  3. 타겟 인코딩 (Target Encoding):

    • 각 범주를 타겟 값의 평균으로 변환.
    • 예:
      범주 A → 0.8, 범주 B → 0.6  
  4. 임베딩 (Embedding):

    • 딥러닝에서 범주형 데이터를 저차원 벡터로 학습.
    • 자연어 처리와 같이 고차원 범주 데이터를 다룰 때 유용.

(3) 결측치 대체 (Missing Value Imputation)

정의:
데이터셋에서 누락된 값을 처리하는 방법. 결측치는 모델의 성능에 부정적인 영향을 미칠 수 있으므로 적절히 처리해야 합니다.

처리 방법:

  1. 삭제 (Removal):

    • 결측치가 있는 행(row)이나 열(column)을 제거.
    • 장점: 간단.
    • 단점: 데이터 손실 발생.
  2. 단순 대체 (Simple Imputation):

    • 평균/중앙값/최빈값으로 대체:
      • 수치형: 평균/중앙값 사용.
      • 범주형: 최빈값 사용.
  3. 고급 대체:

    • KNN Imputation:
      • 결측치가 있는 샘플의 k-최근접 이웃을 기반으로 대체.
    • 다중 대체(Multiple Imputation):
      • 결측치를 여러 번 대체해 불확실성을 반영.
    • 회귀 대체:
      • 결측값을 예측하는 회귀 모델 사용.
  4. 특별한 처리:

    • 결측값 자체를 하나의 범주로 간주(‘Unknown’, ‘Missing’ 등).

(4) PCA (Principal Component Analysis)

정의:
고차원 데이터를 저차원으로 축소하여 핵심 정보를 유지하는 차원 축소 기법.

핵심 개념:

  • 데이터의 분산(variance)을 최대한 보존하면서, 상관관계가 있는 변수들을 직교(orthogonal) 축으로 변환.
  • 새롭게 생성된 축(주성분)은 데이터의 가장 중요한 패턴을 나타냄.

작동 원리:

  1. 공분산 행렬 계산:
    데이터의 분산과 변수 간의 상관관계 계산.

  2. 고유값 및 고유벡터 계산:
    공분산 행렬에서 가장 큰 고유값에 대응하는 고유벡터가 주성분이 됨.

  3. 데이터 변환:
    데이터를 새로운 주성분 축으로 투영.

결과:

  • 데이터의 차원을 줄이되, 최대한의 정보(분산)를 유지.
  • 예를 들어, 10개의 변수 중 95% 정보를 유지하는 3개의 주성분만 사용.

장점:

  • 데이터의 노이즈 제거.
  • 시각화(2D, 3D) 가능.
  • 차원을 줄임으로써 계산 속도와 메모리 사용량 감소.

단점:
해석 가능성이 낮아질 수 있음.

  • PCA로 변환된 데이터는 원래 데이터의 의미를 잃을 수 있음.

"데이터의 분산(variance)을 최대한 보존하면서, 상관관계가 있는 변수들을 직교(orthogonal) 축으로 변환한다"는 의미가 뭔지??

이 문장을 쉽게 설명하자면 이렇습니다.!!!

  1. "데이터의 분산을 최대한 보존"

    • 데이터를 보존한다는 건, 데이터가 가진 중요한 정보를 잃지 않겠다는 뜻이에요.
    • 분산(variance)은 데이터가 얼마나 흩어져 있는지를 나타내는데, 분산이 크면 데이터의 특성이 많이 담겨 있다는 뜻이에요.
    • 그래서, 데이터를 줄이더라도 중요한 특징(흩어진 패턴)은 유지하려고 하는 거예요.
  2. "상관관계가 있는 변수들을 직교(orthogonal) 축으로 변환"

    • 데이터에는 서로 비슷한 정보를 담고 있는 변수들이 있을 수 있어요. 예를 들어, 몸무게와 BMI는 서로 밀접한 관계가 있죠.
    • 이런 변수를 각각 따로 봐도 되지만, 더 효율적으로는 이 정보를 한눈에 볼 수 있는 새로운 기준(축)을 만드는 게 좋아요.
    • 직교(orthogonal) 축은 서로 영향을 주지 않는 독립적인 기준이에요.
      • 예를 들어, 우리가 가로축(X)세로축(Y)을 보면 서로 독립적이잖아요.
      • PCA는 이렇게 독립적인 새 기준(축)을 만들어서 데이터의 중복 정보를 없애는 거예요.

비유로 설명하자면~~~

  • 원래 데이터는 큰 짐을 여러 가방에 나눠 담은 상태예요.
  • 그런데 가방마다 비슷한 물건(중복된 정보)이 들어 있다면, 가방 수를 줄이고 더 효율적으로 짐을 담고 싶겠죠.
  • PCA는 이런 중복된 물건(상관관계)을 분석해서, 최소한의 가방(차원)으로, 그리고 더 깔끔하게 물건을 담는 방법이에요.
    결국, 중요한 짐(분산)은 그대로 두면서, 가방(데이터의 차원)을 줄이고 정리한다고 보면 됩니다! 😊

Leave a Comment