Логистическая регрессия — это широко используемый алгоритм статистического и машинного обучения, который в основном используется для задач бинарной классификации. В отличие от линейной регрессии, которая предназначена для прогнозирования непрерывных числовых значений, логистическая регрессия специально предназначена для обработки категориальных результатов с двумя возможными классами (например, Да/Нет, Истина/Ложь, 0/1).

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

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

2. Расчет логарифмических шансов (линейный компонент):

Для модели бинарной логистической регрессии с «n» входными признаками (x1, x2, …, xn) логарифмические шансы (также называемые логит) положительного класса (класс 1) вычисляются следующим образом:

  • логарифмические шансы = β0 + β1x1 + β2x2 + … + βn*xn
  • В этом уравнении β0 — это точка пересечения (термин смещения), а β1, β2, …, βn — изученные коэффициенты для соответствующих признаков.

3. Применение сигмовидной функции:

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

  • P (класс 1) = сигмоид (логарифм шансов) = 1 / (1 + exp (-логарифм шансов))
  • Здесь «exp» обозначает экспоненциальную функцию.

4. Прогноз:

  • Выход сигмовидной функции дает вероятность того, что вход принадлежит классу 1 (положительный класс).
  • Обычно порог 0,5 используется для преобразования вероятности в метку бинарного класса. Если прогнозируемая вероятность больше или равна 0,5, вход классифицируется как класс 1; в противном случае он классифицируется как класс 0.

Пример. Предположим, у нас есть модель логистической регрессии, которая предсказывает, купит ли человек продукт, на основе двух характеристик: возраста (x1) и дохода (x2). После обучения коэффициенты обучения модели составляют β0 = -3,0, β1 = 0,05 и β2 = 0,08.

Учитывая новый вход с возрастом = 30 и доходом = 50 000 долларов, процесс прогнозирования будет следующим:

  1. Рассчитайте логарифмические шансы: логарифмические шансы = -3,0 + (0,05 * 30) + (0,08 * 50000) = -3,0 + 1,5 + 4000 = 3998,5
  2. Примените сигмовидную функцию: P (класс 1) = 1 / (1 + exp (-3998,5)) ≈ 1,0 (очень близко к 1)
  3. Сделайте прогноз: поскольку прогнозируемая вероятность близка к 1, модель предсказывает, что человек купит продукт (класс 1).

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

X_set, y set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min()- 1 ,

                               stop = X_set[:, 0].max() + 1,

                               step = 0.01),

                     np.arange(start - X_set[:, 1].min() -1,

                               stop = X_set[:, 0].max() + 1,

                               step = 0.01)),

plt.contourf(x1, x2, classifier.predict

    (np. array([X1.ravel(), X2.ravel()].T).reshape(X1.shape),

     alpha = 0.75, Cmap = ListedColormap(('red', 'green')))

plt.xlim(X1.min(), X1.max())

plt.ylim(X1.min(), X1.max())


for i,j in enumerate(np.unique(y_set)):

    plt.scatter(X_set[y_set== j, 0], X_set[y_set == j, 1],

      c =  ListedColormap(('red', 'green'))(i), label = j)          

plt.title('Logistic Regression (Test set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()

Математика логистической регрессии

1. Сигмовидная функция и зачем она используется. Сигмовидная функция, также известная как логистическая функция, является важным компонентом логистической регрессии. Он определяется как:

σ(z) = 1 / (1 + e^(-z))

где «z» — линейная комбинация входных признаков и соответствующих им коэффициентов (весов):

z = β0 + β1x1 + β2x2 + … + βn*xn

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

Сигмовидная функция «сжимает» диапазон «z» до [0, 1], что делает ее пригодной для бинарной классификации, поскольку вероятности должны быть ограничены.

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

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

P(класс 1|x) = σ(β0 + β1x1 + β2x2 + … + βn*xn)

Потеря журнала для этого единственного обучающего примера определяется как:

L(y, P(класс 1|x)) = -[y * log(P(класс 1|x)) + (1 — y) * log(1 — P(класс 1|x))]

Лог-лосс имеет следующую интуицию:

  • Если «y» равно 1 (положительный класс), мы хотим, чтобы прогнозируемая вероятность была близка к 1 (правильно прогнозирующий класс 1). Когда «P (класс 1 | x)» приближается к 1, логарифмическая потеря приближается к 0.
  • Если «y» равно 0 (отрицательный класс), мы хотим, чтобы прогнозируемая вероятность была близка к 0 (правильно предсказывает класс 0). Когда «P (класс 1 | x)» приближается к 0, логарифмическая потеря приближается к 0.
  • Поскольку прогнозируемая вероятность отклоняется от истинной метки, логарифмическая потеря увеличивается, штрафуя модель за неправильные прогнозы.

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

3. Градиентный спуск для оптимизации логистической регрессии. Градиентный спуск — это итеративный алгоритм оптимизации, используемый для поиска оптимальных значений коэффициентов (весов), которые минимизируют функцию стоимости (логарифмическую потерю) в логистической регрессии.

  1. Идея градиентного спуска состоит в том, чтобы обновить коэффициенты в направлении, противоположном градиенту (производной) функции стоимости по отношению к коэффициентам. Этот шаг обновления помогает приблизить коэффициенты к минимуму функции стоимости и итеративно улучшает производительность модели.
  2. Уравнение обновления для каждого коэффициента «βi» во время одной итерации градиентного спуска:
  3. βi(новый) = βi(старый) — скорость_обучения * ∂(функция стоимости) / ∂(βi)
  4. где «learning_rate» — это гиперпараметр, который управляет размером шага в процессе обновления. Важно выбрать соответствующую скорость обучения, чтобы обеспечить стабильную сходимость и предотвратить перерегулирование или медленную сходимость.
  5. Процесс градиентного спуска продолжается до тех пор, пока функция стоимости не сойдется к минимуму или не достигнет заданного количества итераций.
  6. Повторно применяя шаг обновления градиентного спуска, логистическая регрессия оптимизирует коэффициенты, чтобы найти наилучшую границу решения, которая разделяет два класса и обеспечивает точные прогнозы для новых точек данных.

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

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

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

One-vs-Rest легко реализовать, особенно при работе с большим количеством классов. Однако он может страдать от несбалансированного распределения классов, особенно если некоторые классы встречаются редко.

2. Подход «один против одного» (OvO). В подходе «один против одного» мы обучаем классификаторы бинарной логистической регрессии «K (K-1)/2», где «K» — количество классов. Каждый классификатор обучен различать одну конкретную пару классов. Например, если есть три класса (A, B и C), мы создаем три классификатора: A против B, A против C и B против C. Во время обучения мы используем данные только из соответствующих классов. . При прогнозировании мы пропускаем новую точку данных через все классификаторы «K (K-1)/2» и подсчитываем голоса для каждого класса. Класс с наибольшим количеством голосов выбирается в качестве прогнозируемого класса.

One-vs-One удобен при работе с небольшим количеством классов, поскольку создает меньше классификаторов по сравнению с One-vs-Rest. Однако по мере увеличения количества классов значительно увеличивается количество классификаторов, что приводит к увеличению вычислительной сложности.

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

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

Регрессия Softmax (многочленная логистическая регрессия): регрессия Softmax обобщает бинарную логистическую регрессию для решения проблем классификации нескольких классов. Подходит, когда существует более двух взаимоисключающих классов.

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

Учитывая классы «K» и необработанные оценки (логиты) для каждого класса, обозначенные как «z1», «z2», …, «zK», функция softmax вычисляет вероятность «P (класс i)» следующим образом:

P (класс i) = e ^ (zi) / (e ^ (z1) + e ^ (z2) + … + e ^ (zK))

Функция softmax гарантирует, что суммы вероятностей для всех классов равны 1, что делает ее пригодной для мультиклассовой классификации.

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

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

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

Работа с переоснащением и недообучением

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

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

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

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

Функция общих затрат с регуляризацией может быть записана как: Функция_затрат с_регуляризацией = Функция_затрат без_регуляризации + лямбда * (сумма квадратов коэффициентов для L2 / сумма абсолютных коэффициентов для L1)

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

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

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

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

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

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