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

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

Потеря журнала является важной метрикой классификации для прогнозов, основанных на вероятностях. Хотя интерпретация необработанных значений 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

Ниже мы рассмотрим различные типы функций потерь для конкретной функции потерь. Для вычислений мы будем использовать 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().

– Потеря перекрестной энтропии (или Log Loss)

Перекрестную энтропийную потерю можно назвать логарифмической потерей, перекрестной энтропией, логарифмической потерей или логистической потерей. Она показывает, что каждая вероятность, которую вы предсказываете, сравнивается с фактическим значением выхода класса как 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-потери вероятности следует использовать более совершенную модель.