Вариации регрессии

Материал из Викиконспекты
Версия от 03:47, 24 января 2019; Penguinni (обсуждение | вклад) (Логическая регрессия)
Перейти к: навигация, поиск

Регрессия (англ. Regression) — метод моделирования зависимости между зависимой переменной [math]y[/math] и одной или несколькими независимыми переменными [math]x_1, x_2, \dots, x_n[/math]. В случае нескольких независимых переменных регрессия называется множественной (англ. multivariate regression). Цель регрессионного анализа состоит в том, чтобы оценить значение непрерывной выходной переменной по значениям входных переменных.

Линейная регрессия

Основная статья: Линейная регрессия

Линейная регрессия (англ. Linear regression) — разновидность регрессии для моделирования линейной зависимости между зависимой и независимой переменными.

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

Основная статья: Логистическая регрессия

Логистическая регрессия (англ. Logistic regression) — разновидность регрессии для моделирования зависимости между зависимой и независимой переменными в случае, когда зависимая переменная [math]y[/math] принимает значения в диапазоне от [math]0[/math] до [math]1[/math].

Гребневая регрессия (ридж-регрессия)

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

Мотивация

Определение:
Мультиколлинеарность (англ. multicollinearity) — наличие линейной зависимости между независимыми переменными регрессионной модели. Различают полную коллинеарность и частичную или просто мультиколлинеарность — наличие сильной корреляции между факторами.

Рассмотрим пример линейной модели: [math]y = b_1 x_1 + b_2 x_2 + b_3 x_3 + \varepsilon[/math]. Пусть имеет место зависимость [math]x_1 = x_2 + x_ 3[/math]. Добавим к первому коэффициенту произвольное число [math]a[/math], а из двух других коэффициентов это же число вычтем. Получаем (без случайной ошибки):

[math]y = (b_1 + a)x_1 + (b_2 - a)x_2 + (b_3 - a)x_3 = b_1 x_1 + b_2 x_2 + b_3 x_3 + a(x_1 - x_2 - x_3) = b_1 x_1 + b_2 x_2 + b_3 x_3[/math]

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

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

Описание

Напомним задачу многомерной линейной регрессии: Рассматривается линейная зависимость [math]f(x, \beta) = \langle \beta, x \rangle[/math].

Находим вектор [math]\beta^*[/math], при котором достигается минимум среднего квадрата ошибки:

[math]Q(\beta) = ||F \beta - y||^2[/math]


[math]\beta^*=\arg \min\limits_\beta Q(\beta)[/math]

Методом наименьших квадратов находим решение:

[math]\beta^* = (F^T F)^{-1} F^T y[/math]

В условиях мультиколлинеарности матрица [math]F^T F[/math] становится плохо обусловленной.

Для решения этой проблемы добавим к функционалу [math]Q[/math] регуляризационное слагаемое:

[math]Q_{\lambda}(\beta) = ||F \beta - y||^2 + \lambda ||\beta||^2[/math],

где [math]\lambda[/math] — неотрицательный параметр.

Решением в этом случае будет

[math]\beta^* = (F^T F + \lambda I_n)^{-1} F^T y[/math]

Это изменение увеличивает собственные значения матрицы [math]F^T F[/math], но не изменяет ее собственные вектора. В результате имеем хорошо обусловленную матрицу.

Диагональная матрица [math]\lambda I_n[/math] называется гребнем.

Пример кода для Scikit-learn

# Импорт библиотек
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split

X = ... # загрузка X
y = ... # загрузка y

# разделение данных на train и test
train_X, test_X, train_y, test_y = train_test_split(X, y)

ridge_regression = Ridge(alpha=0.1) # alpha — величина регуляризации

# обучение
ridge_regression.fit(train_X, train_y)

# предсказание результата
print(ridge_regression.predict(test_X))

# вывод точности предсказания
print(ridge_regression.score(test_X, test_y))

Лассо-регрессия

Описание

Метод регрессии лассо (англ. LASSO, Least Absolute Shrinkage and Selection Operator) похож на гребневую регрессию:

[math]Q_{\lambda}(\beta) = ||F \beta - y||^2 + \lambda ||\beta||[/math],

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

Пример кода для Scikit-learn

# Импорт библиотек
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split

X = ... # загрузка X
y = ... # загрузка y

# разделение данных на train и test
train_X, test_X, train_y, test_y = train_test_split(X, y)

lasso_regression = Lasso(alpha=0.1) # alpha — величина регуляризации

# обучение
lasso_regression.fit(train_X, train_y)

# предсказание результата
print(lasso_regression.predict(test_X))

# вывод точности предсказания
print(lasso_regression.score(test_X, test_y))

Байесовская регрессия

Байесовская линейная регрессия (англ. Bayesian linear regression) — подход в линейной регрессии, в котором предполагается что шум распределен нормально.

Рассмотрим задачу линейной регрессии [math]y = \overrightarrow{\beta}^T\overrightarrow{x} + \varepsilon[/math], где [math]\varepsilon_i \sim N(0, \sigma^2)[/math].

В терминах вероятностей можно записать следующее: [math]p(y|\overrightarrow{x}, \overrightarrow{\beta}, \sigma^2) = N(y|\overrightarrow{\beta}^T \overrightarrow{x}), \sigma^2)[/math]

Будем предполагать, что данные независимы:

[math]p(Y|X, \overrightarrow{\beta}, \sigma^2) = \prod\limits_{i=1}^n N(y_i|\overrightarrow{\beta}^T \overrightarrow{x}_i, \sigma^2)[/math]

Пролоарифмируем это выражение: [math]\ln p(Y|X, \overrightarrow{\beta}, \sigma^2) \\ = \ln \prod\limits_{i=1}^n N(y_i|\overrightarrow{\beta}^T \overrightarrow{x}_i, \sigma^2) \\ = \ln {\left( \frac{1}{(\sigma \sqrt{2 \pi})^n} \exp{(-\frac{1}{2 \sigma^2} \sum\limits_{i-1}^n (y_i - \overrightarrow{\beta}^T \overrightarrow{x_i})^2)}\right )} \\ = -\frac{n}{2} \ln{2 \pi \sigma^2} - \frac{1}{2\sigma^2} \sum\limits_{i=1}^n (y_i-\overrightarrow{\beta}^T \overrightarrow{x}_i)^2[/math]

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

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

Частный случай логистической регрессии, когда все переменные имеют двоичную природу.

См. также

Источники информации

  1. 10 типов регрессии — какой выбрать?
  2. machinelearning.ru — Линейная регрессия (пример)
  3. machinelearning.ru — Ридж-регрессия
  4. Wikipedia — Мультиколлинеарность
  5. Лекции по алгоритмам восстановления регрессии К. В. Воронцов
  6. Habr — Базовые принципы машинного обучения на примере линейной регрессии