Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 내일배움캠프
- 티스토리챌린지
- 어쩌다 마케팅
- 웹 스크랩핑
- Cluster
- hackerrank
- 미세먼지
- 스파르타
- 오블완
- 파이썬 머신러닝 완벽 가이드
- 텍스트 분석
- 중회귀모형
- SQL
- 파이썬 머신러닝 완벽가이드
- 회귀분석
- 파이썬 철저 입문
- 프로젝트
- 실전 데이터 분석 프로젝트
- 프로그래머스
- TiL
- MySQL
- 스파르타 코딩
- 내일배움
- R
- 파이썬 철저입문
- 내일배움카드
- harkerrank
- wil
- 파이썬
- 스파르타코딩
Archives
- Today
- Total
OkBublewrap
머신러닝 프로젝트 분석 본문
데이터 분석(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 |