검증 곡선 플롯

Beginner

This tutorial is from open-source community. Access the source code

소개

머신 러닝에서 검증 곡선은 분류기의 학습 및 검증 점수를 다양한 하이퍼파라미터 값에 대해 결정하는 데 사용됩니다. 이를 통해 모델에 대한 최적의 하이퍼파라미터를 선택하는 데 도움이 될 수 있습니다. 이 실습에서는 scikit-learn 을 사용하여 서포트 벡터 머신 (SVM) 분류기의 검증 곡선을 그릴 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 검증을 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터셋 로딩

scikit-learn 에서 숫자 데이터셋을 로드하고 숫자 1 과 2 의 이진 분류를 위해 데이터의 일부를 선택하는 것으로 시작합니다.

from sklearn.datasets import load_digits

X, y = load_digits(return_X_y=True)
subset_mask = np.isin(y, [1, 2])  ## 이진 분류: 1 대 2
X, y = X[subset_mask], y[subset_mask]

하이퍼파라미터 범위 정의

테스트하고자 하는 SVM 커널 매개변수 감마의 값 범위를 정의합니다.

param_range = np.logspace(-6, -1, 5)

검증 점수 계산

다양한 감마 값을 사용하여 SVM 분류기의 학습 및 검증 점수를 계산하기 위해 scikit-learn 의 validation_curve 함수를 사용합니다.

from sklearn.svm import SVC
from sklearn.model_selection import validation_curve

train_scores, test_scores = validation_curve(
    SVC(),
    X,
    y,
    param_name="gamma",
    param_range=param_range,
    scoring="accuracy",
    n_jobs=2,
)

검증 곡선 플롯

matplotlib 을 사용하여 감마에 따른 학습 및 검증 점수를 플롯합니다.

import matplotlib.pyplot as plt

train_scores_mean = np.mean(train_scores, axis=1)
train_scores_std = np.std(train_scores, axis=1)
test_scores_mean = np.mean(test_scores, axis=1)
test_scores_std = np.std(test_scores, axis=1)

plt.title("SVM 을 이용한 검증 곡선")
plt.xlabel(r"$\gamma$")
plt.ylabel("점수")
plt.ylim(0.0, 1.1)
lw = 2
plt.semilogx(
    param_range, train_scores_mean, label="학습 점수", color="darkorange", lw=lw
)
plt.fill_between(
    param_range,
    train_scores_mean - train_scores_std,
    train_scores_mean + train_scores_std,
    alpha=0.2,
    color="darkorange",
    lw=lw,
)
plt.semilogx(
    param_range, test_scores_mean, label="교차 검증 점수", color="navy", lw=lw
)
plt.fill_between(
    param_range,
    test_scores_mean - test_scores_std,
    test_scores_mean + test_scores_std,
    alpha=0.2,
    color="navy",
    lw=lw,
)
plt.legend(loc="best")
plt.show()

요약

이 실험에서는 scikit-learn 을 사용하여 서포트 벡터 머신 분류기의 검증 곡선을 그리는 방법을 배웠습니다. 데이터셋을 로드하고, 하이퍼파라미터 값의 범위를 정의하고, 검증 점수를 계산하고, 결과를 플롯했습니다. 이를 통해 모델에 대한 최적의 하이퍼파라미터를 선택하고 성능을 개선하는 데 도움이 될 수 있습니다.