🔷 Why? 배워야할까?
빅 데이터 처리
복잡한 문제를 해결할 수 있다
재처리가 빠르다
Workflow를 최소화 시킬 수 있다
데이터 품질 향상에 도움이 된다
🔷 주요 단계
문제 정의 → 데이터 수집 → 데이터 준비 → 데이터 분리
↓
성능 모니터링 ← 모델 배포 ← 모델 평가 ← 모델 훈련
1️⃣ 문제 정의 (Problem Definition)
2️⃣ 데이터 수집 (Data Collection)
3️⃣ 데이터 준비 (Data Preparation)
StandardScaler, LabelEncoder 4️⃣ 데이터 분리 (Data Splitting)
train_test_split 5️⃣ 모델 훈련 (Model Training)
6️⃣ 모델 평가 (Model Evaluation)
classification_report, roc_auc_score 7️⃣ 모델 배포 (Model Deployment)
8️⃣ 성능 모니터링 (Performance Monitoring)
💡 파이프라인 전반적으로 모든 단계의 비용 모니터링이 필요함.
- 기업은 종종 기술 부서와 서비스 수준 계약을 체결한다.
- 버그 수정, 응답 테스트, 처리량 한도 등의 유지보수 사항 계약
🔗 사용할 예제(Kaggle 예제)
💡 지도 학습(supervised learning) 모델 튜토리얼,
당뇨(diabetes)의 발생 여부(onset)를 진단 측정치(diagnostic measures)를 바탕으로 예측하는 과제
⚙️ Input의 구성 요소 및 특징
| 항목 | 설명 / 특징 |
|---|---|
| 데이터 컬럼(features) | 당뇨 예측용 진단 지표들이 포함됨 (예: 혈당 수치, 체질량지수 등). 튜토리얼 제목 “diagnostic measures”가 암시함. |
| 타깃 변수(target) | 당뇨 여부(onset) – ‘당뇨 있음/없음’ 등의 이진(binary) 분류 문제일 가능성 높음 |
| 파일 형태 | 주로 CSV 파일 또는 비슷한 구조의 tabular 데이터일 것임. Kaggle의 typical supervised ML 튜토리얼이라면 .csv 파일로 되어 있음. |
| 전처리 필요성 | 결측치, 데이터 타입, 스케일링, 범주형 변수 처리 등 일반적인 전처리 과정이 필요함. (튜토리얼 내용 상 여러 전처리 단계가 있을 것이라고 예상됨) |
| 데이터 분할 | 학습 / 검증 / 테스트 세트로 나누는 단계가 있음. 보통 train/test split 또는 CV 방식으로. |
🔷 각 단계 분석
데이터 불러오기 (Loading Data)
데이터 탐색 (Exploratory Data Analysis, EDA)
전처리 (Preprocessing)
특성 선택/제작 (Feature Engineering / Selection)
모델 학습 (Model Training)
모델 평가 (Model Evaluation)
하이퍼파라미터 튜닝 (Hyperparameter Tuning)
앙상블 또는 여러 모델 비교
최종 모델 선정 및 테스트
| 단계 | 수행 내용 | 사용된 기법 / 라이브러리 / 특징 |
|---|---|---|
| 데이터 로딩 | CSV 파일을 불러오고 Pandas DataFrame으로 저장 | pandas.read_csv() |
| 데이터 탐색 (EDA) | 기본 통계치 확인 (.describe()) / 결측치(NaN) 확인 / 변수 타입 확보 / 분포 시각화 | Matplotlib / Seaborn 사용, 히스토그램, 상자 그림(boxplot) 등 |
| 결측치 처리 (Missing Values) | 결측치 비율 확인 → 일부 컬럼 삭제 또는 대체(imputation) | 평균 평균, 중앙값, 또는 해당 변수 특성에 맞는 대체값 사용 |
| 이상치 탐지 및 처리 | 분포에서의 이상치(outlier) 시각화 / 필요에 따라 이상치 제거 또는 값 조정 | boxplot, IQR 기반 필터링 등이 사용됐을 가능성 높음 |
| 변수 변환 (Feature Scaling / Normalization / Standardization) | 연속 변수에 대해 스케일 조정: StandardScaler / MinMaxScaler 등 사용 | scikit-learn의 스케일러 활용 |
| 범주형 변수 인코딩 | 범주형(categorical) 변수를 숫자로 변환: 원-핫 인코딩(one-hot), 라벨 인코딩(label encoding) | Pandas 또는 scikit-learn의 OneHotEncoder 등 |
| 특성 선택 (Feature Selection) | 중요 변수를 선택: 상관관계 분석(correlation matrix) / 변수 중요도(feature importance) 기반 제거 | 예: 랜덤 포레스트 중요도, 혹은 상관계수 |
| 모델 학습 | 여러 모델 시도: 예를 들어 로지스틱 회귀, 랜덤 포레스트, 그레디언트 부스트 머신(GBM), XGBoost 등 | scikit-learn, xgboost 등 라이브러리를 사용했을 가능성 있음 |
| 검증 전략 (Validation Strategy) | 교차 검증(cross validation) 사용 또는 train/validation split | k-fold CV 또는 Stratified Split 가능 |
| 평가 지표 (Evaluation Metrics) | 정확도(Accuracy), ROC-AUC, 혼동 행렬(confusion matrix), 정밀도/재현율(precision/recall) 등 다양한 지표 사용 | 시각화 포함 가능성 있음 |
| 하이퍼파라미터 튜닝 | Grid Search 또는 Random Search 사용 / 파라미터 범위 정의 / 교차 검증과 결합 | scikit-learn의 GridSearchCV, RandomizedSearchCV 또는 XGBoost의 하이퍼파라미터 튜닝 기능 |
| 모델 간 비교 및 앙상블 가능성 | 여러 모델의 결과 비교 후 최종 모델 선택 / 앙상블(ensemble) 방법 고려 | Voting, Stacking, 또는 단순 평균 등 가능성 있음 |
| 최종 모델 및 테스트 | 테스트세트 또는 hold‐out 데이터로 최종 모델 성능 측정 / 결과 보고 | 최종 평가 지표 제시 |
❗ 직접 돌려보고 싶다면 말리지 않겠습니다.
좋은 경험이긴 한데 오래걸림...
어차피 차근차근 전부 자세히 해볼 것이기 때문에, 흐름만 파악하고 넘어가도 오케이일듯
다음은 특성 선택과 특성 공학에 대해서 알아봅시다!