Измеряйте: регрессионные показатели соответствия

Метрики/меры соответствия машинного обучения могут быть довольно сложными. Вы узнаёте эту ситуацию? Вы собрали много данных и построили регрессионную модель, которая выглядит потрясающе. Он дает прогнозы для переменной, которую вы хотите предсказать. Все выглядит идеально. Но как узнать, правильно ли предсказывает ваша модель? Не ищите дальше, этот блог для вас!

После подгонки регрессионной модели к набору данных важно проверить, соответствует ли рассчитанная модель данным. К счастью, есть способ сравнить несколько моделей друг с другом: показатели соответствия. Мера соответствия будет квалифицировать ошибку расчетной модели. Ошибка — это ошибка, которую допускает модель по сравнению с исходными данными. Какая мера соответствия используется, определяет способ расчета ошибки модели. Важно помнить, что мера соответствия не обязательно ничего не говорит о точности модели, она говорит только о средней ошибке между предсказаниями вашей модели и истинными значениями.

В этом блоге мы обсудим 4 различных показателя соответствия: средняя абсолютная ошибка (MAE), среднеквадратическая ошибка (MSE), среднеквадратическая ошибка (RMSE) и R в квадрате (R²). Каждая мера будет объяснена, и мы поговорим о ее лучшем использовании и ее недостатках.

Средняя абсолютная ошибка (MAE)

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

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

Среднеквадратическая ошибка (MSE)

MSE вычисляет квадрат ошибки между прогнозом и истинным значением для каждой точки данных, суммирует ошибки и делит их на количество точек данных.

MSE труднее интерпретировать, поскольку он имеет порядок 2, а данные (обычно) имеют порядок 1, ошибка не может быть напрямую связана с данными. Положительным моментом является то, что MSE будет меньше при использовании большего количества данных. Это приводит к тому, что MSE дает лучшее представление об ошибке модели, когда используется больше данных. Его можно использовать практически для всех регрессионных моделей.

Среднеквадратичная ошибка (RMSE)

RMSE очень похож на MSE. Чтобы вычислить RMSE, мы просто берем корень MSE.

Это решает проблему MSE, связанную с неодинаковым порядком в наборе данных и ошибкой. RMSE также чувствителен к выбросам. Но из-за корня число всегда будет меньше, чем MSE, что делает его более читаемым числом, чем MSE. Имейте в виду, что вы не можете использовать RMSE для сравнения разных переменных, если они имеют разную шкалу чисел.

R в квадрате

R² рассчитывается путем деления суммы квадратов ошибок (SSE) на сумму квадратов итогов (SST).

SSE представляет собой сумму разницы между предсказанным значением и истинным значением в квадрате. Он очень похож на расчет, используемый в MSE, с той лишь разницей, что MSE делится на количество точек данных. SST вычисляется путем взятия суммы разницы между предсказанным значением и средним истинным значением в квадрате.

R² — это сравнение прямой линии с выбранной моделью. Если прямая линия предсказывает лучше, чем выбранная модель, R² является отрицательным. Когда модель идеально соответствует данным, R² равно 1 (SSE будет равно нулю для идеального прогноза). Не используйте R² отдельно. Низкий R² не всегда плохо, а более высокий R² не всегда хорошо. Обязательно объедините его с другим показателем соответствия, высокий R² может иметь большую ошибку, и наоборот.

Немного волшебства Python: меры соответствия в действии

Я слышал, вы думаете: "Миша, это интересно, но как я могу использовать это в Python?". Позволь мне показать тебе!

Давайте начнем с определения некоторых истинных значений и некоторых прогнозов. Я буду использовать некоторые легко увидеть и рассчитать отклонения. Это хороший способ получить представление об обсуждаемых мерах соответствия, поэтому в следующий раз, когда вы будете работать с моделью, вы сможете самостоятельно использовать эти меры в более широком сценарии.

y_true = [-10, -5, 0, 5, 10, 15]
y_always_five = [-15, -10, -5, 0, 5, 10]
y_small_large = [-7, -2, 3, 12, 17, 22]
y_outlier = [-10, -5, 0, 5, 10, 45]

Теперь, когда у нас есть y_true и прогнозы, мы можем вычислить, насколько хорош наш прогноз. Мы рассмотрим их один за другим. Код Python будет показывать примеры только для y_always_five, в таблице 1 также будут показаны меры для других прогнозов.

print("MAE y_always_five: ", mean_absolute_error(y_true, y_always_five))
MAE y_always five: 5.0
print("MSE y_always_five: ", mean_squared_error(y_true, y_always_five))
MSE y_always_five: 25.0
print("RMSE y_always_five: ", sqrt(mean_squared_error(y_true, y_always_five)))
RMSE y_always_five: 5.0
print("R2 y_always_five: ", r2_score(y_true, y_always_five))
R2 y_always_five: 0.6571428571428571

Куча разных цифр. Пришло время интерпретировать их и получить наилучшее соответствие. В таблице ниже показаны различные прогнозы и соответствующие им меры (таблица 1). Но сначала немного кода для построения этих прогнозов. Результат показан на рисунке 1.

Как указывалось ранее, MAE не очень хорошо справляется с выбросами. y_outlier имеет большой выброс при x = 5, но по-прежнему показывает значение MAE, равное 5. Другие 3 показателя лучше отображают этот выброс. MSE и RMSE дают гораздо более высокое значение, чем раньше, а R² даже дает отрицательное число, показывая, что прогнозируемая модель хуже, чем горизонтальная линия при прогнозировании значений. Вы также можете заметить, что MSE имеет гораздо более высокое значение, чем другие показатели. Как обсуждалось ранее, это связано с тем, что MSE имеет порядок два, а данные имеют порядок один. Вы также можете заметить разницу между y_always_five и y_small_large, если посмотрите на RMSE. Есть небольшая разница в ошибке. Это показывает, что большие ошибки в y_small_large тяжелее, чем меньшие ошибки.

Рекомендация

MAE, MSE, RMSE и R², нанесенные рядом друг с другом, показывают, что MAE является наиболее интерпретируемым, но ему не хватает способности справляться с выбросами и различиями между равномерно распределенными ошибками и небольшой дисперсией ошибок. Это также показывает, что MSE и RMSE преодолевают недостатки MAE, поскольку большие ошибки оказывают на них большее влияние. Наконец, R² отлично показывает, лучше ли наша модель предсказывает значения, чем горизонтальная линия. Его значение показывает нам, приближается ли прогноз наших моделей к исходным значениям. Я бы предложил использовать одновременно RMSE и R². Попытка получить модель с как можно более низким RMSE, а также попытаться получить R² как можно ближе к единице. При представлении модели вы можете использовать RMSE, чтобы показать среднее отклонение модели по сравнению с истинными значениями. R² может быть представлен как точность, но только тогда, когда вы используете его в сочетании с другими показателями. Эта комбинация показывает модель, которая близка к истинным значениям, а также показывает небольшую среднюю ошибку для каждой точки данных.