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

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Для кого эта статья:

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

    Логистическая регрессия — один из фундаментальных алгоритмов машинного обучения, который часто становится первым настоящим испытанием для начинающих аналитиков. За кажущейся простотой этого метода скрывается элегантная математика, позволяющая превращать хаос данных в чёткие бинарные прогнозы. Почему одни функции работают лучше других? Что делает сигмоидальную функцию столь особенной? И как правильно имплементировать логистическую регрессию в своих проектах? Разберём математический каркас, на котором держится вся конструкция этого мощного алгоритма классификации. 🔍

Хотите быстро освоить не только логистическую регрессию, но и весь арсенал современных методов анализа данных? Курс «Аналитик данных» с нуля от Skypro — это структурированный путь в профессию с фокусом на практическое применение. Вы научитесь уверенно работать со статистическими моделями, включая логистическую регрессию, и применять их к реальным бизнес-задачам. Курс включает поддержку опытных менторов и помощь в трудоустройстве!

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

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

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

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

где z — линейная комбинация входных переменных и весовых коэффициентов:

z = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ

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

Алексей Петров, руководитель отдела аналитики данных

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

Ключевые свойства сигмоидальной функции, делающие её фундаментом логистической регрессии:

  • Ограниченный диапазон выходных значений [0, 1], что позволяет интерпретировать результат как вероятность
  • Непрерывность и дифференцируемость во всей области определения, делающие возможным применение методов оптимизации
  • Монотонность, обеспечивающая однозначное соответствие между входными данными и вероятностями
  • Простая производная: σ'(z) = σ(z) × (1 – σ(z)), упрощающая вычисления при обучении модели

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

Значение zРезультат сигмоидной функцииИнтерпретация
-50.0067Высокая уверенность в классе "0"
-20.1192Умеренная уверенность в классе "0"
00.5000Неопределенность (граница между классами)
20.8808Умеренная уверенность в классе "1"
50.9933Высокая уверенность в классе "1"
Кинга Идем в IT: пошаговый план для смены профессии

Использование функции максимального правдоподобия

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

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

L(β) = ∏ P(y_i|x_i, β) = ∏ [p_i^y_i × (1-p_i)^(1-y_i)]

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

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

log L(β) = ∑ [y_i × log(p_i) + (1-y_i) × log(1-p_i)]

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

J(β) = -log L(β) = -∑ [y_i × log(p_i) + (1-y_i) × log(1-p_i)]

Эта функция известна как функция потерь для логистической регрессии, или кросс-энтропия (cross-entropy loss). 🔀

Чтобы найти оптимальные значения коэффициентов β, используются итеративные алгоритмы оптимизации, такие как:

  • Градиентный спуск (Gradient Descent) — наиболее распространённый метод, основанный на вычислении градиента функции потерь
  • Метод Ньютона-Рафсона (Newton-Raphson) — использует информацию о кривизне функции потерь для более быстрой сходимости
  • IRLS (Iteratively Reweighted Least Squares) — специализированный алгоритм для обобщённых линейных моделей
  • Стохастический градиентный спуск (SGD) — модификация градиентного спуска, использующая подмножества данных на каждой итерации

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

Алгоритм оптимизацииПреимуществаНедостаткиКогда использовать
Градиентный спускОтносительная простота, низкие требования к памятиМожет медленно сходиться, требует выбора скорости обученияДля больших наборов данных
Метод НьютонаБыстрая сходимость, меньше итерацийВысокие вычислительные затраты, memory-intensiveДля малых и средних наборов данных
IRLSСпециально разработан для логистической регрессииСложнее в реализации, менее гибкийКогда требуется точная и стабильная сходимость
Стохастический градиентный спускБыстрый, работает с частями данныхМенее стабильный, шумная сходимостьДля очень больших наборов данных или онлайн-обучения

Другие функции для реализации логистической регрессии

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

Наиболее важные альтернативные функции включают:

  • Softmax – обобщение сигмоидальной функции для мультиклассовой логистической регрессии
  • Пробит-функция (Probit) – использует нормальное распределение вместо логистического
  • Дополнительная лог-лог функция (Complementary log-log) – асимметричная альтернатива сигмоиде
  • Гиперболический тангенс (tanh) – похож на сигмоиду, но с диапазоном [-1, 1]

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

softmax(z)_i = e^(z_i) / (∑j e^(z_j))

где z_i — элемент вектора z для i-го класса.

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

Пробит-функция использует кумулятивную функцию стандартного нормального распределения Φ:

Probit(z) = Φ(z) = ∫(-∞ до z) (1/√(2π)) * e^(-t²/2) dt

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

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

cloglog(p) = log(-log(1-p))

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

Ирина Соколова, старший специалист по машинному обучению

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

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

  • L1-регуляризация (Лассо) — добавляет к функции потерь сумму абсолютных значений коэффициентов, способствуя разреженности модели
  • L2-регуляризация (Гребневая) — добавляет сумму квадратов коэффициентов, сглаживая их влияние
  • Эластичная сеть — комбинация L1 и L2 регуляризации, сочетающая их преимущества

Программные реализации функций логистической регрессии

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

Рассмотрим основные способы реализации логистической регрессии в популярных библиотеках:

Python: Scikit-learn

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

# Загружаем данные
data = load_breast_cancer()
X, y = data.data, data.target

# Разделяем на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)

# Создаем и обучаем модель с L2-регуляризацией (по умолчанию)
model = LogisticRegression(C=1.0, solver='lbfgs', max_iter=1000)
model.fit(X_train, y_train)

# Оцениваем точность
accuracy = model.score(X_test, y_test)
print(f"Точность модели: {accuracy:.4f}")

В scikit-learn доступны различные алгоритмы оптимизации (solvers), включая:

  • 'liblinear' — для небольших наборов данных
  • 'lbfgs' — оптимизированный алгоритм квази-Ньютоновских методов
  • 'newton-cg' — метод сопряженных градиентов
  • 'sag' — стохастический усредненный градиент
  • 'saga' — вариант SAG с поддержкой L1-регуляризации

R: Встроенная функция glm()

# Загружаем данные
library(MASS)
data(biopsy)
# Удаляем строки с пропущенными значениями
biopsy <- na.omit(biopsy)
# Преобразуем переменную класса в бинарную
biopsy$class <- ifelse(biopsy$class == "malignant", 1, 0)

# Создаем модель логистической регрессии
model <- glm(class ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9,
family = binomial(link = "logit"),
data = biopsy)

# Выводим сводку модели
summary(model)

# Предсказываем вероятности
probabilities <- predict(model, type = "response")

# Создаем бинарные предсказания
predictions <- ifelse(probabilities > 0.5, 1, 0)

# Оцениваем точность
accuracy <- mean(predictions == biopsy$class)
print(paste("Точность модели:", round(accuracy, 4)))

В R можно указать разные функции связи для логистической регрессии:

  • logit — стандартная логит-функция (сигмоида)
  • probit — пробит-функция на основе нормального распределения
  • cloglog — дополнительная лог-лог функция
  • cauchit — функция на основе распределения Коши

TensorFlow/Keras

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Загружаем данные
data = load_breast_cancer()
X, y = data.data, data.target

# Разделяем на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)

# Стандартизируем данные
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Создаем модель
model = Sequential([
Dense(1, activation='sigmoid', input_shape=(X_train.shape[1],),
kernel_regularizer=tf.keras.regularizers.l2(0.01))
])

# Компилируем модель
model.compile(optimizer=Adam(learning_rate=0.01),
loss='binary_crossentropy',
metrics=['accuracy'])

# Обучаем модель
history = model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=0,
validation_split=0.2)

# Оцениваем модель
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Точность на тестовом наборе: {accuracy:.4f}")

Для мультиклассовой логистической регрессии в TensorFlow/Keras следует заменить активацию sigmoid на softmax и соответственно изменить функцию потерь на categorical_crossentropy.

Не уверены, какая область анализа данных подходит именно вам? Пройдите Тест на профориентацию от Skypro и получите персонализированные рекомендации по карьерному пути. Тест учитывает ваши математические способности и склонность к аналитическому мышлению – ключевые качества для работы с моделями вроде логистической регрессии. Результаты помогут понять, стоит ли вам двигаться в направлении аналитики данных, машинного обучения или других направлений IT.

Оценка эффективности функций в логистической регрессии

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

Основные метрики оценки бинарной классификации включают:

  • Accuracy (Точность) — доля правильно классифицированных наблюдений
  • Precision (Точность в узком смысле) — доля истинно положительных среди всех предсказанных как положительные
  • Recall (Полнота) — доля найденных положительных примеров от общего числа положительных примеров
  • F1-score — гармоническое среднее между precision и recall
  • ROC AUC — площадь под кривой ROC, показывающая способность модели различать классы
  • Log Loss — логарифмическая функция потерь, учитывающая вероятностные оценки

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

Функция активацииПреимуществаЛучше работает для
Logit (сигмоида)Сбалансированность, хорошая интерпретируемость, численная стабильностьБольшинство задач бинарной классификации, сбалансированные данные
ProbitТеоретически обоснована для нормальных распределений, меньше выбросов в хвостахДанные с предполагаемым нормальным распределением, биомедицинские исследования
Complementary log-logАсимметричная форма, лучше работает с несбалансированными даннымиРедкие события, несимметричные распределения, анализ выживаемости
SoftmaxОбобщает логистическую регрессию на несколько классовМультиклассовая классификация, взаимоисключающие категории

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

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

# Основная модель с сигмоидной функцией (логит)
logit_model = LogisticRegression(solver='lbfgs')
logit_scores = cross_val_score(logit_model, X, y, cv=5, scoring='roc_auc')

# Модель с пробит-функцией (приближение через особый алгоритм)
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)
probit_scores = cross_val_score(logit_model, X_poly, y, cv=5, scoring='roc_auc')

print(f"Среднее ROC AUC для логит-модели: {logit_scores.mean():.4f}")
print(f"Среднее ROC AUC для пробит-модели (приближение): {probit_scores.mean():.4f}")

При оценке эффективности важно также учитывать вычислительные аспекты:

  • Время обучения модели и требования к вычислительным ресурсам
  • Скорость предсказания на новых данных
  • Численную стабильность при различных распределениях входных данных
  • Возможность распараллеливания вычислений

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

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

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