OkBublewrap

머신러닝 프로젝트 분석 본문

Python/학습용

머신러닝 프로젝트 분석

옥뽁뽁 2025. 1. 21. 23:14

데이터 분석(EDA)에 충분한 시간 투자

  • 데이터 분포 및 특성 파악
    • 수치형 히스토그램, 상자그림, 범주형 막대차트 등으로 전반적인 분포, 이상치, 결측치 파악합니다.
    • Target(레이블)과의 상관관계도 탐색하여 유의미한 패턴을 찾습니다.
  • 문제 정의 재확인
    • 데이터의 컬럼이 실제로 무엇을 의미하는지(도메인), 회귀, 분류, 순위 예측인지 확인
    • 해커톤 문제의 목표(예 : Fraud 검출, 매출 예측, 주가 예측)에 따라 어떤 지표가 중요한지도 점검
  • 파생 변수(Feature Engineering) 아이디어 발굴
    • 날짜/시간 피처라면 요일, 공휴일, 요일 간격 등을 추출 가능
    • 범주형 피처라면 교차 피처(두 범주를 합친 변수)나 빈도 인코딩 시도
    • 단순 EDA에서 상관관계가 높은 피처를 조합/변환해볼 수 있습니다.

 

적절한 전처리와 피처 엔지니어링

  • 결측치 처리
    • 단순히 평균/중앙값으로 채우거나, 범주형이면 별도 카테고리 NaN으로 둬서 정보 손실을 방지
    • 결측치가 매우 많으면 삭제보다 다른 보완책(MICE, KNN Imputer, Iterative Imputer)을 고려해 볼 수 있음.
  • 카테고리 인코딩
    • 레이블 인코딩, 원핫 인코딩(One-Hot), 빈도 인코딩(Frequency Encoding), 타겟 인코딩(Target Encoding) 등
    • 범주 수 가 매우 많은 경우(High Cardinality), 원핫 인코딩은 차원이 폭발하므로 빈도 인코딩이나 타겟 인코딩을 시도해볼 수 있음.
  • 스케일링
    • SVM, KNN, 로지스틱 회귀 등 거리, 선형성에 민감한 모델에는 StandardScaler, MinMaxScaler 등을 적용
    • 트리 기반(XGBoost, Random Forest등)은 비교적 덜 민감하지만, 극단적 이상치가 있다면 RobustScaler 활용
  • 피처 선택  / 차원 축소
    • 피처가 너무 많은 경우, 상관관계가 낮거나 정보량이 적은 피처를 제거해볼 수 있음.
    • PCA, UMAP, t-SNE등 차원 축소 기법을 시도해 시각화나 모델 단순화를 유도할 수도 있음.

 

여러 모델 시도 및 앙상블

  • 단일 모델 비교
    • 로지스틱, SVM, 랜덤 포레스트, XGBoost, LightGBM, CatBoost 등
    • 초기에 베이스라인을 만든 뒤, 각 모델로 교차 검증(CV) 성능을 비교합니다
    • 불균형 데이터라면 F1, ROC-AUC 등을 우선시할 수도 있음
  • 앙상블(Stacking, Voting, Blending)
    • 서로 다른 알고리즘의 장점을 결합해 분산감소를 기대
    • ex) XGBoost + RandomForest + Logistic -> Sotf Voting
    • 더 나아가 Stacking(메타 모델)에 Out-of-Fold 예측을 피처로 넣어 최적화할 수도 있음.
  • 모델 해석
    • 최종 모델 중요도(Feature Importance) 등을 확인해, 모델이 어떤 피처를 많이 사용했는지 살펴볼수 있습니다.
    • 해커톤에서 도메인 인사이트나 왜 이 모델이 잘 작동했는지를 설명할 수 있으면 가산점이 있기도 합니다.

 

파라미터 튜닝은 체계적으로

  • GridSearchCV & RandomizedSearchCV
    • 모델별 핵심 파라미터(n_estimators, max_depth, C, gamma 등)의 후보 범위를 설정하고 교차 검증 점수를 보고 최적값을 찾습니다.
    • 파라미터 후보가 너무 많다면 RandomizedSearchCV나 Bayesian Optimization(Optuna, Hyperopt 등) 같은 방법으로 계산량을 줄미녀서 탐색 가능합니다.
  • 과적합 방지
    • 학습률을 낮추거나(부스팅 모델) 규제 파라미터(L1, L2, alpha, lambda 등)을 늘려서 모델 복잡도를 제어
    • Random Forest/XGBoost 계열에서는 early_stopping 또는 교차 검증으로 적절한 에폭 결정
  • 성능 검증
    • K-Fold 교차 검증, StratifiedKFold 등으로 편향된 데이터 분할을 방지하고, 안정적인 점수 추정
    • 해커톤 목표 지표(Accuracy, F1, RMSE 등)에 맞춰 스코어링 설정.

 

교차 검증 & 올바른 평가 지표

 

단순 Train/Test Split의 함정

  • 해커톤 초반엔 베이스라인 위해 Train/Test로 나눠 점수를 볼 수 있지만,
  • 최적화 과정에서는 K-Fold 교차 검증을 쓰면 모든 데이터를 효율적으로 써서 과적합을 줄이고 평균적인 성능을 파악할 수 있음.

올바른 지표 선택

  • 불균형 데이터에서 Accuracy는 함정(대다수 클래스)
  • F1, Precision-Recall AUC, ROC-AUC, Weighted metrics 등 문제 상황에 맞는 지표 선택이 중요
  • 해커톤 규칙을 정확히 파악해 맞춤형으로 최적화

 

'Python > 학습용' 카테고리의 다른 글

[ML] 비지도학습  (0) 2025.01.29
Python-SQL 연결(데이터 추출)  (0) 2025.01.25
Tableau-tabpy 사용  (0) 2023.09.03
추천시스템 - 아이템 기반  (0) 2023.04.12
추천시스템 - 컨텐츠 기반  (0) 2023.04.11