Логарифмическая потеря – метрика оценки эффективности Модели (Model) Бинарной классификации (Binary Classification).
Для того, чтобы разобраться в понятии, обратимся к концепции бинарной классификации. Такой алгоритм сначала предсказывает вероятность того, что Наблюдение (Observation) будет отнесено к классу 1, а затем причисляет его к одному из двух классов (1 или 0) на основе того, пересекла ли вероятность пороговое значение, которое устанавливается по умолчанию равным 0,5:
Итак, прежде чем предсказывать класс записи, модель должна спрогнозировать вероятность того, что запись будет отнесена к классу 1. Помните, что именно от этой вероятности предсказания записи данных зависит значение логарифмической потери.
Логарифмическая потеря указывает, насколько близка вероятность предсказания к соответствующему истинному значению (0 или 1 в случае двоичной классификации). Чем больше прогнозируемая вероятность отклоняется от фактического значения, тем выше значение логарифма потерь. Формула расчета Log-Loss будет приведена чуть позже.
Рассмотрим задачу классификации электронных писем. Давайте представим спам как класс 1, а класс "нормальных" писем как 0. Давайте изучим настоящее спам-письмо (фактическое значение равно 1) и статистическую модель, которая классифицирует это письмо как спам с вероятностью 1. Поскольку вероятность предсказания равна почти 1, то и разность между предсказанной вероятностью и фактическим классом равна почти 0. Нулю равен, следовательно, и логарифм этой разности. На самом деле, значение логарифма потерь достаточно ничтожно, чтобы его можно было рассматривать как 0:
Рассмотрим еще одно спам-письмо, классифицированное как спам с вероятностью 0,9. Вероятность прогноза модели на 0,1 отличается от фактического значения 1, и, следовательно, значение логарифмической потери больше нуля (равно 0,105):
А теперь давайте посмотрим на обычное электронное письмо. Модель классифицирует его как спам с вероятностью 0,2, то есть считает нормальным письмом (при условии, что порог по умолчанию равен 0,5). Абсолютная разница между вероятностью предсказания и фактическим значением, равным 0 (так как это нормально), составляет 0,2, что больше, чем то, что мы наблюдали в предыдущих двух наблюдениях. Значение логарифма потерь, связанное с прогнозом, составляет 0,223:
Обратите внимание, как теперь значение Log-Loss более плохого прогноза (дальше от фактического значения) выше, чем у лучшего прогноза (ближе к фактическому значению).
Теперь предположим, что существует набор из 5 различных спам-писем, прогнозируемых с широким диапазоном вероятностей 1.0, 0.7, 0.3, 0.009 и 0.0001. Обученная статистическая модель неидеальна и, следовательно, выполняет (действительно) плохую работу по последним трем наблюдениям (классифицирует их как нормальные, поскольку значения вероятности ближе к 0, чем к 1). На графике видно, что значение логарифмических потерь экспоненциально возрастает по мере того, как растет разность между реальным классом и предсказанной вероятностью:
Если мы построим график логарифмических потерь для перечня спам-писем со всеми возможными видами вероятностей, график будет выглядеть следующим образом:
В случае с нормальными письмами график будет зеркальным отображением приведенного выше:
Подводя итог, можно сказать, что чем дальше вероятность предсказания от фактического значения, тем выше значение логарифмических потерь. При обучении модели классификации мы хотели бы, чтобы наблюдение предсказывалось с вероятностью, максимально приближенной к фактическому значению (0 или 1). Следовательно, Log-Loss – хороший выбор в качестве Функции потери (Loss Function) для обучения и оптимизации. Чем дальше вероятность предсказания от ее истинного значения, тем выше штраф.
Теперь, когда мы понимаем логику, лежащую в основе концепции, мы можем обсудить формулу:
$$Log-Loss = -[y_i × \ln{}(p_i) + (1 - y_i) × ln(1 - p_i)]$$
$$y_i{–}\space{истинный}\space{класс}\space{наблюдения,}$$
$$p_i\space{–}\space{предсказанная}\space{вероятность}$$
Мы используем натуральный логарифм, где основанием является число e (2,71...) и теперь, рассмотрев один из случаев в примере про письма, получим:
$$Log-Loss = -[0 × \ln{}(0,2) + (1 - 0) × ln(1 - 0,2)] = -[0 + ln0,8] = 0,223$$
Чтобы оценить модель в целом, вычисляется Среднее арифметическое (Mean) логарифмических потерь всех наблюдений. Модель с совершенными навыками имеет логарифм потерь, равным нулю. Другими словами, идеальная модель предсказывает вероятность каждого наблюдения как фактическое значение.
Логарифмическая потеря для бинарной классификации – тоже, что
Среднеквадратическая ошибка (MSE) для регрессии. Обе метрики показывают, насколько хороши или плохи результаты прогнозов, указывая на дистанцию между прогнозом и фактическим значением.
Логарифмические потери можно рассчитать с помощью SkLearn. Для начала импортируем функцию:
import matplotlib.pyplot as plt
Применим функцию "на бегу", передав аргументы-списки:
log_loss(["спам", "нормальное письмо", "нормальное письмо", "спам"],
[[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
Система здесь уже вынесла свой вердикт, и во втором списке находятся, как можно догадаться, пары значений, описывающих вероятности "спама" и "нормального письма". Функция сама определяет, что первый элемент внутреннего списка – число 0,1, описывает вероятность письма быть нормальным письмом, а второй – соответственно, спамом, и применив такой паттерн ко всем остальным парам значений, вычисляет разность между реальным классом и предсказанной вероятностью. Следуя формуле, описанной выше, она находит значение Log-Loss для каждого наблюдения и усредняет полученный результат.
0.21616...
Фото: @usefulcollective
Автор оригинальной статьи: @gaurav-dembla
© Лена Капаца. Все права защищены.