Лог-лосс

В машинном обучении вы можете решать задачи предсказательного моделирования через задачи классификации. Для каждого наблюдения в модели необходимо предсказать метку класса. Входные данные будут содержать любую из следующих переменных: категориальные переменные или непрерывные переменные. Однако выходные данные всегда будут содержать категориальную переменную. Мы можем понять эту концепцию на следующем примере. Допустим, мы прогнозируем погоду в районе. В качестве входных характеристик мы будем рассматривать время года и информацию о погоде. Информация о погоде будет включать температуру, скорость ветра, влажность, облачность/солнце. На выходе мы получим информацию о том, будет ли дождь или нет. В другом примере мы можем предсказать, является ли электронное письмо спамом или нет, учитывая информацию об отправителе и содержание письма в качестве выходных данных.
Потеря журнала является важной метрикой классификации для прогнозов, основанных на вероятностях. Хотя интерпретация необработанных значений log-loss является непростой задачей, вы найдете log-loss эффективным методом сравнения одной модели машинного обучения с другой. Помните, что для нахождения хороших прогнозов для любой проблемы следует рассматривать меньшее значение log-loss. Лог-лосс также можно назвать кросс-энтропийной потерей или логистической потерей.
Функция потерь полезна для многономинальных моделей, таких как логистическая регрессия и ее расширения. Расширения включают нейронные сети и другие типы моделей. Другими словами, функция потерь – это отрицательное логарифмическое правдоподобие в логистической модели. При условии, что модель возвращает (y_pred) вероятности для обучения данных (y_true).
Вы можете определить log loss только для двух меток и более. Уравнение для log loss, рассматривающее первую выборку с оценкой вероятности p=Pr (y=1) и истинной меткой y∈{0,1}, будет иметь вид:
Llog(y,p)=-(ylog(p)+(1-y)log(1-p)).
Предположим, что предсказанные вероятности модели для трех домов равны [0.8, 0.4, 0.1]. Из всех этих домов не был продан только последний. Поэтому вы численно представите конечный результат от этих входных данных как [1, 1, 0].
Ниже мы рассмотрим различные типы функций потерь для конкретной функции потерь. Для вычислений мы будем использовать Python:
Потеря средней квадратичной ошибки – это функция потерь регрессии. MSE вычисляется как среднее квадратичное отклонение между предсказанными и фактическими значениями. Независимо от того, какой знак имеют прогнозируемые и фактические значения, вы всегда будете получать положительный результат. Идеальным значением будет 0,0. Несмотря на то, что вы можете сделать отрицательный результат и использовать значение потерь для процесса оптимизации максимизации, результат будет минимальным. Следующая функция Python вычислит среднюю квадратичную ошибку. Кроме того, вы можете составить список прогнозируемых и фактических реальных величин.
# вычислить среднюю квадратичную ошибку
def mean_squared_error(actual, predicted):
sum_square_error = 0.0
for i in range(len(actual)):
sum_square_error += (actual[i] – predicted[i])**2.0
mean_square_error = 1.0 / len(actual) * sum_square_error
return mean_square_error
Для эффективной реализации потери на ошибку следует использовать функцию mean squared error().
Перекрестную энтропийную потерю можно назвать логарифмической потерей, перекрестной энтропией, логарифмической потерей или логистической потерей. Она показывает, что каждая вероятность, которую вы предсказываете, сравнивается с фактическим значением выхода класса как 0 или 1. Эта техника вычисляет балл. Эта оценка штрафует вероятность из-за расстояния между выходным значением и ожидаемым значением. Характер штрафа будет логарифмическим. Большая разница будет содержать огромную оценку, например, 0,9 или 10. Однако меньшие различия будут содержать небольшие баллы, такие как 0,1 или 0,2.
Модель с точными вероятностями будет содержать логарифмическую потерю или кросс-энтропию, равную 0,0. Это указывает на то, что потери кросс-энтропии минимальны, и меньшие значения будут представлять хорошую модель, а не большие. Среди всех примеров, кросс-энтропия для двухклассового предсказания или бинарных задач будет вычислять среднюю кросс-энтропию.
Следующие функции Python помогут вам рассчитать Log Loss. Вы должны реализовать этот псевдокод, сравнить значения 0 и 1 и предсказать вероятности для класса 1. Таким образом, вы сможете вычислить Log Loss:
from math import log
# вычислить бинарную перекрестную энтропию
def binary_cross_entropy(actual, predicted):
sum_score = 0.0
for i in range(len(actual)):
sum_score += actual[i] * log(1e-15 + predicted[i])
mean_sum_score = 1.0 / len(actual) * sum_score
return -mean_sum_score
Чтобы избежать ошибки, мы должны добавить небольшое значение в предсказанные вероятности. Это означает, что наилучшей вероятностью будет значение ближе к нулю, но оно не должно быть точно нулевым. Вы можете рассчитать кросс-энтропию для классификации по нескольким классам. На основе каждого класса прогнозы должны включать предсказанные вероятности и содержать бинарные признаки. Тогда кросс-энтропия будет представлять собой сумму средних и бинарных признаков всех примеров в наборе данных.
Следующая функция Python поможет вам рассчитать перекрестную энтропию списка закодированных значений. Она поможет сравнить предсказанные возможности и закодированные значения для каждого класса:
from math import log
# вычислить категориальную перекрестную энтропию
def categorical_cross_entropy(actual, predicted):
sum_score = 0.0
for i in range(len(actual)):
for j in range(len(actual[i]))):
sum_score += actual[i][j] * log(1e-15 + predicted[i][j])
mean_sum_score = 1.0 / len(actual) * sum_score
return -mean_sum_score
Для эффективной реализации перекрестной энтропии следует использовать функцию log_loss().
Следует осторожно интерпретировать навыки модели, использующей log-loss, из-за низкого значения log-loss и несбалансированного набора данных. При создании статистической модели она должна достичь базового значения log-loss в зависимости от данного набора данных. Если она не достигает показателя log-loss, то обученная статистическая модель неточна и бесполезна. В этом случае для определения log-потери вероятности следует использовать более совершенную модель.