В этом блоге мы узнаем о технике логистической регрессии, стохастическом градиентном спуске и его реализации в наборе данных Red Wine Quality.

Примечание. Это поможет, если вы знаете о линейной регрессии.

Что такое логистическая регрессия?

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

Логистическая регрессия обычно используется для целей классификации.

Разница между линейной регрессией и логистической регрессией

Если вы вспомните линейную регрессию, она используется для определения значения непрерывной зависимой переменной.

Результатом была взвешенная сумма входных данных. Логистическая регрессия - это обобщенная линейная регрессия в том смысле, что она не выводит взвешенную сумму входных данных, а проходит через функцию `sigmoid`, которая может отображать любые реальные значение от «0» до «1».

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

Ниже показана сигмовидная функция,

Мы можем использовать 0,5 в качестве порога вероятности для определения классов. Если вероятность больше 0,5, мы классифицируем ее как Класс-1 (Y = 1) или как Класс-0 (Y = 0).

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

  • Зависимая переменная должна быть категориальной.
  • Независимые переменные (признаки) должны быть независимыми (во избежание мультиколлинеарности).

Набор данных - Качество красного вина

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

Входные параметры включают фиксированную кислотность, летучую кислотность, лимонную кислоту, остаточный сахар, хлориды, свободный диоксид серы, общий диоксид серы, плотность, pH, сульфаты, спирт и,

Выходные переменные (на основе сенсорных данных) включают качество (оценка от 0 до 10)

Здесь мы установили 6.5 в качестве порога для «хорошего» и «плохого» вина.

Если качество ›6.5, метка вывода будет« 1 », то есть« Хорошее »вино.

Если качество ‹= 6.5, метка вывода будет« 0 », то есть« Плохое »вино.

Данные выглядят так:

Возьмите набор данных отсюда.

Руководство

Этот учебник разбит на 3 части:

  • Прогнозы
  • Оценочные коэффициенты
  • Прогноз качества красного вина

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

Делать прогнозы

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

Оценочные коэффициенты

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

Гипотеза и функция стоимости

В этом разделе мы определим гипотезу и функцию стоимости.

Модель линейной регрессии может быть представлена ​​уравнением.

Затем мы применяем сигмовидную функцию к выходу линейной регрессии.

где сигмовидная функция представлена ​​как,

Тогда гипотеза логистической регрессии принимает следующий вид:

Здесь Θ - это набор коэффициентов или весов (b0, b1, .., bn), прикрепленных к каждому признаку в x.

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

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

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

Это метод наименьшей квадратичной ошибки.

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

Стохастический градиентный спуск (SGD)

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

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

Чтобы узнать больше о SGD, посмотрите это объяснение.

Градиент по любому параметру (кроме b0),

Градиент по b0,

Как видите, мы обновляем коэффициент с каждой строкой в ​​обучающем примере каждую эпоху.

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

Прогноз качества красного вина

Теперь давайте применим алгоритм к нашему набору данных.

Мы будем использовать 5 наборов данных для обучения, скорость обучения 0,05,

и 10 эпох.

Откройте блокнот:

Блокнот Jupyter

Мы можем видеть, что точность составляет около 86,332%, что почти совпадает с базовым значением 86,429%, если мы просто предсказали класс большинства с помощью Алгоритма нулевого правила.

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

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

Выводы

Таким образом, мы узнали о логистической регрессии и ее реализации в наборе данных Red Wine. Мы узнали,

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

Попробуйте поиграть с гиперпараметрами, такими как скорость обучения, эпохи и количество пакетов, и получите лучшую точность, чем то, что мы получили сейчас.

Если у вас есть вопросы или предложения, укажите их в своих ответах.

Приятного чтения!

Ресурсы

Как реализовать логистическую регрессию с нуля в Python