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

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

Существует множество вариантов выбора функции потерь.

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

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

Краткий ответ на это двоякий.

  1. Вы можете выбрать другую библиотеку машинного обучения, которая минимизирует функцию потерь, которую вы хотите использовать. Например, когда вы хотите использовать линейную модель, вам не нужно минимизировать MSE, statsmodels предлагает вам широкий выбор обобщенных линейных моделей — все с разными функциями потерь.
  2. Многие библиотеки машинного обучения действительно позволяют указывать пользовательские функции потерь. С помощью xgboost, lightGBM и catboost все самые популярные фреймворки для бустинга позволяют задавать пользовательские функции потерь. Pytorch и Tensorflow позволяют выбирать из широкого спектра функций потерь и т. д.
    Действительно, sklearn не позволяет задавать пользовательские функции потерь, а также SparkML также не предлагает большого выбора в этом отношении. Но в целом существует множество вариантов построения моделей с различными функциями потерь, и вам не нужно ничего реализовывать самостоятельно, чтобы использовать их.

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

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

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

Выбор показателей оценки должен определяться вашей бизнес-задачей.

Комментарий Кэсси:«Только новичок настаивает на использовании своей функции потерь для оценки производительности; профессионалы обычно выполняют две или более функции подсчета очков».

Метрики оценки — это в основном инструмент для специалистов по данным, позволяющий понять различные аспекты производительности их моделей, и они часто используются для принятия решений по моделированию.

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

Кэсси утверждает, что метрика оценки должна быть понятна людям. Этого можно легко добиться для функции потерь, такой как логарифм потерь (или, возможно, вероятность из регрессии Пуассона), сопоставив ее с той же метрикой для наивной модели без каких-либо функций. Затем вы можете сообщить, например, что ваши потери журнала составляют две трети от наивной модели — что в основном и делает «Псевдо R2».

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

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

Вы пытаетесь ранжировать клиентов в соответствии с вероятностью оттока, но вас не волнует фактический прогноз вероятности? Тогда AUC-ROC может быть хорошим выбором, поскольку он в основном основан на ранжировании.

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

Различия между функцией потерь и метрикой оценки могут ограничить вашу эффективность

Комментарий Кэсси: Использовали ли вы свою «функцию потерь для оценки производительности вашей системы машинного обучения? Это ошибка,..."

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

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

Если вы минимизируете потери логарифма, ваш AUC-ROC, как правило, не будет максимальным. Если вы минимизируете MSE, вы не минимизируете MAE. Эти показатели могут быть коррелированы, но корреляция не будет идеальной. Так что, если MAE — это то, что волнует вас и ваших заинтересованных лиц, минимизируйте MAE.



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

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

Нюансированное понимание против эмпирических правил

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

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

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

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