Линейные модели: LogisticRegression и LinearRegression

В этой статье я расскажу о двух популярных линейных моделях: логистической регрессии (LogisticRegression) и линейной регрессии (LinearRegression). Мы рассмотрим принципы работы этих моделей, их применения и реализации на Python с помощью библиотек scikit-learn и TensorFlow.

Линейные модели: LogisticRegression и LinearRegression
Краткое содержание

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

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

Принцип работы

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

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

ҩ = σ(ҨTү + b)

где:

  • ҩ — вероятность принадлежности объекта к положительному классу;
  • σ(z) = 1 / (1 + exp(-z)) — логистическая функция (сигмоида);
  • Ҩ — вектор весов модели;
  • ү — вектор входных признаков;
  • b — свободный член (bias).

Пример использования

Давайте рассмотрим пример использования логистической регрессии для классификации ирисов с помощью библиотеки scikit-learn.

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# Загрузка данных
iris = load_iris()
X, y = iris.data, iris.target

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

# Создание и обучение модели логистической регрессии
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)

# Предсказание классов на тестовой выборке
y_pred = model.predict(X_test)

# Вычисление точности классификации
accuracy = accuracy_score(y_test, y_pred)
print("Точность классификации: {:.2f}%".format(accuracy * 100))

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

Линейная регрессия (LinearRegression)

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

Принцип работы

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

ҩ = ҨTү + b

где:

  • ҩ — предсказанное значение целевой переменной;
  • Ҩ — вектор весов модели;
  • ү — вектор входных признаков;
  • b — свободный член (bias).

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

Пример использования

Давайте рассмотрим пример использования линейной регрессии для предсказания цен на недвижимость с помощью библиотеки scikit-learn.

import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# Загрузка данных
boston = load_boston()
X, y = boston.data, boston.target

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

# Создание и обучение модели линейной регрессии
model = LinearRegression()
model.fit(X_train, y_train)

# Предсказание цен на недвижимость на тестовой выборке
y_pred = model.predict(X_test)

# Вычисление среднеквадратичной ошибки
mse = mean_squared_error(y_test, y_pred)
print("Среднеквадратичная ошибка: {:.2f}".format(mse))

В этом примере мы загружаем набор данных "Цены на недвижимость в Бостоне" (Boston Housing), разделяем его на обучающую и тестовую выборки, создаем модель линейной регрессии и обучаем ее на обучающей выборке. Затем мы используем обученную модель для предсказания цен на недвижимость на тестовой выборке и вычисляем среднеквадратичную ошибку.

Заключение

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

Nerd IT 🌀 ML, DS, ANN, GPT
Привет! Меня зовут Семён, я работаю в сфере ML и аналитики данных и пишу в блог nerdit.ru статьи о своем опыте и том, что может пригодиться начинающим в начале их пути изучения больших данных.

Подписаться на новости Nerd IT

Не пропустите последние выпуски. Зарегистрируйтесь сейчас, чтобы получить полный доступ к статьям.
jamie@example.com
Подписаться