⭐️ Если вы любите узнавать что-то новое, ознакомьтесь с моим информационным бюллетенем: Могущественные знания

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

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

Высокое значение потерь означает, что наша модель работала очень плохо. Низкое значение потерь означает, что наша модель работала очень хорошо.

Выбор правильной функции потерь имеет решающее значение для обучения точной модели. Некоторые функции потерь будут обладать определенными свойствами и помочь вашей модели учиться определенным образом. Некоторые могут придавать большее значение выбросам, другие - большинству.

В этой статье мы рассмотрим 3 наиболее распространенные функции потерь для регрессии машинного обучения. Я объясню, как они работают, их плюсы и минусы и как их можно наиболее эффективно применять при обучении регрессионных моделей.

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

Среднеквадратичная ошибка (MSE) - это, пожалуй, самая простая и наиболее распространенная функция потерь, которую часто преподают на вводных курсах машинного обучения. Чтобы вычислить MSE, вы берете разницу между предсказаниями вашей модели и реальной истиной, возводите ее в квадрат и усредняете по всему набору данных.

MSE никогда не будет отрицательным, поскольку мы всегда возводим ошибки в квадрат. MSE формально определяется следующим уравнением:

Где N - количество образцов, с которыми мы проводим тестирование. Код достаточно прост, мы можем написать его простым numpy и построить его с помощью matplotlib:

Преимущество: MSE отлично подходит для того, чтобы гарантировать, что наша обученная модель не имеет резко отклоняющихся прогнозов с огромными ошибками, поскольку MSE придает больший вес этим ошибкам из-за возведения в квадрат части функции.

Недостаток: если наша модель дает один очень плохой прогноз, возведение в квадрат функции увеличивает ошибку. Тем не менее, во многих практических случаях мы не обращаем особого внимания на эти выбросы и стремимся к более всесторонней модели, которая достаточно хорошо работает с большинством.

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

Средняя абсолютная ошибка (MAE) лишь немного отличается по определению от MSE, но, что интересно, обеспечивает почти полностью противоположные свойства! Чтобы вычислить MAE, вы берете разницу между предсказаниями вашей модели и истинной истиной, применяете абсолютное значение к этой разнице, а затем усредняете ее по всему набору данных.

MAE, как и MSE, никогда не будет отрицательным, поскольку в этом случае мы всегда берем абсолютное значение ошибок. MAE формально определяется следующим уравнением:

И снова наш код на Python очень простой! Мы можем написать его простым numpy и построить график с помощью matplotlib. На этот раз мы нанесем его красным цветом прямо поверх MSE, чтобы увидеть, как они сравниваются.

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

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

(3) потеря Хубера

Теперь мы знаем, что MSE отлично подходит для изучения выбросов, в то время как MAE отлично подходит для их игнорирования. Но как насчет чего-то посередине?

Рассмотрим пример, в котором у нас есть набор данных из 100 значений, которые мы хотим, чтобы наша модель была обучена предсказывать. Из всех этих данных 25% ожидаемых значений равны 5, а остальные 75% - 10.

Потеря MSE не поможет, поскольку у нас действительно нет «выбросов»; 25% - отнюдь не малая доля. С другой стороны, мы не обязательно хотим занижать эти 25% с помощью MAE. Эти значения 5 не близки к медиане (10 - поскольку 75% точек имеют значение 10), но они также не являются выбросами.

Наше решение?

Функция потерь Хубера.

Huber Loss предлагает лучшее из обоих миров, балансируя вместе MSE и MAE. Мы можем определить его, используя следующую кусочную функцию:

По сути, это уравнение говорит о следующем: для значений потерь меньше дельты используйте MSE; для значений потерь больше дельты используйте MAE. Это эффективно сочетает в себе лучшее из двух функций потерь!

Использование MAE для больших значений потерь снижает вес, который мы накладываем на выбросы, так что мы по-прежнему получаем хорошо продуманную модель. В то же время мы используем MSE для меньших значений потерь, чтобы поддерживать квадратичную функцию около центра.

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

Ознакомьтесь с приведенным ниже кодом для функции потери Хубера. Мы также наносим на график потери Хубера рядом с MSE и MAE, чтобы сравнить разницу.

Обратите внимание, как мы можем получить убыток Хубера прямо между MSE и MAE.

Лучшее из обоих миров!

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

Любите учиться?

Следуйте за мной в твиттере, где я публикую все о новейших и величайших достижениях искусственного интеллекта, технологий и науки! Присоединяйтесь и ко мне в LinkedIn!