Выбор модели — показатели производительности

искусственный интеллект

Это 17-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

0. Обзор Качество модели относительное. Какая модель хороша, зависит от алгоритма и данных, а также от требований задачи.

  1. Показатели производительности для задач регрессии

среднеквадратическая ошибка Среднеквадратическая ошибка — это наиболее часто используемый показатель производительности для задач регрессии, представляющий ошибку между прогнозируемым значением и фактическим значением. рисунок

  1. Показатели производительности для задач классификации

Предсказание реальности Положительный пример Отрицательный пример Положительный пример TP (истинный пример) FN (ложноотрицательный пример) Контрпример FP (ложноположительный пример) TN (истинно отрицательный пример) Точность: доля правильно классифицированных образцов от общего числа образцов TP+FN/общее количество случаев Точность: доля правильно предсказанных выборок, которые на самом деле являются правильными TP/(TP+FP). Коэффициент отзыва: доля правильных прогнозов в положительном примере TP/(TP+FN) F1: среднее значение точности и отзыва ОКР и АУК Способ, которым классифицируют многие методы машинного обучения, заключается в создании реального значения (или прогноза вероятности) для тестовой выборки и сравнении его с заданным порогом, который больше порога и классифицируется как положительный, а меньше порога классифицируется как отрицательный. . Мы можем отсортировать выборки по размеру реального значения, то есть по вероятности быть положительным примером. Процесс классификации заключается в том, чтобы найти «точку усечения» в этой сортировке и оценить первую часть как положительный пример, а вторую часть как отрицательный пример. Кривая ROC использует каждое реальное значение в качестве порога и измеряет производительность модели. Он принимает истинную частоту случаев TPR = TP / (TP + FN) по оси абсцисс, а частоту ложноположительных результатов FPR = FP / (TN + FP) по оси абсцисс. Каждый раз реальное значение последовательно используется в качестве порога для тестирования. Знаменатель истинной скорости и отрицательной скорости - это фактическое количество положительных и отрицательных примеров, которое является фиксированным числом, поэтому они пропорциональны TP и FP. рисунок Изображение выше является примером ROC. Точка (0, 1) соответствует идеальной модели, разделяющей все положительные примеры перед отрицательными. Оранжевая линия соответствует фактической кривой ROC. В начале значение порога высокое, только первые несколько чисел считаются положительными примерами, количество ложных срабатываний равно 0, а частота ложных срабатываний равна 0. По мере снижения порога больше образцов классифицируются как положительные примеры, увеличивается количество истинных и ложноположительных примеров, а также увеличивается доля истинных и ложноположительных примеров. Когда порог увеличивается до определенной степени, все образцы, ранжированные позже, являются фактически отрицательными примерами. Таким образом, истинная частота случаев больше не увеличивается, в любом случае частота случаев постепенно увеличивается до 1. Получить последовательность fpr, tpr может использовать sklearn.metrics в roc_curve([фактический результат], [оценка]) AUC — это площадь под линией ROC-кривой, которая измеряет ранжирование качества прогноза и является всеобъемлющим индикатором. Когда AUC=1, кривая ROC представляет собой ломаную линию, соединенную (0, 0), (0, 1), (1, 1), представляющую идеальное упорядочение всех положительных примеров перед отрицательными примерами. Когда AUC = близко к 1/2, ROC близок к прямой, соединяющей (0, 0) и (1, 1), что означает, что метод сортировки близок к полностью случайному. Способ вычисления auc — применить roc_auc([fpr],[tpr]) в sklearn.metrics. частота ошибок, чувствительная к стоимости Различные последствия для неправильного типа, например, пациент диагностирован как здоровый (пропущенное лечение) и здоровый диагностирован как пациент (плата за обследование). В соответствии с различными типами ошибок FP и FN добавляются в определенной пропорции и делятся на количество выборок, что является коэффициентом ошибок, зависящим от стоимости.

  1. пример кода

Нарисуйте кривую ROC и рассчитайте значение AUC.

import matplotlib.pyplot as plt from sklearn import svm, datasets from sklearn.metrics import roc_curve, auc from sklearn.model_selection import train_test_split from sklearn.preprocessing import label_binarize from sklearn.multiclass import OneVsRestClassifier

Импорт набора данных радужной оболочки

iris = datasets.load_iris() X = iris.data y = iris.target

двоичный вывод

y = label_binarize(y, classes=[0, 1, 2]) n_classes = y.shape[1]

Разделить тренировочный набор и тестовый набор

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=0)

Применить SVM для оценки

classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True,)) y_score = classifier.fit(X_train, y_train).decision_function(X_test)

Рассчитайте кривую ROC и AUC для каждого класса

fpr = дикт() тпр = дикт() roc_auc = дикт() для я в диапазоне (n_classes): # Здесь мы используем roc_curve для получения значений fpr и tpr каждой точки.Параметры представляют собой i-й столбец фактических результатов и оценок тестовых образцов. fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) # Здесь используйте функцию auc, чтобы получить auc каждой точки roc_auc[i] = auc(fpr[i], tpr[i]) plt.figure() лв = 2

Нарисуйте кривую ROC и отметьте значение AUC.

plt.plot(fpr[1], tpr[1], color='darkorange', lw=lw, label='ROC curve (area = %0.4f)' % roc_auc[1]) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show()

Использованная литература: «Машинное обучение» Чжоу Чжихуа

sk-learn официальная документация

Операция: Постройте кривую roc для набора данных о раке молочной железы и рассчитайте значение auc.

import matplotlib.pyplot as plt from sklearn import svm, datasets from sklearn.metrics import roc_curve, auc from sklearn.model_selection import train_test_split from sklearn.multiclass import OneVsRestClassifier

Импорт набора данных о раке молочной железы

data = datasets.load_breast_cancer() X = data.data y = data.target

Разделить тренировочный набор и тестовый набор

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=0)

Применить SVM для оценки

Рассчитайте кривую ROC и AUC для каждого класса

Постройте кривую ROC