Построение кривых валидации

Machine LearningMachine LearningBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В машинном обучении кривые валидации используются для определения значений точности обучения и валидации классификатора для различных значений гиперпараметров. Это может помочь в выборе наилучших гиперпараметров для модели. В этом лабораторном занятии мы будем использовать scikit-learn для построения кривых валидации для классификатора на основе методов опорных векторов (SVM).

Советы по использованию ВМ

После завершения запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Ноутбук, чтобы получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Лэби. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49326{{"Построение кривых валидации"}} sklearn/model_selection -.-> lab-49326{{"Построение кривых валидации"}} sklearn/datasets -.-> lab-49326{{"Построение кривых валидации"}} ml/sklearn -.-> lab-49326{{"Построение кривых валидации"}} end

Загрузка набора данных

Начнем с загрузки набора данных digits из 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])  ## binary classification: 1 vs 2
X, y = X[subset_mask], y[subset_mask]

Определение диапазона гиперпараметров

Мы определим диапазон значений для параметра ядра SVM gamma, который мы хотим протестировать.

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

Вычисление значений валидации

Мы будем использовать функцию validation_curve из scikit-learn для вычисления значений точности обучения и валидации для классификатора SVM с разными значениями gamma.

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 для построения графиков значений точности обучения и валидации в зависимости от gamma.

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("Validation Curve with SVM")
plt.xlabel(r"$\gamma$")
plt.ylabel("Score")
plt.ylim(0.0, 1.1)
lw = 2
plt.semilogx(
    param_range, train_scores_mean, label="Training score", 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="Cross-validation score", 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 для построения кривых валидации для классификатора на основе методов опорных векторов. Мы загрузили набор данных, определили диапазон значений гиперпараметров, вычислили значения валидации и построили результаты. Это может помочь в выборе наилучших гиперпараметров для модели и улучшении ее производительности.