여러 모델 평가하기

scikit-learn으로 배우는 지도 학습

George Boorman

Core Curriculum Manager, DataCamp

목표에 맞는 다양한 역할

몇 가지 지침 원칙

  • 데이터세트의 크기
    • 기능이 적을수록 = 더 단순한 모델, 더 빠른 학습 시간
    • 일부 모델은 좋은 성능을 내기 위해 많은 양의 데이터 필요
  • 해석 가능성
    • 일부 모델은 설명이 더 쉬운데, 이는 이해관계자들에게 중요할 수 있음
    • 선형 회귀는 계수를 이해할 수 있어 해석 가능성이 높음
  • 유연성
    • 데이터에 대한 가정을 줄임으로써 정확도를 향상시킬 수 있음
    • KNN은 더 유연한 모델로, 어떤 선형 관계도 가정하지 않음
scikit-learn으로 배우는 지도 학습

결국은 지표가 말한다

  • 회귀 모델 성능:

    • RMSE
    • R-제곱
  • 분류 모델 성능:

    • 정확성 혼동 행렬
    • 정밀도, 재현율, F1 점수
    • ROC AUC
  • 여러 모델을 학습시키고 기본 상태에서 성능을 평가

scikit-learn으로 배우는 지도 학습

스케일링 참고 사항

  • 스케일링의 영향을 받는 모델:
    • KNN
    • 선형 회귀(그리고 릿지, 라쏘)
    • 로지스틱 회귀
    • 인공 신경망
  • 모델을 평가하기 전에 데이터를 스케일링하는 것이 베스트
scikit-learn으로 배우는 지도 학습

분류 모델 평가

import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_val_score, KFold, train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier

X = music.drop("genre", axis=1).values y = music["genre"].values X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
scikit-learn으로 배우는 지도 학습

분류 모델 평가

models = {"Logistic Regression": LogisticRegression(), "KNN": KNeighborsClassifier(), 
         "Decision Tree": DecisionTreeClassifier()}
results = []

for model in models.values():
kf = KFold(n_splits=6, random_state=42, shuffle=True)
cv_results = cross_val_score(model, X_train_scaled, y_train, cv=kf)
results.append(cv_results)
plt.boxplot(results, labels=models.keys()) plt.show()
scikit-learn으로 배우는 지도 학습

결과 시각화

Box plot of accuracy for each model: Logistic Regression, KNN, and Decision Tree

scikit-learn으로 배우는 지도 학습

테스트 세트 성능

for name, model in models.items():

model.fit(X_train_scaled, y_train)
test_score = model.score(X_test_scaled, y_test)
print("{} Test Set Accuracy: {}".format(name, test_score))
Logistic Regression Test Set Accuracy: 0.844
KNN Test Set Accuracy: 0.82
Decision Tree Test Set Accuracy: 0.832
scikit-learn으로 배우는 지도 학습

연습해 봅시다!

scikit-learn으로 배우는 지도 학습

Preparing Video For Download...