AI 기초를 다지자! 2편

Bzeromo·2025년 9월 22일

AI

목록 보기
3/3
post-thumbnail

⚡ 머신러닝 파이프라인


📌 Machine Learning Pipeline

🔷 Why? 배워야할까?

  • 빅 데이터 처리

  • 복잡한 문제를 해결할 수 있다

  • 재처리가 빠르다

  • Workflow를 최소화 시킬 수 있다

  • 데이터 품질 향상에 도움이 된다


🔷 주요 단계

문제 정의 → 데이터 수집 → 데이터 준비 → 데이터 분리 
                                        ↓
성능 모니터링 ← 모델 배포 ← 모델 평가 ← 모델 훈련  
  • 파이프라인의 각 단계는 다음 단계에 대한 입력이 되는 출력을 생성

1️⃣ 문제 정의 (Problem Definition)

  • 예시: 전자상거래 기업에서 고객의 구매 이탈을 예측하고 싶음
  • 설명:
    • 해결하려는 문제를 분류(Classification) 문제인지, 회귀(Regression) 문제인지 명확히 정의
    • 목표 지표(Accuracy, AUC, RMSE 등)도 함께 설정
  • 출력: "고객이 1개월 내에 구매를 중단할 가능성 예측"이라는 문제 정의

2️⃣ 데이터 수집 (Data Collection)

  • 예시: 고객의 과거 구매 기록, 웹사이트 방문 로그, 고객 나이/성별 등의 프로필 데이터 수집
  • 설명:
    • 데이터는 DB, 로그 시스템, 외부 API, 설문조사 등 다양한 경로에서 가져올 수 있음
    • Kaggle이나 UCI ML Repository에서 공개 데이터셋을 활용할 수도 있음
  • 도구: SQL, Pandas, APIs

3️⃣ 데이터 준비 (Data Preparation)

  • 예시: 고객 로그에서 Null 값 제거, 범주형 데이터 원-핫 인코딩(One-Hot Encoding) 적용
  • 설명:
    • 데이터 전처리 단계: 결측치 처리, 이상치 제거, 스케일링, 정규화 등
    • 모델이 학습할 수 있는 수치형 형식으로 변환 필요
  • 도구: Pandas, scikit-learn의 StandardScaler, LabelEncoder

4️⃣ 데이터 분리 (Data Splitting)

  • 예시: 80%는 학습용(Train), 20%는 테스트용(Test) 데이터로 분리
  • 설명:
    • 과적합(Overfitting) 방지를 위해 Train/Test Split 사용
    • 추가로 Validation Set을 만들어 하이퍼파라미터 튜닝에도 활용 가능
  • 도구: scikit-learn의 train_test_split

5️⃣ 모델 훈련 (Model Training)

  • 예시: 랜덤 포레스트(Random Forest) 모델을 사용해 고객 이탈 예측 모델 학습
  • 설명:
    • 모델에 데이터를 넣고 가중치를 조정하면서 패턴 학습
    • 이 단계에서 하이퍼파라미터 최적화도 가능
  • 도구: scikit-learn, XGBoost, TensorFlow, PyTorch

6️⃣ 모델 평가 (Model Evaluation)

  • 예시: 테스트 데이터에 대해 Accuracy와 ROC-AUC 스코어 측정
  • 설명:
    • 모델이 새로운 데이터에서 얼마나 잘 동작하는지 검증
    • 혼동 행렬, 정밀도(Precision), 재현율(Recall) 등 다양한 평가 지표 활용
  • 도구: scikit-learn의 classification_report, roc_auc_score

7️⃣ 모델 배포 (Model Deployment)

  • 예시: 학습된 모델을 Flask API로 배포하여 웹 애플리케이션에서 실시간 예측 가능하게 함
  • 설명:
    • 배포된 모델은 REST API, gRPC, 또는 서버리스 환경에서 실행될 수 있음
  • 도구: Flask, FastAPI, AWS Lambda, Docker

8️⃣ 성능 모니터링 (Performance Monitoring)

  • 예시: 모델 예측 결과를 대시보드로 시각화해 모델 정확도가 시간이 지남에 따라 감소하는지 모니터링
  • 설명:
    • 데이터 분포 변화(데이터 드리프트)나 성능 저하 발생 시 모델 재훈련 필요
  • 도구: Prometheus, Grafana, MLflow, Evidently AI

💡 파이프라인 전반적으로 모든 단계의 비용 모니터링이 필요함.

  • 기업은 종종 기술 부서와 서비스 수준 계약을 체결한다.
    • 버그 수정, 응답 테스트, 처리량 한도 등의 유지보수 사항 계약

📌 머신러닝 파이프라인 실습

🔗 사용할 예제(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 방식으로.

🔷 각 단계 분석

  1. 데이터 불러오기 (Loading Data)

  2. 데이터 탐색 (Exploratory Data Analysis, EDA)

  3. 전처리 (Preprocessing)

  4. 특성 선택/제작 (Feature Engineering / Selection)

  5. 모델 학습 (Model Training)

  6. 모델 평가 (Model Evaluation)

  7. 하이퍼파라미터 튜닝 (Hyperparameter Tuning)

  8. 앙상블 또는 여러 모델 비교

  9. 최종 모델 선정 및 테스트

단계수행 내용사용된 기법 / 라이브러리 / 특징
데이터 로딩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 splitk-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 데이터로 최종 모델 성능 측정 / 결과 보고최종 평가 지표 제시

❗ 직접 돌려보고 싶다면 말리지 않겠습니다.
좋은 경험이긴 한데 오래걸림...
어차피 차근차근 전부 자세히 해볼 것이기 때문에, 흐름만 파악하고 넘어가도 오케이일듯


다음은 특성 선택과 특성 공학에 대해서 알아봅시다!

profile
Hodie mihi, Cras tibi

0개의 댓글