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

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

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

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

Оглавление

Опрос

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

Логистическая регрессия

Сигмовидная функция

Сигмовидная функция отображает все значения в диапазоне от 0 до 1. В частности, чем более отрицательным является вход, тем ближе к 0 его выход. Напротив, чем положительнее вход, тем ближе к 1 его выход. Для ввода 0 он вернет ровно 0,5.

Как показывает график, для больших значений x эта функция становится все ближе и ближе к 1. Точно так же для меньших значений x она все ближе и ближе к 0. Важно отметить, что эта функция фактически никогда не «касается» 0 или 1, но становится все ближе и ближе в любом направлении по мере продвижения к бесконечности или отрицательной бесконечности. Когда функция приближается к значению, но никогда не достигает его, это называется «асимптотой».

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

Теперь наша функция предсказания способна классифицировать «положительные» и «отрицательные» значения и рисовать границы. Поскольку наша внутренняя линейная модель предсказывает более высокие положительные значения, мы получаем «положительный» прогноз с высоким уровнем достоверности, например 0,87 или 0,94. Следовательно, поскольку наша линейная модель предсказывает более низкие отрицательные значения, мы получаем «отрицательный» прогноз ближе к 0 с высокой достоверностью, например, 0,13 или 0,07 (обратите внимание, что «отрицательный» относится к классификации 0 или 1, а не к фактическому значению). значение нашей функции предсказания).

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

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

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

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

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

Здесь значение yᵢ действует как «переключатель» — когда оно равно 1, активируется первая часть. Если 0, то активируется вторая часть.

Обратите внимание, что нам также придется изменить градиенты в соответствии с нашей функцией стоимости и измененной функцией прогнозирования. Еще раз, если у вас нет знаний в области исчисления, они будут вам предоставлены. Если у вас есть опыт в области исчисления, вам, вероятно, будет полезно знать, что производная σ(x) равна σ(x) ⋅ (1-σ(x)).

Предвзятый термин

И снова у нас есть смещение в нашем внутреннем линейном уравнении. На этот раз он представляет что-то немного другое. Чтобы визуализировать это, вы можете думать о других параметрах как о попытках отойти от центрального значения. Если он сдвигается положительно, то выход должен быть близок к 1, если сдвигается отрицательно, то выход должен быть близок к 0. Этот член помогает сместить это «центральное значение» на 0 до применения сигмоиды. Без него «центральное значение» будет зафиксировано на 0. Хотя технически модель сможет обучаться, она не будет такой точной или надежной, как могла бы быть.

Регуляризация

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

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

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

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

Предварительная обработка данных

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

Тем не менее, получение Z-показателя, как правило, является хорошей идеей. Это связано с тем, что это ускоряет обучение, поскольку делает каждое θ более равным с точки зрения чувствительности к входным параметрам.

Точность измерения

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

Однако иногда вы сталкиваетесь с искаженным набором данных. Допустим, это набор данных о раковых опухолях с 500 точками данных, 5% данных диагностированы как раковые. Кроме того, допустим, вы делаете логистический классификатор и пытаетесь оценить его точность. Вы можете сделать это, используя что-то, называемое оценкой F1, но сначала вам нужно нарисовать что-то, называемое матрицей путаницы.

Матрица путаницы

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

Точность и отзыв

Точность измеряет, насколько часто ваша модель точна в своем положительном прогнозе. Он измеряется как (истинные положительные результаты) / (истинные положительные результаты + ложные положительные результаты).

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

Оценка F1

Это определяется формулой 2 * (точность * полнота) / (точность + полнота).

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

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

Практическая лаборатория



Прощальные заметки

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

Прочитали? Готовы узнать больше? Ознакомьтесь с другими моими статьями из этой серии!
Нейронные сети

Или не стесняйтесь обращаться к любым предыдущим статьям из этой серии:
Градиентный спуск
Линейная регрессия
Обучение быстрее и лучше

Использованные внешние ресурсы:
https://philippmuens.com/logistic-regression-from-scratch