모델 평가와 시각화

엔드 투 엔드 Machine Learning

Joshua Stapleton

Machine Learning Engineer

정확도

  • 올바른 정확도 지표는 견고한 모델 평가에 필수입니다
  • 결과를 오해하거나 왜곡하기 쉽습니다

일반 정확도:

  • 일반 정확도 = 정답 수 / 전체 예측 수
  • 일반 정확도는 도움이 안 될 수 있습니다

예시:

# 양성 99, 음성 1의 불균형 데이터에서 ~99% 정확도 달성
for patient_datapoint in heart_disease_dataset:
    model.prediction(patient_datapoint) = 'positive'
엔드 투 엔드 Machine Learning

오차 행렬

진양성(TP)

  • 모델 예측 = 실제 분류 = 양성
  • 모델이 심장병을 예측했고, 환자에게 심장병이 있었습니다

위양성(FP)

  • 모델 예측 = 양성, 실제 분류 = 음성
  • 모델은 심장병을 예측했지만, 환자에게 심장병이 없었습니다

위음성(FN)

  • 모델 예측 = 음성, 실제 분류 = 양성
  • 모델은 심장병이 없다고 예측했지만, 환자에게 심장병이 있었습니다

진음성(TN)

  • 모델 예측 = 실제 분류 = 음성
  • 모델은 심장병이 없다고 예측했고, 환자에게 심장병이 없었습니다
엔드 투 엔드 Machine Learning

균형 정확도

  • 대부분의 이진 분류에서 단순 정확도보다 더 나은 지표
  • 두 클래스의 가중 평균 제공
  • 균형 정확도 = (TP + TN) / 2
from sklearn.metrics import balanced_accuracy_score

# y_test는 실제 레이블, y_pred는 예측 레이블
y_pred = model.predict(X_test)
bal_accuracy = balanced_accuracy_score(y_test, y_pred)
print(f"Balanced Accuracy: {bal_accuracy:.2f}")
Balanced Accuracy: 0.85
엔드 투 엔드 Machine Learning

오차 행렬 활용

오차 행렬

엔드 투 엔드 Machine Learning

교차 검증

교차 검증

  • 재표본추출 절차입니다
  • 결과의 견고성을 보장합니다

 

k-겹 교차 검증

  • 매개변수 'k' = 데이터셋 분할 수
  • 각 모델링 실행마다 새로운 학습/검증 분할을 생성합니다

교차 검증 다이어그램

엔드 투 엔드 Machine Learning

교차 검증 사용법

  • sklearn으로 k-겹 교차 검증을 간단히 구현
  • 모델 무관 점수 산출

사용법:

from sklearn.model_selection import cross_val_score, KFold

# 데이터를 10개 동일 부분으로 분할
kfold = KFold(n_splits=5, shuffle=True, random_state=42)

# 주어진 모델의 교차 검증 정확도 계산 cv_results = cross_val_score(model, heart_disease_X, heart_disease_y, cv=kfold, scoring='balanced_accuracy')
엔드 투 엔드 Machine Learning

하이퍼파라미터 튜닝

하이퍼파라미터:

  • 학습 중 변하지 않는 전역 모델 파라미터
  • 성능 향상을 위해 조정
# 테스트할 하이퍼파라미터
C_values = [0.001, 0.01, 0.1, 1, 10, 100, 1000]

# 하이퍼파라미터 수동 반복
for C in C_values:
    model = LogisticRegression(max_iter=200, C=C)
    model.fit(X_train, y_train)
    accuracy = cross_val_score(model, X, y, cv=kfold, scoring='balanced_accuracy')
    print(f"C = {C}: Bal Acc: {accuracy.mean():.4f} (+/- {accuracy.std():.4f})")
엔드 투 엔드 Machine Learning

하이퍼파라미터 튜닝 예시

하이퍼파라미터 튜닝 예시 출력:

 

C = 0.001: Bal Acc: 0.6200 (+/- 0.0215)
C = 0.01: Bal Acc: 0.7325 (+/- 0.0234)
C = 0.1: Bal Acc: 0.7923 (+/- 0.0202)
C = 1: Bal Acc: 0.8050 (+/- 0.0191)
C = 10: Bal Acc: 0.8034 (+/- 0.0185)
C = 100: Bal Acc: 0.8021 (+/- 0.0187)
C = 1000: Bal Acc: 0.8017 (+/- 0.0188)
엔드 투 엔드 Machine Learning

연습해 봅시다!

엔드 투 엔드 Machine Learning

Preparing Video For Download...