✅ 오늘 한 것
베이직, 실무에 쓰는 머신러닝 기초, 스탠다드
✏️ 오늘 배운 점
실무에 쓰는 머신러닝 기초
앙상블 기법
앙상블 기법
- 여러 개의 모델을 조합하여 하나의 모델보다 더 좋은 예측 성능을 내는 방법
- 왜 사용하는가?
- 서로 다른 모델을 결함함으로써 오류를 줄일 수 있음
- 개별 모델의 편향(Bias)과 분산(Variance)을 상호 보완
배깅
- 원리
- 학습 데이터를 무작위로 여러 부분 샘플(Bootstrap)로 나누어 각각 독립적으로 모델 학습
- 예측 시에는 여러 모델의 결과를 평균(회귀) 혹은 다수결(분류)로 결정
- 예시
- 랜덤 포레스트(Random Forest) - 분류, 회귀 모두 가능

- 결정 트리 여러 개를 만들 때 각 트리에 사용하는 피처와 데이터 샘플을 무작위로 선택
- 랜덤 포레스트(Random Forest) - 분류, 회귀 모두 가능
- 장점
- 각 모델이 독립적으로 학습되므로 병렬 처리 가능 (학습 속도가 상대적으로 빠름)
- 모델 간 상호 간섭이 적어 안정적
- 과적합을 줄여주는 효과 (예측의 분산 감소)
- 단점
- 많은 수의 모델을 학습해야 하므로 메모리 사용량이 많아질 수 있음
- 해석이 어려움
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
X = df.data
y = df.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
rf_model = RandomForestClassifier(n_estimators=100, max_depth=None, random_state=42)
rf_model.fit(X_train, y_train)
y_pred = rf_model.predict(X_test)
acc = accuracy_score(y_test, y_pred)
cm = confusion_matrix(y_test, y_pred)
report = classification_report(y_test, y_pred)
부스팅
- 원리
- 순차적으로 모델을 학습하면서 이전 모델이 만든 예측 오류를 보정하도록 설계
- 각각의 모델은 이전 모델이 틀린 부분에 가중치를 더 둬서 학습
- 대표 알고리즘
- XGBoost
- LightGBM
- CatBoost
- 장점
- 높은 정확도 달성 가능
- 각 단계에서의 오류를 보정하기 때문에 복잡한 데이터 패턴을 잘 포착
- 단점
- 순차적으로 학습하므로 병렬화가 쉽지 않음
- 하이퍼파라미터가 많고 튜닝이 까다로움
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
from lightGBM import LGBMClassifier
X = df.drop('Target', axis=1)
y = df['Target']
for col in cols:
le = LabelEncoder()
X[col] = le.fit_transfrom(X[col])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
# XGBoost
xgb_model = XGBClassifier(random_state=42)
xgb_model.fit(X_train, y_train)
y_pred = xgb_model.predict(X_test)
accuracy_score(y_test, y_pred)
confusion_matrix(y_test, y_pred)
classification_report(y_test, y_pred)
# LightGBM
lgb_model = LGBMClassifier(random_state=42)
lgb_model.fit(X_train, y_train)
y_pred = lgb_model.predict(X_test)
accuracy_score(y_test, y_pred)
confusion_matrix(y_test, y_pred)
classification_report(y_test, y_pred)
과적합(Overfitting) vs 과소적합(Underfitting)
과적합
- 학습 데이터에는 지나치게 최적화되었지만 새로운 데이터(테스트, 실제 환경)에는 성능이 떨어지는 현상
과소적합
- 모델이 데이터의 패턴을 충분히 학습하지 못해 학습 데이터조차도 충분히 맞추지 못하는 현상
과적합의 원인
- 모델의 파라미터(자유도)가 너무 많아서 복잡도 과다
- 학습 데이터 수가 충분하지 않음
- 너무 많은 에폭(딥러닝 등)으로 학습
- 노이즈가 많은 훈련 데이터에서 패턴을 '과하게' 학습
과적합 해결 방법
- 정규화(Regularization) 기법
- L1, L2 정규화: 가중치(모델 파라미터)에 패널티를 줘서 과도한 학습 억제
- 드롭아웃(Dropout, 딥러닝에 주로 사용)
- 학습 시 일부 뉴런을 확률적으로 비활성화 -> 과적합 완화
- 데이터 증강(Data Augmentation)
- 이미지 데이터의 경우, 회전·이동·반전 등으로 새 데이터 생성
- 자연어 데이터에도 유사한 패턴으로 증강 가능
- 신호 데이터의 경우 가우시안 노이즈를 추가하여 증강 가능
- 조기 종료(Early Stopping)
- 학습 도중 검증 손실이 증가하기 시작하면 학습 중단
- 앙상블(Ensemble)
- 서로 다른 모델을 결합하여 과적합 위험을 줄임
과소적합 해결 방법
- 모델 복잡도 증가
- 더 오래 학습
- 모델 구조 변경 (더 깊은 신경망, 더 많은 트리 등)
하이퍼파라미터 튜닝
하이퍼파라미터
- 모델이 학습을 시작하기 전에 사람이 설정해야 하는 값
하이퍼파라미터 튜닝을 위한 데이터 준비
- 데이터셋 분할(Training/Validation/Test)
- Training Set: 모델 학습에 직접 사용
- Validation Set: 하이퍼파라미터 튜닝이나 모델 선택을 위해 사용
- Test Set: 최종 성능 평가(훈련/검증 단계에 절대 포함되면 안 됨)
- 교차 검증(Cross-Validation)
- 데이터를 훈련 세트와 검증 세트로 여러 번 겹치지 않게 나누어 사용
- K-Fold Cross-Validation:
- 데이터를 K개의 폴드(Fold)로 나누어 순차적으로 한 폴드를 검증 세트로 사용하고 나머지를 훈련에 사용
- 평균 성능을 최종 모델의 성능으로 봄
- 장점: 데이터가 적은 상황에서도 안정적인 성능 평가 가능
튜닝 방법
- Grid Search
- 미리 정의된 하이퍼파라미터 후보들의 모든 조합을 시도
- 장점: 완전 탐색이므로 최적값을 놓치지 않음
- 단점: 후보가 많아질수록 연산량이 급격히 증가
- Randomized Search
- 임의로 샘플링된 하이퍼파라미터 조합을 일정 횟수만 시도
- 장점: 다양한 영역을 빠르게 탐색 가능, 속도 빠름
- 단점: 최적 조합을 정확히 찾지 못할 수도 있음
- 베이지안 최적화(Bayesian Optimization)
- 과거의 탐색 결과를 바탕으로 가장 유망한 하이퍼파라미터 범위를 중점적으로 탐색
- 장점: 탐색 시간이 더 짧고 효율적
- 단점: 구현 복잡도가 높음
머신러닝 추가 개념
최적화 (Optimization)
- 하이퍼파라미터 튜닝(GridSearchCV, RandomizedSearchCV 등)
- 피처 엔지니어링(새로운 파생 변수 생성, 불필요한 변수 제거)
- 과적합 방지(교차검증, 규제 적용, 드롭아웃 등)
배포 (Deployment)
- 학습 완료 모델을 운영 환경에 배포
- API 서버 구축, 클라우드(AWS, GCP) 또는 엣지 디바이스(임베디드 환경)
- 지속적인 모니터링으로 모델 성능이 저하될 경우 재학습 주기 설정
MLOps(머신러닝 운영)란?
- Machine Learning + DevOps
- 머신러닝 모델 개발부터 배포, 모니터링, 재학습, 롤백(Rollback) 등 전 과정을 자동화하고 효율적으로 운영하는 방법론
MLOps(머신러닝 운영)은 왜 중요할까?
- 프로젝트 완성 -> 실제 운영 단계에서 지속적인 모니터링과 데이터/모델 업데이트가 필요
모델 해석 가능성
왜 필요한가?
- 머신러닝, 특히 딥러닝 모델은 블랙박스처럼 동작
- 의료/금융 등 규제 산업에서는 "왜 이런 결과가 나왔는지"에 대한 설명 요구
주요 기법
- LIME(Local Interpretable Model-agnostic Explanations)
- SHAP(Shapley Additive Explanations)
- Feature Importance 시각화(트리 기반 모델)
스탠다드
SPC의 주요 Zone Rule
| 구간 이름 | 위치 (기준: 평균 μ) | 설명 |
| Zone A | ±2σ ~ ±3σ 사이 | 심각한 경고 |
| Zone B | ±1σ ~ ±2σ 사이 | 경고 |
| Zone C | 평균 ~ ±1σ 사이 | 정상범위 |
Derivative (기울기, 변화량) 기반 탐지
- 개념: 값 자체가 아니라, 변화량에 이상 탐지 적용
- 활용 예시:
- 5초 내에 온도가 10도 이상 급등 -> 이상
- 전류가 1초에 3A 이상 급격히 상승
Moving Average + Change Point Detection
- 기법: 일정 구간의 평균/분산과 현재 값 비교 -> 급변 시점 감지
- 도구: ruptures(시계열 데이터에서 변화점을 감지하는 데 사용), changefinder, Bayesian Change Point(데이터의 통계적 성질(평균, 분산 등)이 변하는 시점을 찾아내는 것이 목적)
- 이동 평균(Moving Average)
- 최근 추세에 비해 너무 튀는 값 확인
- ChangeFinder
- 실시간 환경에 적합하고 통계 기반으로 설계된 알고리즘
- CUSUM (Cumulative Sum Control Chart)
- 평균이 갑자기 변하는 시점을 빠르게 포착
- BOCPD (Bayesian Online Change Point Detection)
- 시계열 데이터에서 변화점(분포가 바뀌는 지점)을 실시간으로 탐지
Variance-based Rule
- 일정한 기간(슬라이딩 윈도우 또는 구간) 동안의 분산(혹은 표준편차)을 계산하고 그 분산이 사전에 설정한 임계값을 초과하였을 때 변화가 생겼다(또는 이상하다) 라고 판단하는 방식
- 왜 분산을 기준으로 삼는가?
- 정상 구간: 일반적으로 분산이 작고 일정
- 이상 구간: 평균이 바뀌거나 급격한 값의 진동이 생기며 분산이 커짐
- 따라서, 분산이 갑자기 튀는 지점을 이상 또는 변화점으로 탐
Guassian Tail Probability
- 정규분포(Gaussian distribution)를 따르는 데이터에서 평균으로부터 특정 거리 이상 떨어진 값이 나올 확률
- 이상치 탐지: 꼬리 확률이 매우 작으면 이상으로 판단
- p-value 계산: 통계 검정에서 유의확률(p-value)을 계산할 때도 tail probability 사용
- 확률적 스코어링: 확률 기반 이상 탐지에 사용
✏️ 오늘의 질문
1. 데이터를 처음부터 교차 검증을 수행하나요?
Train, Test를 먼저 나눈 이후 Train 데이터만을 가지고 교차 검증을 수행한다.
2. Train 데이터를 가지고 K-Fold 교차 검증을 수행하는 구체적인 과정은 어떻게 되나요?
Train 데이터를 K개의 그룹(Fold)로 나누어 각 그룹 중 1개만을 검증용으로 사용하고, 나머지 K-1 그룹을 학습용으로 사용하여 점수를 산출하여 점수의 평균값을 이 모델의 성능으로 간주한다.
📌추가로 해야 할 점
베이직, 실무에 쓰는 머신러닝 기초, AI 서비스 개발
'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글
| 본캠프_15주차(금)_TIL(딥러닝, 고민해결소) (0) | 2025.12.26 |
|---|---|
| 본캠프_15주차(수)_TIL(클러스터링, 차원 축소, 이상 탐지, AI 서비스 개발) (0) | 2025.12.24 |
| 본캠프_15주차(월)_TIL(분류, 베이직) (0) | 2025.12.22 |
| 본캠프_14주차(금)_TIL(회귀, 스탠다드) (0) | 2025.12.19 |
| 본캠프_14주차(목)_TIL(머신러닝 기초) (0) | 2025.12.18 |