Logloss что это
Перейти к содержимому

Logloss что это

  • автор:

Функции оценки, потерь, оптимизации – основы алгоритма Машинного Обучения

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

Адаптированный перевод прекрасной статьи энтузиаста технологий машинного обучения Javaid Nabi.

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

Функции оценки

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

Под количеством интересующих параметров обычно подразумевается:
• Один параметр
• Вектор параметров – например, веса в линейной регрессии
• Целая функция

Точечная оценка

Чтобы отличать оценки параметров от их истинного значения, представим точечную оценку параметра θ как θˆ. Пусть будут m независимыми и одинаково распределенными величинами. Тогда точечная оценка может быть записана как некоторая функция этих величин:

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

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

Функция оценки

Задача, решаемая машинным обучением, заключается в попытке предсказать переменную y по заданному входному вектору x. Мы предполагаем, что существует функция f(x), которая описывает приблизительную связь между y и x. Например, можно предположить, что y = f(x) + ε, где ε обозначает часть y, которая явно не предсказывается входным вектором x. При оценке функций нас интересует приближение f с помощью модели или оценки fˆ. Функция оценки в действительности это тоже самое, что оценка параметра θ; функция оценки f это просто точечная оценка в функциональном пространстве. Пример: в полиномиальной регрессии мы либо оцениваем параметр w, либо оцениваем функцию отображения из x в y.

Смещение и дисперсия

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

Смещение

Смещение определяется следующим образом:

где ожидаемое значение E(θˆm) для данных (рассматриваемых как выборки из случайной величины) и θ является истинным базовым значением, используемым для определения распределения, генерирующего данные.

Оценщик θˆm называется несмещенным, если bias(θˆm)=0, что подразумевает что E(θˆm) = θ.

Дисперсия и Стандартная ошибка

Дисперсия оценки обозначается как Var(θˆ), где случайная величина является обучающим множеством. Альтернативно, квадратный корень дисперсии называется стандартной ошибкой, обозначаемой как SE(θˆ). Дисперсия или стандартная ошибка оценщика показывает меру ожидания того, как оценка, которую мы вычисляем, будет изменяться по мере того, как мы меняем выборки из базового набора данных, генерирующих процесс.

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

Давайте теперь рассмотрим некоторые обычно используемые функции оценки.

Оценка Максимального Правдоподобия (MLE)

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

Рассмотрим набор из m примеров X= взятых независимо из неизвестного набора данных, генерирующих распределение Pdata(x). Пусть Pmodel(x;θ) – параметрическое семейство распределений вероятностей над тем же пространством, индексированное параметром θ. Другими словами, Pmodel(x;θ) отображает любую конфигурацию x в значение, оценивающее истинную вероятность Pdata(x).

Оценка максимального правдоподобия для θ определяется как:

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

Эта произведение многих вероятностей может быть неудобным по ряду причин. В частности, оно склонно к числовой недооценке. Кроме того, чтобы найти максимумы/минимумы этой функции, мы должны взять производную этой функции от θ и приравнять ее к 0. Поскольку это произведение членов, нам нужно применить правило цепочки, которое довольно громоздко. Чтобы получить более удобную, но эквивалентную задачу оптимизации, можно использовать логарифм вероятности, который не меняет его argmax, но удобно превращает произведение в сумму, и поскольку логарифм – строго возрастающая функция (функция натурального логарифма – монотонное преобразование), это не повлияет на итоговое значение θ.

В итоге, получаем:

Два важных свойства: сходимость и эффективность

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

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

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

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

Максимальная апостериорная (MAP) оценка

Согласно байесовскому подходу, можно учесть влияние предварительных данных на выбор точечной оценки. MAP может использоваться для получения точечной оценки ненаблюдаемой величины на основе эмпирических данных. Оценка MAP выбирает точку максимальной апостериорной вероятности (или максимальной плотности вероятности в более распространенном случае непрерывного θ):

где с правой стороны, log(p(x|θ)) – стандартный член логарифмической вероятности и log(p(θ)) соответствует изначальному распределению.

Как и при полном байесовском методе, байесовский MAP имеет преимущество
использования изначальной информации, которой нет в обучающих данных. Эта дополнительная информация помогает уменьшить дисперсию для точечной оценки MAP (по сравнению с оценкой MLE). Однако, это происходит ценой повышенного смещения.

Функции потерь

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

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

Давайте рассмотрим некоторые часто используемые функции потерь.

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

где y (i) – фактический ожидаемый результат, а ŷ (i) – прогноз модели.

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

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

Получение MSE из MLE

Алгоритм линейной регрессии учится принимать входные данные x и получать выходные значения ŷ. Отображение x в ŷ делается так, чтобы минимизировать среднеквадратичную ошибку. Но как мы выбрали MSE в качестве критерия для линейной регрессии? Придем к этому решению с точки зрения оценки максимального правдоподобия. Вместо того, чтобы производить одно предсказание ŷ , давайте рассмотрим модель условного распределения p(y|x).

Можно смоделировать модель линейной регрессии следующим образом:

мы предполагаем, что у имеет нормальное распределение с ŷ в качестве среднего значения распределения и некоторой постоянной σ² в качестве дисперсии, выбранной пользователем. Нормальное распределения являются разумным выбором во многих случаях. В отсутствие предварительных данных о том, какое распределение в действительности соответствует рассматриваемым данным, нормальное распределение является хорошим выбором по умолчанию.

Вернемся к логарифмической вероятности, определенной ранее:

где ŷ(i) – результат линейной регрессии на i-м входе, а m – количество обучающих примеров. Мы видим, что две первые величины являются постоянными, поэтому максимизация логарифмической вероятности сводится к минимизации MSE:

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

Кросс-энтропия (или логарифмическая функция потерь – log loss): Кросс-энтропия измеряет расхождение между двумя вероятностными распределениями. Если кросс-энтропия велика, это означает, что разница между двумя распределениями велика, а если кросс-энтропия мала, то распределения похожи друг на друга.

Кросс-энтропия определяется как:

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

Давайте еще упростим это для нашей модели с:
• N – количество наблюдений
• M – количество возможных меток класса (собака, кошка, рыба)
• y – двоичный индикатор (0 или 1) того, является ли метка класса C правильной классификацией для наблюдения O
• p – прогнозируемая вероятность модели

Бинарная классификация

В случае бинарной классификации (M=2), формула имеет вид:

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

Визуализация

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

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

Мульти-классовая классификация

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

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

Задачи ML и соответствующие функции потерь

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

Задача регрессии

Задача, когда вы прогнозируете вещественное число.

Конфигурация выходного уровня: один узел с линейной единицей активации.
Функция потерь: средняя квадратическая ошибка (MSE).

Задача бинарной классификации

Задача состоит в том, чтобы классифицировать пример как принадлежащий одному из двух классов. Или более точно, задача сформулирована как предсказание вероятности того, что пример принадлежит первому классу, например, классу, которому вы присваиваете целочисленное значение 1, тогда как другому классу присваивается значение 0.

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

Задача мульти-классовой классификации

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

Конфигурация выходного уровня: один узел для каждого класса, использующий функцию активации softmax.
Функция потерь: кросс-энтропия, также называемая логарифмической функцией потерь.

Рассмотрев оценку и различные функции потерь, давайте перейдем к роли оптимизаторов в алгоритмах ML.

Оптимизаторы

Чтобы свести к минимуму ошибку или потерю в прогнозировании, модель, используя примеры из обучающей выборки, обновляет параметры модели W. Расчеты ошибок строятся в зависимости от W и также описываются графиком функции затрат J(w), поскольку она определяет затраты/наказание модели. Таким образом, минимизация ошибки также часто называется минимизацией функции затрат.

Но как именно это делается? Используя оптимизаторы.

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

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

Градиентный Спуск

Когда мы строим функцию затрат J(w), это можно представить следующим образом:

Как видно из кривой, существует значение параметров W, которое имеет минимальное значение Jmin. Нам нужно найти способ достичь этого минимального значения.

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

Повторяем до достижения минимума:

В приведенном выше уравнении мы обновляем параметры модели после каждой итерации. Второй член уравнения вычисляет наклон или градиент кривой на каждой итерации.

Градиент функции затрат вычисляется как частная производная функции затрат J по каждому параметру модели Wj, где j принимает значение числа признаков [1, n]. α – альфа, это скорость обучения, определяющий как быстро мы хотим двигаться к минимуму. Если α слишком велико, мы можем проскочить минимум. Если α слишком мало, это приведет к небольшим этапам обучения, поэтому общее время, затрачиваемое моделью для достижения минимума, будет больше.

Есть три способа сделать градиентный спуск:

Пакетный градиентный спуск: использует все обучающие данные для обновления параметров модели в каждой итерации.

Мини-пакетный градиентный спуск: вместо использования всех данных, мини-пакетный градиентный спуск делит тренировочный набор на меньший размер, называемый партией, и обозначаемый буквой «b». Таким образом, мини-пакет «b» используется для обновления параметров модели на каждой итерации.

Вот некоторые другие часто используемые Оптимизаторы:

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

Адаград

Адаград адаптирует скорость обучения конкретно к индивидуальным особенностям: это означает, что некоторые веса в вашем наборе данных будут отличаться от других. Это работает очень хорошо для разреженных наборов данных, где пропущено много входных значений. Однако, у Адаграда есть одна серьезная проблема: адаптивная скорость обучения со временем становится очень маленькой.

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

RMSprop

RMSprop – это специальная версия Adagrad, разработанная профессором Джеффри Хинтоном в его классе нейронных сетей. Вместо того, чтобы вычислять все градиенты, он вычисляет градиенты только в фиксированном окне. RMSprop похож на Adaprop, это еще один оптимизатор, который пытается решить некоторые проблемы, которые Адаград оставляет открытыми.

Адам

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

Вы только что ознакомились с кратким обзором оптимизаторов. Более подробно об этом можно прочитать здесь.

Я надеюсь, что после прочтения этой статьи, вы будете лучше понимать что происходит, когда Вы пишите следующий код:

# loss function: Binary Cross-entropy and optimizer: Adam model.compile(loss='binary_crossentropy', optimizer='adam')
# loss function: MSE and optimizer: stochastic gradient descent model.compile(loss='mean_squared_error', optimizer='sgd')

Спасибо за проявленный интерес!

Пережевывая логистическую регрессию

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

  1. Повторим о прямолинейной зависимости между двумя переменными
  2. Выявим необходимость преобразования функции линейной регрессии в функцию логистического отклика
  3. Проведем преобразования и выведем функцию логистического отклика
  4. Попытаемся понять, чем плох метод наименьших квадратов при подборе параметров функции Logistic Loss
  5. Используем метод максимального правдоподобия для определения функции подбора параметров :

5.1. Случай 1: функция Logistic Loss для объектов с обозначением классов 0 и 1:

5.2. Случай 2: функция Logistic Loss для объектов с обозначением классов -1 и +1:

Данная статья в большей мере рассчитана на датасайнтистов с начальным уровнем познаний в основах машинного обучения.

В статье также будет приведен код для отрисовки графиков и расчетов. Весь код написан на языке python 2.7. Заранее поясню о «новизне» используемой версии — таково одно из условий прохождения известного курса от Яндекса на не менее известной интернет-площадке онлайн образования Coursera, и, как можно предположить, материал подготовлен по мотивам этого курса.

01. Прямолинейная зависимость

Вполне резонно задать вопрос — причем здесь прямолинейная зависимость и логистическая регрессия?

Все просто! Логистическая регрессия представляет собой одну из моделей, которые относятся к линейному классификатору. Простыми словами, задачей линейного классификатора является предсказание целевых значений от переменных (регрессоров) . При этом считается, что зависимость между признаками и целевыми значениями линейная. Отсюда собственно и название классификатора — линейный. Если очень грубо обобщить, то в основе модели логистической регрессии лежит предположение о наличии линейной зависимости между признаками и целевыми значениями . Вот она — связь.

В студии первый пример, и он, правильно, о прямолинейной зависимости исследуемых величин. В процессе подготовки статьи наткнулся на пример, набивший уже многим оскомину — зависимость силы тока от напряжения («Прикладной регрессионный анализ», Н.Дрейпер, Г.Смит). Здесь мы его тоже рассмотрим.

В соответствии с законом Ома:

, где — сила тока, — напряжение, — сопротивление.

Если бы мы не знали закон Ома, то могли бы найти зависимость эмпирически, изменяя и измеряя , поддерживая при этом фиксированным. Тогда мы бы увидели, что график зависимости от дает более или менее прямую линию, проходящую через начало координат. Мы сказали «более или менее», так как, хотя зависимость фактически точная, наши измерения могут содержать малые ошибки, и поэтому точки на графике, возможно не попадут строго на линию, а будут разбросаны вокруг нее случайным образом.

График 1 «Зависимость от »

Код отрисовки графика

import matplotlib.pyplot as plt %matplotlib inline import numpy as np import random R = 13.75 x_line = np.arange(0,220,1) y_line = [] for i in x_line: y_line.append(i/R) y_dot = [] for i in y_line: y_dot.append(i+random.uniform(-0.9,0.9)) fig, axes = plt.subplots(figsize = (14,6), dpi = 80) plt.plot(x_line,y_line,color = 'purple',lw = 3, label = 'I = U/R') plt.scatter(x_line,y_dot,color = 'red', label = 'Actual results') plt.xlabel('I', size = 16) plt.ylabel('U', size = 16) plt.legend(prop = ) plt.show()

02. Необходимость преобразований уравнения линейной регрессии

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

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

Возвращаемся к примеру. Понятно, что чем выше зарплата, тем больше заемщик сможет ежемесячно направлять на погашение кредита. При этом, для определенного диапазона зарплат эта зависимость будет вполне себе линейная. Например, возьмем диапазон зарплат от 60.000Р до 200.000Р и предположим, что в указанном диапазоне заработных плат, зависимость размера ежемесячного платежа от размера заработной платы — линейная. Допустим, для указанного диапазона размера заработных плат было выявлено, что соотношение зарплаты к платежу не может опускаться ниже 3 и еще у заемщика должно оставаться в запасе 5.000Р. И только в таком случае, мы будем считать, что заемщик вернет кредит банку. Тогда, уравнение линейной регрессии примет вид:

где , , , — зарплата -го заемщика, — платеж по кредиту -го заемщика.

Подставляя в уравнение зарплату и платеж по кредиту с фиксированными параметрами можно принять решение о выдаче или отказе кредита.

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

Таблица 1 «Потенциальные заемщики»

Код для формирования таблицы

import pandas as pd r = 25000.0 w_0 = -5000.0/r w_1 = 1.0/r w_2 = -3.0/r data = df = pd.DataFrame(data) df['f(w,x)'] = w_0 + df['Salary']*w_1 + df['Payment']*w_2 decision = [] for i in df['f(w,x)']: if i > 0: dec = 'Approved' decision.append(dec) else: dec = 'Refusal' decision.append(dec) df['Decision'] = decision df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision']]

В соответствии с данными таблицы, Вася при зарплате в 120.000Р хочет получить такой кредит, чтобы ежемесячного гасить его по 3.000Р. Нами было определено, что для одобрения кредита, размер заработной платы Васи должен превышать в три раза размер платежа, и чтобы еще оставалось 5.000Р. Этому требованию Вася удовлетворяет: . Остается даже 106.000Р. Несмотря на то, что при расчете мы уменьшили коэффициенты в 25.000 раз, результат получили тот же — кредит может быть одобрен. Федя тоже получит кредит, а вот Леше, несмотря на то, что он получает больше всех, придется поумерить свои аппетиты.

Нарисуем график по такому случаю.

График 2 «Классификация заемщиков»

Код для отрисовки графика

salary = np.arange(60000,240000,20000) payment = (-w_0-w_1*salary)/w_2 fig, axes = plt.subplots(figsize = (14,6), dpi = 80) plt.plot(salary, payment, color = 'grey', lw = 2, label = '$f(w,x_i)=w_0 + w_1x_ + w_2x_$') plt.plot(df[df['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'], 'o', color ='green', markersize = 12, label = 'Decision - Loan approved') plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'], 's', color = 'red', markersize = 12, label = 'Decision - Loan refusal') plt.xlabel('Salary', size = 16) plt.ylabel('Payment', size = 16) plt.legend(prop = ) plt.show()

Итак, наша прямая, построенная в соответствии с функцией , отделяет «плохих» заемщиков от «хороших». Те заемщики, у кого желания не совпадают с возможностями находятся выше прямой (Леша), те же, кто способен согласно параметрам нашей модели, вернуть кредит, находятся под прямой (Вася и Федя). Иначе можно сказать так — наша прямая разделяет заемщиков на два класса. Обозначим их следующим образом: к классу отнесем тех заемщиков, которые скорее всего вернут кредит, к классу или отнесем тех заемщиков, которые скорее всего не смогут вернуть кредит.

Обобщим выводы из этого простенького примера. Возьмем точку и, подставляя координаты точки в соответствующее уравнение прямой , рассмотрим три варианта:

  1. Если точка находится под прямой, и мы относим ее к классу , то значение функции будет положительным от до . Значит мы можем считать, что вероятность погашения кредита, находится в пределах . Чем больше значение функции, тем выше вероятность.
  2. Если точка находится над прямой и мы относим ее к классу или , то значение функции будет отрицательным от до . Тогда мы будем считать, что вероятность погашения задолженности находится в пределах и, чем больше по модулю значение функции, тем выше наша уверенность.
  3. Точка находится на прямой, на границе между двумя классами. В таком случае значение функции будет равно и вероятность погашения кредита равна .

Благодаря функции мы знаем кому можно дать кредит, а кому нужно отказать. Но с такой информацией к директору идти нельзя, ведь от нас хотели получить вероятность возврата кредита каждым заемщиком. Что делать? Ответ простой — нам нужно как-то преобразовать функцию , значения которой лежат в диапазоне на функцию, значения которой будут лежать в диапазоне . И такая функция существует, ее называют функцией логистического отклика или обратного-логит преобразования. Знакомьтесь:

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

03. Выводим функцию логистического отклика

Шаг 1. Переведем значения вероятности в диапазон

На время трансформации функции в функцию логистического отклика мы оставим в покое нашего кредитного аналитика, а вместо этого пройдемся по букмекерским конторам. Нет, конечно, ставки делать мы не будем, все что нас там интересует, так это смысл выражения, например, шанс 4 к 1. Шансы, знакомые всем делающим ставки игрокам, являются соотношением «успехов» к «неуспехам». С точки зрения вероятностей, шансы — это вероятность наступления события, деленная на вероятность того, что событие не произойдет. Запишем формулу шанса наступления события :

, где — вероятность наступления события, — вероятность НЕ наступления события

Например, если вероятность того, что молодой, сильный и резвый конь по прозвищу «Ветерок» обойдет на скачках старую и дряблую старушку по кличке «Матильда» равняется , то шансы на успех «Ветерка» составят к и наоборот, зная шансы, нам не составит труда вычислить вероятность :

Таким образом, мы научились «переводить» вероятность в шансы, которые принимают значения от до . Сделаем еще один шаг и научимся «переводить» вероятность на всю числовую прямую от до .

Шаг 2. Переведем значения вероятности в диапазон

Шаг этот очень простой — прологарифмируем шансы по основанию числа Эйлера и получим:

Теперь мы знаем, что если , то вычислить значение будет очень просто и, более того, оно должно быть положительным: . Так и есть.

Ради любопытства проверим, что если , тогда мы ожидаем увидеть отрицательное значение . Проверяем: . Все верно.

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

А пока, отметим, что в соответствии с правилами логарифмирования, зная значение функции , можно вычислить шансы:

Этот способ определения шансов нам пригодится на следующем шаге.

Шаг 3. Выведем формулу для определения

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

В статье мы не будем выводить вышеобозначенную формулу, но проверим на цифрах из примера выше. Мы знаем, что при шансах равными 4 к 1 (), вероятность наступления события равна 0.8 (). Сделаем подстановку: . Это совпадает с нашими вычислениями, проведенными ранее. Двигаемся далее.

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

Разделим и числитель и знаменатель на , тогда:

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

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

График 3 «Функция логистического отклика»

Код для отрисовки графика

import math def logit (f): return 1/(1+math.exp(-f)) f = np.arange(-7,7,0.05) p = [] for i in f: p.append(logit(i)) fig, axes = plt.subplots(figsize = (14,6), dpi = 80) plt.plot(f, p, color = 'grey', label = '$ 1 / (1+e^)$') plt.xlabel('$f(w,x_i) = w^Tx_i$', size = 16) plt.ylabel('$p_$', size = 16) plt.legend(prop = ) plt.show()

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

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

Таблица 2 «Потенциальные заемщики»

Код для формирования таблицы

proba = [] for i in df['f(w,x)']: proba.append(round(logit(i),2)) df['Probability'] = proba df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision', 'Probability']]

Итак, вероятность возврата кредита мы определили. В целом, это похоже на правду.

Действительно, вероятность того что Вася при зарплате в 120.000Р сможет ежемесячно отдавать в банк 3.000Р близка к 100%. Кстати, мы должны понимать, что банк может выдать кредит и Леше в том случае, если политикой банка предусмотрено, например, кредитовать клиентов с вероятностью возврата кредита более, ну скажем, 0.3. Просто в таком случае банк сформирует больший резерв под возможные потери.

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

04. Метод наименьших квадратов при определении вектора весов в функции логистического отклика

Нам уже известен такой метод подбора вектора весов , как метод наименьших квадратов (МНК) и собственно, почему бы нам тогда не использовать его в задачах бинарной классификации? Действительно, ничто не мешает использовать МНК, только вот данный способ в задачах классификации дает результаты менее точные, нежели Logistic Loss. Этому есть теоретическое обоснование. Давайте для начала посмотрим на один простой пример.

Предположим, что наши модели (использующие MSE и Logistic Loss) уже начали подбор вектора весов и мы остановили расчет на каком-то шаге. Неважно, в середине, в конце или в начале, главное, что у нас уже есть какие-то значения вектора весов и допустим, что на этом шаге, вектора весов для обеих моделей не имеют различий. Тогда возьмем полученные веса и подставим их в функцию логистического отклика () для какого-нибудь объекта, который относится к классу . Исследуем два случая, когда в соответствии с подобранным вектором весов наша модель сильно ошибается и наоборот — модель сильно уверена в том, что объект относится к классу . Посмотрим какие штрафы будут «выписаны» при использовании МНК и Logistic Loss.

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

# класс объекта y = 1 # вероятность отнесения объекта к классу в соответствии с параметрами w proba_1 = 0.01 MSE_1 = (y - proba_1)**2 print 'Штраф MSE при грубой ошибке =', MSE_1 # напишем функцию для вычисления f(w,x) при известной вероятности отнесения объекта к классу +1 (f(w,x)=ln(odds+)) def f_w_x(proba): return math.log(proba/(1-proba)) LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1))) print 'Штраф Log Loss при грубой ошибке =', LogLoss_1 proba_2 = 0.99 MSE_2 = (y - proba_2)**2 LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2))) print '**************************************************************' print 'Штраф MSE при сильной уверенности =', MSE_2 print 'Штраф Log Loss при сильной уверенности =', LogLoss_2

Случай с грубой ошибкой — модель относит объект к классу с вероятностью в 0,01

Штраф при использовании МНК составит:

Штраф при использовании Logistic Loss составит:

Случай с сильной уверенностью — модель относит объект к классу с вероятностью в 0,99

Штраф при использовании МНК составит:

Штраф при использовании Logistic Loss составит:

Этот пример хорошо иллюстрирует, что при грубой ошибке функция потерь Log Loss штрафует модель значительно сильнее, чем MSE. Давайте теперь разберемся, каковы теоретические предпосылки использования функции потерь Log Loss в задачах классификации.

05. Метод максимального правдоподобия и логистическая регрессия

Как и было обещано в начале, статья изобилует простыми примерами. В студии очередной пример и старые гости — заемщики банка: Вася, Федя и Леша.

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

Возвращаемся к примеру. Представим, что директор банка решил выдать кредит всем нуждающимся, несмотря на то, что алгоритм подсказывал не выдавать его Леше. И вот прошло достаточно времени и нам стало известно кто из трех героев погасил кредит, а кто нет. Что и следовало ожидать: Вася и Федя погасили кредит, а Леша — нет. Теперь давайте представим, что этот результат будет для нас новой обучающей выборкой и, при этом у нас как будто исчезли все данные о факторах, влияющих на вероятность погашения кредита (зарплата заемщика, размер ежемесячного платежа). Тогда интуитивно мы можем полагать, что каждый третий заемщик не возвращает банку кредит или другими словами вероятность возврата кредита следующим заемщиком . Этому интуитивному предположению есть теоретическое подтверждение и основывается оно на методе максимального правдоподобия, часто в литературе его называют принципом максимального правдоподобия.

Для начала познакомимся с понятийным аппаратом.

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

Функция правдоподобия связывает правдоподобие выборки со значениями параметров распределения.

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

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

Метод максимального правдоподобия — это метод оценки неизвестного параметра путём максимизации функции правдоподобия. В нашем случае требуется найти такое значение , при котором достигает максимума.

Откуда собственно идея – искать значение неизвестного параметра, при котором функция правдоподобия достигает максимума? Истоки идеи проистекают из представления о том, что выборка – это единственный, доступный нам, источник знания о генеральной совокупности. Все, что нам известно о генеральной совокупности, представлено в выборке. Поэтому, все, что мы можем сказать, так это то, что выборка – это наиболее точное отражение генеральной совокупности, доступное нам. Следовательно, нам требуется найти такой параметр, при котором имеющаяся выборка становится наиболее вероятной.

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

Давайте, в соответствии с вышеизложенным, продолжим развивать наш пример с кредитами у Васи, Феди и Леши. Для начала перейдем к логарифму функции правдоподобия:

Теперь мы можем с легкостью продифференцировать выражение по :

И наконец, рассмотрим условие первого порядка — приравняем производную функции к нулю:

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

Отлично, но что нам теперь делать с такой информацией? Если мы будем считать, что каждый третий заемщик не вернет банку деньги, то последний неизбежно разорится. Так-то оно так, да только при оценке вероятности погашения кредита равной мы не учли факторы, влияющие на возврат кредита: заработная плата заемщика и размер ежемесячного платежа. Вспомним, что ранее мы рассчитали вероятность возврата кредита каждым клиентом с учетом этих самых факторов. Логично, что и вероятности у нас получились отличные от константы равной .

Давайте определим правдоподобие выборок:

Код для расчетов правдоподобий выборок

from functools import reduce def likelihood(y,p): line_true_proba = [] for i in range(len(y)): ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i]) line_true_proba.append(ltp_i) likelihood = [] return reduce(lambda a, b: a*b, line_true_proba) y = [1.0,1.0,0.0] p_log_response = df['Probability'] const = 2.0/3.0 p_const = [const, const, const] print 'Правдоподобие выборки при константном значении p=2/3:', round(likelihood(y,p_const),3) print '****************************************************************************************************' print 'Правдоподобие выборки при расчетном значении p:', round(likelihood(y,p_log_response),3)

Правдоподобие выборки при константном значении :

Правдоподобие выборки при расчете вероятности погашения кредита с учетом факторов :

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

Но тогда, если нам требуется максимизировать функцию правдоподобия выборки, то почему бы не использовать какой-нибудь алгоритм, который будет выдавать вероятности для Васи, Феди и Леши, например, равными 0.99, 0.99 и 0.01 соответственно. Возможно такой алгоритм и хорошо себя проявит на обучающей выборке, так как приблизит значение правдоподобия выборки к , но, во-первых, у такого алгоритма будут, скорее всего трудности с обобщающей способностью, во-вторых, этот алгоритм будет точно не линейным. И если, методы борьбы с переобучением (равно слабая обобщающая способность) явно не входят в план этой статьи, то по второму пункту давайте пройдемся подробнее. Для этого, достаточно ответить на простой вопрос. Может ли вероятность погашения кредита Васей и Федей быть одинаковой с учетом известных нам факторов? С точки зрения здравой логики конечно же нет, не может. Так на погашение кредита Вася будет отдавать 2.5% своей зарплаты в месяц, а Федя — почти 27,8%. Также на графике 2 «Классификация клиентов» мы видим, что Вася находится значительно дальше от линии, разделяющей классы, чем Федя. Ну и наконец, мы знаем, что функция для Васи и Феди принимает различные значения: 4.24 для Васи и 1.0 для Феди. Вот если бы Федя, например, зарабатывал на порядок больше или кредит поменьше просил, то тогда вероятности погашения кредита у Васи и Феди были бы схожими. Другими словами, линейную зависимость не обманешь. И если бы мы действительно рассчитали коэффициенты , а не взяли их с потолка, то могли бы смело заявить, что наши значения лучше всего позволяют оценить вероятность погашения кредита каждым заемщиком, но так как мы условились считать, что определение коэффициентов было проведено по всем правилам, то мы так и будем считать — наши коэффициенты позволяют дать лучшую оценку вероятности 🙂

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

Кратко резюмируем, с каким арсеналом мы выступаем на поиски коэффициентов :

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

2. Мы используем функцию обратного логит-преобразования вида для определения вероятности принадлежности объекта к классу .

3. Мы рассматриваем нашу обучающую выборку как реализацию обобщенной схемы Бернулли, то есть для каждого объекта генерируется случайная величина, которая с вероятностью (своей для каждого объекта) принимает значение 1 и с вероятностью – 0.

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

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

Вот такая многоходовочка получается 🙂

А теперь вспомним, что в самом начале статьи мы хотели вывести два вида функции потерь Logistic Loss в зависимости от того как обозначаются классы объектов. Так повелось, что в задачах классификации с двумя классами, классы обозначают как и или . В зависимости от обозначения, на выходе будет соответствующая функция потерь.

Случай 1. Классификация объектов на и

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

На самом деле — это значение функции логистического отклика при заданном векторе весов

Тогда нам ничто не мешает записать функцию правдоподобия выборки так:

Бывает так, что иногда, некоторым начинающим аналитикам сложно сходу понять, как эта функция работает. Давайте рассмотрим 4 коротких примера, которые все прояснят:

1. Если (т.е. в соответствии с обучающей выборкой объект относится к классу +1), а наш алгоритм определяет вероятность отнесения объекта к классу равной 0.9, то вот этот кусочек правдоподобия выборки будет рассчитываться так:

2. Если , а , то расчет будет таким:

3. Если , а , то расчет будет таким:

4. Если , а , то расчет будет таким:

Очевидно, что функция правдоподобия будет максимизироваться в случаях 1 и 3 или в общем случае — при правильно отгаданных значениях вероятностей отнесения объекта к классу .

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

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

Собственно, сейчас, на ваших глазах была много страдальчески выведена функция потерь — Logistic Loss для обучающей выборки с двумя классами: и .

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

Случай 2. Классификация объектов на и

Подход здесь будет такой же, как и с классами и , но сама дорожка к выводу функции потерь Logistic Loss, будет более витиеватой. Приступаем. Будем для функции правдоподобия использовать оператор «если. то. ». То есть, если -ый объект относится к классу , то для расчета правдоподобия выборки используем вероятность , если объект относится к классу , то в правдоподобие подставляем . Вот так выглядит функция правдоподобия:

На пальцах распишем как это работает. Рассмотрим 4 случая:

1. Если и , то в правдоподобие выборки «пойдет»

2. Если и , то в правдоподобие выборки «пойдет»

3. Если и , то в правдоподобие выборки «пойдет»

4. Если и , то в правдоподобие выборки «пойдет»

Очевидно, что в 1 и 3 случае, когда вероятности были правильно определены алгоритмом, функция правдоподобия будет максимизироваться, то есть именно это мы и хотели получить. Однако, такой подход достаточно громоздок и далее мы рассмотрим более компактную запись. Но для начала, логарифмируем функцию правдоподобия с заменой знака, так как теперь мы будем минимизировать ее.

Подставим вместо выражение :

Упростим правое слагаемое под логарифмом, используя простые арифметические приемы и получим:

А теперь настало время избавиться от оператора «если. то. ». Заметим, что когда объект относится к классу , то в выражении под логарифмом, в знаменателе, возводится в степень , если объект относится к классу , то $e$ возводится в степень . Следовательно запись степени можно упростить — объединить оба случая в один: . Тогда функция логистической ошибки примет вид:

В соответствии с правилами логарифмирования, перевернем дробь и вынесем знак «» (минус) за логарифм, получим:

Перед вами функция потерь logistic Loss, которая применяется в обучающей выборке с объектами относимых к классам: и .

Что ж, на этом моменте я откланиваюсь и мы завершаем статью.

Предыдущая работа автора — «Приводим уравнение линейной регрессии в матричный вид»

Вспомогательные материалы

1. Литература

1) Прикладной регрессионный анализ / Н. Дрейпер, Г. Смит – 2-е изд. – М.: Финансы и статистика, 1986 (перевод с английского)

2) Теория вероятностей и математическая статистика / В.Е. Гмурман — 9-е изд. — М.: Высшая школа, 2003

3) Теория вероятностей / Н.И. Чернова — Новосибирск: Новосибирский государственный университет, 2007

4) Бизнес-аналитика: от данных к знаниям / Паклин Н. Б., Орешков В. И. — 2-е изд. — Санкт-Петербург: Питер, 2013

5) Data Science Наука о данных с нуля / Джоэл Грас — Санкт-Петербург: БХВ Петербург, 2017

6) Практическая статистика для специалистов Data Science / П.Брюс, Э.Брюс — Санкт-Петербург: БХВ Петербург, 2018

Логистическая функция ошибки

Эту функцию называют также «логлосс» (logloss / log_loss), перекрёстной / кросс-энтропией (Cross Entropy) и часто используют в задачах классификации. Разберёмся, почему её используют и какой смысл она имеет. Для чтения поста нужна неплохая ML-математическая подготовка, но даже новичкам я бы рекомендовал почитать (хотя я не очень заботился, чтобы «всё объяснялось на пальцах»).

logloss

Начнём издалека…

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

log_loss_01

Здесь мы предположили, что ошибка нормально распределена, x – признаковое описание объекта (возможно, в нём есть и фиктивный константный признак, чтобы в линейной функции был свободный член). Тогда мы знаем как распределены ответы нашей функции и можем записать функцию правдоподобия выборки (т.е. произведение плотностей, в которые подставлены значения из обучающей выборки) и воспользоваться методом максимального правдоподобия (в котором для определения значений параметров берётся максимум правдоподобия, а чаще – его логарифма):

log_loss_02

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

Давайте ещё посмотрим, как реализуется метод стохастического градиента (SGD) для минимизации MSE: надо взять производную функции ошибки для конкретного объекта и записать формулу коррекции весов в виде «шага в сторону антиградиента»:

log_loss_03

Получили, что веса линейной модели при её обучении методом SGD корректируются с помощью добавки вектора признаков. Коэффициент, с которым добавляют, зависит от «агрессивности алгоритма» (параметр альфа, который называют темпом обучения) и разности «ответ алгоритма – правильный ответ». Кстати, если разница нулевая (т.е. на данном объекте алгоритм выдаёт точный ответ), то коррекция весов не производится.

Log Loss

Теперь давайте, наконец, поговорим о «логлоссе». Рассматриваем задачу классификации с двумя классами: 0 и 1. Обучающую выборку можно рассматривать, как реализацию обобщённой схемы Бернулли: для каждого объекта генерируется случайная величина, которая с вероятностью p (своей для каждого объекта) принимает значение 1 и с вероятностью (1–p) – 0. Предположим, что мы как раз и строим нашу модель так, чтобы она генерировала правильные вероятности, но тогда можно записать функцию правдоподобия:

log_loss_04.png

После логарифмирования правдоподобия получили, что его максимизация эквивалентна минимизации последнего записанного выражения. Именно его и называют «логистической функции ошибки». Для задачи бинарной классификации, в которой алгоритм должен выдать вероятность принадлежности классу 1, она логична ровно настолько, насколько логична MSE в задаче линейной регрессии с нормальным шумом (поскольку обе функции ошибки выводятся из метода максимального правдоподобия).

Часто гораздо более понятна такая запись logloss-ошибки на одном объекте:

log_loss_05

Отметим неприятное свойство логосса: если для объекта 1го класса мы предсказываем нулевую вероятность принадлежности к этому классу или, наоборот, для объекта 0го – единичную вероятность принадлежности к классу 1, то ошибка равна бесконечности! Таким образом, грубая ошибка на одном объекте сразу делает алгоритм бесполезным. На практике часто логлосс ограничивают каким-то большим числом (чтобы не связываться с бесконечностями).

Если задаться вопросом, какой константный алгоритм оптимален для выборки из q_1 представителей класса 1 и q_0 представителей класса 0, q_1 + q_0 = q , то получим

log_loss_06

Последний ответ получается взятием производной и приравниванием её к нулю. Описанную задачу приходится решать, например, при построении решающих деревьев (какую метку приписывать листу, если в него попали представители разных классов). На рис. 2 изображён график log_loss-ошибки константного алгоритма для выборки из четырёх объектов класса 0 и 6 объектов класса 1.

log_loss_07.png

Представим теперь, что мы знаем, что объект принадлежит к классу 1 вероятностью p, посмотрим, какой ответ оптимален на этом объекте с точки зрения log_loss: матожидание нашей ошибки

log_loss_08.png

Для минимизации ошибки мы опять взяли производную и приравняли к нулю. Мы получили, что оптимально для каждого объекта выдавать его вероятность принадлежности к классу 1! Таким образом, для минимизации log_loss надо уметь вычислять (оценивать) вероятности принадлежности классам!

Если подставить полученное оптимальное решение в минимизируемый функционал, то получим энтропию:

log_loss_09.png

Это объясняет, почему при построении решающих деревьев в задачах классификации (а также случайных лесов и деревьях в бустингах) применяют энтропийный критерий расщепления (ветвления). Дело в том, что оценка принадлежности к классу 1 часто производится с помощью среднего арифметического меток в листе. В любом случае, для конкретного дерева эта вероятность будет одинакова для всех объектов в листе, т.е. константой. Таким образом, энтропия в листе примерно равна логлосс-ошибке константного решения. Используя энтропийный критерий мы неявно оптимизируем логлосс!

В каких пределах может варьироваться logloss? Ясно, что минимальное значение 0, максимальное – +∞, но эффективным максимальным можно считать ошибку при использовании константного алгоритма (вряд же мы в итоге решения задачи придумаем алгоритм хуже константы?!), т.е.

log_loss_10.png

Интересно, что если брать логарифм по основанию 2, то на сбалансированной выборке это отрезок [0, 1].

Связь с логистической регрессией

Слово «логистическая» в названии ошибки намекает на связь с логистической регрессией – это как раз метод для решения задачи бинарной классификации, который получает вероятность принадлежности к классу 1. Но пока мы исходили из общих предположений, что наш алгоритм генерирует эту вероятность (алгоритмом может быть, например, случайный лес или бустинг над деревьями). Покажем, что тесная связь с логистической регрессией всё-таки есть… посмотрим, как настраивается логистическая регрессия (т.е. сигмоида от линейной комбинации) на эту функцию ошибки методом SGD.

log_loss_11

Как видим, корректировка весов точно такая же, как и при настройке линейной регрессии! На самом деле, это говорит о родстве разных регрессий: линейной и логистической, а точнее, о родстве распределений: нормального и Бернулли. Желающие могут внимательно почитать лекцию Эндрю Ына.

Во многих книгах логистической функцией ошибки (т.е. именно «logistic loss») называется другое выражение, которое мы сейчас получим, подставив выражение для сигмоиды в logloss и сделав переобозначение: считаем, что метки классов теперь –1 и +1, тогда

log_loss_12.png

Полезно посмотреть на график функции, центральной в этом представлении:

log_loss_13.png

Как видно, это сглаженный (всюду дифференцируемый) аналог функции max(0, x), которую в глубоком обучении принято называть ReLu (Rectified Linear Unit). Если при настройке весов минимизировать logloss, то таким образом мы настраиваем классическую логистическую регрессию, если же использовать ReLu, чуть-чуть подправить аргумент и добавить регуляризацию, то получаем классическую настройку SVM:

log_loss_14.png

выражение под знаком суммы принято называть Hinge loss. Как видим, часто с виду совсем разные методы можно получать «немного подправив» оптимизируемые функции на похожие. Между прочим, при обучении RVM (Relevance vector machine) используется тоже очень похожий функционал:

log_loss_15

Связь с расхождением Кульбака-Лейблера

Расхождение (дивергенцию) Кульбака-Лейблера (KL, Kullback–Leibler divergence) часто используют (особенно в машинном обучении, байесовском подходе и теории информации) для вычисления непохожести двух распределений. Оно определяется по следующей формуле:

log_loss_16

где P и Q – распределения (первое обычно «истинное», а второе – то, про которое нам интересно, насколько оно похоже на истинное), p и q – плотности этих распределений. Часто KL-расхождение называют расстоянием, хотя оно не является симметричным и не удовлетворяет неравенству треугольника. Для дискретных распределений формулу записывают так:

log_loss_17.png

P_i, Q_i – вероятности дискретных событий. Давайте рассмотрим конкретный объект x с меткой y. Если алгоритм выдаёт вероятность принадлежности первому классу – a, то предполагаемое распределение на событиях «класс 0», «класс 1» – (1–a, a), а истинное – (1–y, y), поэтому расхождение Кульбака-Лейблера между ними

log_loss_18.png

что в точности совпадает с logloss.

Настройка на logloss

Один из методов «подгонки» ответов алгоритма под logloss – калибровка Платта (Platt calibration). Идея очень простая. Пусть алгоритм порождает некоторые оценки принадлежности к 1му классу – a. Метод изначально разрабатывался для калибровки ответов алгоритма опорных векторов (SVM), этот алгоритм в простейшей реализации разделяет объекты гиперплоскостью и просто выдаёт номер класса 0 или 1, в зависимости от того, с какой стороны гиперплоскости объект расположен. Но если мы построили гиперплоскость, то для любого объекта можем вычислить расстояние до неё (со знаком минус, если объект лежит в полуплоскости нулевого класса). Именно эти расстояния со знаком r мы будем превращать в вероятности по следующей формуле:

log_loss_19.png

неизвестные параметры α, β обычно определяются методом максимального правдоподобия на отложенной выборке (calibration set).

Проиллюстрируем применение метода на реальной задаче, которую автор решал недавно. На рис. показаны ответы (в виде вероятностей) двух алгоритмов: градиентного бустинга (lightgbm) и случайного леса (random forest).

log_loss_20.png

Видно, что качество леса намного ниже и он довольно осторожен: занижает вероятности у объектов класса 1 и завышает у объектов класса 0. Упорядочим все объекты по возрастанию вероятностей (RF), разобьем на k равных частей и для каждой части вычислим среднее всех ответов алгоритма и среднее всех правильных ответов. Результат показан на рис. 5 – точки изображены как раз в этих двух координатах.

log_loss_21

Нетрудно видеть, что точки располагаются на линии, похожей на сигмоиду – можно оценить параметр сжатия-растяжения в ней, см. рис. 6. Оптимальная сигмоида показана розовым цветом на рис. 5. Если подвергать ответы такой сигмоидной деформации, то логлосс-ошибка случайного леса снижается с 0.37 до 0.33.

log_loss_22.png

Обратите внимание, что здесь мы деформировали ответы случайного леса (это были оценки вероятности – и все они лежали на отрезке [0, 1]), но из рис. 5 видно, что для деформации нужна именно сигмоида. Практика показывает, что в 80% ситуаций для улучшения logloss-ошибки надо деформировать ответы именно с помощью сигмоиды (для меня это также часть объяснения, почему именно такие функции успешно используются в качестве функций активаций в нейронных сетях).

Ещё один вариант калибровки – монотонная регрессия (Isotonic regression).

Многоклассовый logloss

Для полноты картины отметим, что logloss обобщается и на случай нескольких классов естественным образом:

log_loss_23.png

здесь q – число элементов в выборке, l – число классов, a_ij – ответ (вероятность) алгоритма на i-м объекте на вопрос принадлежности его к j-му классу, y_ij=1 если i-й объект принадлежит j-му классу, в противном случае y_ij=0.

На посошок…

В каждом подобном посте я стараюсь написать что-то из мира машинного обучения, что, с одной стороны, просто и понятно, а с другой – изложение этого не встречается больше нигде. Например, есть такой естественный вопрос: почему в задачах классификации при построении решающих деревьев используют энтропийный критерий расщепления? Во всех курсах его (критерий) преподносят либо как эвристику, которую «вполне естественно использовать», либо говорят, что «энтропия похожа на кросс-энтропию». Сейчас стоимость некоторых курсов по машинному обучению достигает нескольких сотен тысяч рублей, но «профессиональные инструкторы» не могут донести простую цепочку:

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

Если Вы всё-таки отдали несколько сотен тысяч рублей, то можете проверить «профессиональность инструктора» следующими вопросами:

  • Энтропия в листе примерно равна logloss-ошибке константного решения. Почему не использовать саму ошибку, а не приближённое значение? Или, как часто происходит в задачах оптимизации, её верхнюю оценку?
  • Минимизации какой ошибки соответствует критерий расщепления Джини?
  • Можно показать, что если в задаче бинарной классификации использовать в качестве функции ошибки среднеквадратичное отклонение, то также, как и для логлосса, оптимальным ответом на объекте будет вероятность его принадлежности к классу 1. Почему тогда не использовать такую функцию ошибки?

Ответы типа «так принято», «такой функции не существует», «это только для регрессии», естественно, заведомо неправильные. Если Вам не ответят с такой же степенью подробности, как в этом посте, то Вы точно переплатили;)

П.С. Что ещё почитать…

В этом блоге я публиковал уже несколько постов по метрикам качества…

  • AUC ROC (площадь под кривой ошибок)
  • Задачки про AUC (ROC)
  • Знакомьтесь, Джини

И буквально на днях вышла классная статья Дмитрия Петухова про коэффициент Джини, читать обязательно:

Share this:

Понравилось это:

Нравится Загрузка.

Похожее

Логистическая функция ошибки : 34 комментария

Дмитрий :

Интересно было бы добавить еще часть про вывод лог. регрессии из байесовского вывода для экспоненциального семейства распределений. Там и интуиция сигмоиды проясняется.

Ну, это уже больше про лог.регрессию, а не про логлосс. Про байесовский вывод я хотел написать отдельный пост… но, вообще, большой вопрос, насколько и куда надо углубляться при изучении машинного обучения (если не готовить учёных-исследователей в этой области). Например, Энрю Ын много говорит про обобщённые линейные модели, экспоненциальные семейства и т.п. И совсем мало про кластеризацию. На мой взгляд, это совсем непонятный перекос. Про первое можно вообще ничего не говорить (тем более, в курсе для «начинающих»), и странно, что кроме k-means и EM-алгоритма начинающему ничего не рассказывается про кластеризацию.

Rustam Guliev :

Спасибо большое, за интересный пост!
Связь с логистической регрессией: logloss(y,a)=-y*log(a) + (1-y)*log(1-a). Тут, кажется опечатка. Вроде, минус должно быть, не?

Да, спасибо. Исправил.
Андрюха :

Дивергенция Кульбака-Лейблера это кросс энтропия плюс энтропия, а написано равенство лог лоссу, стоит написать что при оптимизации энтропия — константа для ответов.

Ну, не плюс, ДКЛ = перекрёстная энтропия МИНУС энтропия, но последняя вычисляется для вырожденного распределения, поэтому равна нулю! У меня не просто написано, что ДКЛ = логлоссу, у меня это доказывается с указанием, какие распределения имеются в виду! А вот конец предложения я не понял…

спасибо за интересную статью. уточняющий вопрос к рис. 4: «Упорядочим все объекты по возрастанию» По возрастанию вероятностей? Для RF или GB? к рис. 5: «Если подвергать ответы такой сигмоидной деформации, то логлосс-ошибка случайного леса снижается с 0.37 до 0.33». Что конкретно имеется в виду под деформацией ответа? «Ручное» опускание его на кривую?

Пожалуйста. 1) Вероятностей RF — именно их мы и будем деформировать… GB не трогаем.
Да, у меня тут плохо написано. Сейчас исправлю. 2) ну не совсем ручное. Есть же аналитическая формула
sigmoid(8*a), где a — ответ алгоритма (см. рис. 6) — на рис. 5 как раз график этой функции.

Евгений :

Про сигмоиду:
>(для меня это также часть объяснения, почему именно такие функции успешно используются в качестве функций активаций в нейронных сетях) Насколько мне известно уже лет 5 как было замечено, что сигмоида очень плохо работает как функция активации в нейронных сетях из-за проблемы затухающего градиента. В основном используется ReLU, например в широко известной группе нейронных сетей ResNet(2015 год). Про объяснение использования энтропийного критерия расщепление
>поэтому использование энтропийного критерия фактически эквивалентно выбору расщепления, минимизирующего логлосс. Тут вы говорите, что энтропийный критерий минимизирует логлосс, а до этого рассказывали про случайный лес и как его перекалибровка позволяет понизить логлосс с 0.37 до 0.33. Как так? Имеете ли вы в виду, что энтропийный критерий минимизирует логлосс «локально» в конкретном «сплите», что не имеет большого влияния на глобальный логлосс? Но это значит, что те же «Профессиональные инструкторы», которые говорят про энтропийный критерий «вполне естественно использовать», либо говорят, что «энтропия похожа на кросс-энтропию»» на самом деле правы, а вы нет.

1) Про сигмоиду «сигмоида очень плохо работает как функция…» – Вы здесь под работой имеете в виду, что нейросети с сигмоидой долго обучать (и часто практически невозможно в приближённых вычислениях). Но с теоретической точки зрения нейросеть с сигмоидой эквивалентна нейросети с ReLu (с точки зрения функциональной выразимости). И я написал, что часто на практике сталкиваешься с тем, что ответы алгоритма следует деформировать именно сигмоидой. Сейчас, действительно, практически всегда используется ReLu, но я знаю лишь одно наглядное подтверждение, как из «реальных данных» следует, что надо использовать именно эту функцию активации (ну, разве что, ещё статья Ханлосера конца прошлого века про эту функцию). Для сигмоиды таких подтверждений чуть больше (на самом деле, даже понятно почему), но, собственно, это ничему не противоречит. 2)»рассказывали про случайный лес и как его перекалибровка позволяет понизить логлосс с 0.37 до 0.33. Как так?» Элементарно. Критерий-то минимизирует, но это означает лишь, что мы выбираем оптимальный сплит для конкретного признака. Но сам же RF не обеспечивает нахождение глобального минимума. Например, для каждого сплита выбирается лишь подмножество признаков в качестве потенциальных кандидатов для сплита. И, кстати, сама задача построения оптимального решающего дерева NP-полна, поэтому-то и проводят процедуры типа RF. Между прочим, в бустинге был тот же критерий расщепления, но, как Вы видите, качество другое… так что не всё определяется критерием расщепления. 3) «на самом деле правы, а вы нет»
Во-первых, я не понимаю, как можно быть правым с ответом «это вполне естественно».
Почему тела падают на землю? — Это вполне естественно. — Спасибо за правильный ответ.
Также я не понимаю, как похожесть 2х формул может оправдывать использование второй там, где работает первая (тем более, когда есть целая теория про это). Во-вторых, если Вы сказали, что, на самом деле, я не прав, то укажите в чём конкретно (лучше указав на конкретное место в посте, кстати, правильных ответов на перечисленные вопросы я не давал).

Первое рассмотрение

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

Итак . Первым делом первым:

  1. Сузьте свой инструментарий до ключевых показателей, а затем
  2. Следуйте правильному подходу, чтобы использовать их соответствующим образом

9 обязательных мер точности

4 основных меры

ccuracy , Точность, Напомним , Матрица путаницы, Это стандартные, вы уже должны их знать. Они просты для понимания и являются теми, которые выдолженподелиться с бизнес-командами.

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

4 промежуточных измерения

п Кривая отзыва Recision: если вы измените пороговую вероятность вашей модели (обычно по умолчанию 0,5), точность и повторный запуск будут меняться в противоположном направлении. Чем выше порог, тем выше точность и ниже повторный вызов. Аналогично, чем ниже пороговое значение, тем ниже точность и выше повторный вызов. Цель состоит в том, чтобы определить порог с наилучшим балансом между точностью и отзывом.

F-1 балл (и F-бета): если выбор порога с помощью кривой Precision-Recall является эмпирическим путем, то использование F-показателя является математическим способом. Если для данной проблемы точность в 5 раз важнее, чем повторный вызов, то модель с наивысшей оценкой F-5 (бета = 5) должна быть лучшей моделью для этой проблемы.
F-бета балл варьируется от 0 до 1, 1 является идеальной моделью.

рКривая OC: ROC — это аббревиатура «Операционная характеристика приемника», которая использовалась радарными инженерами во Второй мировой войне. Это определение устарело в машинном обучении. Кривая ROC — это просто способ визуализировать производительность модели. Если кривая ROC сильно перекошена в верхнем левом углу, это означает, что модель очень точная, а прямая диагональ означает, что модель не лучше, чем подбрасывание монеты.

UC:сокращение от Area Under Curve — это информация, содержащаяся в кривой ROC в одном положительном числе. AUC великолепен тем, что позволяет легко сравнивать несколько моделей: вы выбираете ту, которая имеет самый высокий AUC. Однако очень сложно интерпретировать ценность AUC. AUC 75% ни в коем случае не совпадает с точностью 75% (иногда я слышу это . ).
Обычно хорошие значения AUC начинаются с 0,75, но, опять же, это зависит от проблемы, и, как правило, анализ абсолютных значений не помогает. Вы бы предпочли использовать его для сравнения моделей. Если ваша модель имеет AUC 0,57, это означает, что в ваших данных, скорее всего, нет сигнала.
AUC варьируется от 0,5 до 1, 1 является идеальной моделью.

1 расширенная мера

LogLoss: сокращение от логарифмических потерь, более математическое и абстрактное понятие здесь. Он присваивает вес каждой прогнозируемой вероятности. Чем дальше вероятность от фактического значения, тем больше вес. Цель состоит в том, чтобы минимизировать общую сумму всех весов ошибок. Обратите внимание, что вес резко увеличивается, если вероятность близка к 0, а фактическая равна 1 (то же самое с противоположными значениями 1 и 0). LogLoss различает модели, которые слишком уверены в неправильных предсказаниях и широко используются в машинном обучении, поскольку имеют полезные математические свойства. Проблема в том, что значениеLogLoss невозможно интерпретировать,

Используя эти меры правильно

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

Или вы могли бы придерживаться более простого подхода, который был бы эффективным. Подход в 3 этапа:

  1. Попробуйте разнообразные модели и оцените их, используя LogLoss / AUC
  2. После определения наилучшей модели выберите оптимальный порог вероятности, используя кривую Precision-Recall / F-Score / ROC.
  3. Интерпретируйте свои результаты и сообщите о них с помощью матрицы путаницы, точности и отзыва
  1. Попробуйте разнообразные модели и оцените их, используя LogLoss / AUC
    Первым делом, в машинном обучении нет бесплатного обеда, Вы никогда не будете знать заранее, какой алгоритм лучше всего подойдет для определенного набора данных. Попробуйте различные модели, так у вас будет больше шансов найти лучшую модель для вашей проблемы.
    Затем используйте LogLoss и / или AUC для ранжирования их и определения лучших кандидатов. Зачем? LogLoss и AUC — положительные числа, которые отлично подходят для сравнения моделей. На самом деле они простые, но в то же время они содержат много абстрактных математических концепций, которые гарантируют, что модели с лучшим LogLoss или лучшим AUC будут «хорошими». Вот почему они широко используются на Kaggle.
    Конечно, не смотрите на LogLoss / AUC на тренировочном наборе, смотрите на них на тестовом наборе (или, что еще лучше, на перекрестной проверке; и всегда держите образец удержания, пожалуйста). Обратите внимание, что выбор лучшей модели с LogLoss может привести к большему количеству калиброванных моделей, чем AUC (бумага).
    _
    Пример: вы пробуете 5 разных моделей: XGBoost, RandomForest, SVM, Дерево решений, Регулярная логистическая регрессия. После тонкой настройки XGBoost имеет лучший AUC по 5-кратной перекрестной проверке. Вы выбираете XGBoost и переходите ко 2-му шагу.
  2. Выберите оптимальный порог вероятности, используя кривую Precision-Recall / F-Score / ROC
    После определения лучшей модели (или 2–3 моделей-кандидатов) используйте кривую Precision-Recall (или F-Score или ROC-кривую), чтобы определить оптимальный порог вероятности для вашей модели. Это требует некоторого хорошего понимания того, как интерпретировать кривую Precision-Recall.
    _
    Пример: глядя на кривую Precision-Recall, вы заметите, что для Recall 20% ваша модель XGBoost достигает Precision 90%. Однако при увеличении Recall до 50% точность падает на 50%. Допустим, вы решаете эту проблему с высокой точностью. Поэтому вы выбираете порог, который дает точность 90%, зная, что вы поймете только 20% позитивов в данных.
  3. Интерпретируйте свои результаты и сообщите о них, используя Матрицу замешательства, точность и повторное использование
    Наконец, что важно для бизнеса. Для 100 предсказаний, которые делает модель, сколько из них будет хорошим? С выбранным порогом, сколько случаев модель никогда не поймает?… Бизнес может поставить цифры и цифры рядом с ними и даже получить ожидаемый возврат инвестиций
    _
    Пример: точность 90% означает, что для 10 предсказанных положительных случаев, которые делает модель, 9 из них являются правильными. Допустим, для этой проблемы правильный положительный прогноз означает 1000 долларов сэкономлено, а один неправильный прогноз означает 0 долларов сэкономлено. Для порога вероятности, выбранного на 2-м шаге (получение 20% повторного вызова и 90% точности) и на основе исторических данных, вы оцените, что модель будет прогнозировать в среднем 50 положительных случаев в месяц. Это переводит на
    50 x 90% x 12 месяцев x 1000 $ = 540 000 $ в год.
    Теперь это один из способов перевести ML в бизнес-ценность ������

Дополнительные замечания

  1. Если возможно, получите тест без ML. Измерьте точность существующего механизма, основанного на правилах, суждения эксперта, наивной стратегии или простой статистической модели (логистическая регрессия…). Таким образом, вы можете количественно оценить добавленную стоимость ML (что иногда не обязательно лучше)
  2. Я солгал, когда сказал, что речь идет о точности. При выборе наилучшей модели следует также учитывать, правильно ли модель училась, и понимать, почему она прогнозирует этот конкретный путь (используя такие инструменты, как важность функции, частичная зависимость, объяснение прогноза…). Иногда лучше выбрать модель, которая не является лучшей, но в которой меньше переменных, требуется меньше времени для оценки новых данных и ее легче производить.

Список используемой литературы

  • http://arogozhnikov.github.io/2015/10/05/roc-curve.html
  • https://datawookie.netlify.com/blog/2015/12/making-sense-of-logarithmic-loss/
  • https://www.machinelearningplus.com/machine-learning/evaluation-metrics-classification-models-r/
  • https://machinelearningmastery.com/roc-curves-and-precision-recall-curves-for-classification-in-python/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *