Понимание того, как работает метрика потери журналов, и ее создание с нуля

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

В этой статье мы поймем, как работает метрика потери журналов, и сами будем кодировать метрику потери журналов с нуля.

Log Loss, как следует из названия, является показателем потерь, а потери - это не то, что нам нужно, поэтому мы стараемся сократить наши потери до минимума. Мы хотим, чтобы наш показатель потери журнала был как можно меньше, поэтому мы минимизируем потери журнала. Log Loss может находиться в диапазоне от 0 до бесконечности.

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

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

Результат выглядит как массив ниже

Массив слева - это вероятности 0, а массив справа - вероятности 1.

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

Чтобы импортировать метрику потери журнала из scikit-learn

Формула потери журнала:

где yp - это вероятность точки, а yt - цель или метка точки либо 0, либо 1.

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

Часть перед знаком равенства

на простом английском языке можно прочитать как «Отрицательный логарифм yt с учетом yp».

Первая часть уравнения:

где yp - это вероятность точки, а yt - цель или метка точки либо 0, либо 1.

Он берет логарифм вероятности и умножает его на yt.

Вторая часть уравнения:

Правая часть, то есть log (1 - yp), берет вероятность точки и вычитает ее из 1, прежде чем взять логарифм, затем левая часть (1 - yt) принимает класс либо 1, либо 0 и также вычитает его из 1, после чего берется произведение двух.

Возьмем 4 примера:

Пример 1: пусть yt = 1 и yp = 0,88

Первая часть уравнения:

Вторая часть уравнения:

Собираем два уравнения вместе

Пример 2: пусть yt = 0 и yp = 0,21

Первая часть уравнения:

Вторая часть уравнения:

Собираем два уравнения вместе

Пример 3: пусть yt = 1 и yp = 0,10

Первая часть уравнения:

Вторая часть уравнения:

Собираем два уравнения вместе

Пример 4: пусть yt = 0 и yp = 0,90

Первая часть уравнения:

Вторая часть уравнения:

Собираем два уравнения вместе

Вы уже должны были заметить, что одна часть уравнения вернет 0 в зависимости от целевого yt.

Затем формула применяется к каждой точке и возвращается среднее значение результатов.

Это также может быть распространено на проблемы с несколькими классами, но цель должна быть закодирована в горячем режиме.

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

Внедрение Log Loss с нуля и сравнение с метрикой Log Loss в Scikit-Learn

Мы видим, что это точно так же, как результат scikit-learn, даже с точностью до десятичной дроби, Хорошо !!

Плюсы

  1. Приводит к лучшей оценке вероятности.

Минусы:

  1. Его сложно интерпретировать, поскольку он может варьироваться от 0 до бесконечности.

Спасибо за прочтение

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

Вы можете связаться со мной по:

LinkedIn: https://www.linkedin.com/in/temiloluwa-awoyele/

Twitter: https://twitter.com/temmyzeus100

Github: https://github.com/temmyzeus