Вариации регрессии
Регрессия (англ. Regression) — метод моделирования зависимости между зависимой переменной
и одной или несколькими независимыми переменными . В случае нескольких независимых переменных регрессия называется множественной (англ. multivariate regression). Цель регрессионного анализа состоит в том, чтобы оценить значение непрерывной выходной переменной по значениям входных переменных.Линейная регрессия
Линейная регрессия (англ. Linear regression) — разновидность регрессии для моделирования линейной зависимости между зависимой и независимой переменными.
Логистическая регрессия
Логистическая регрессия (англ. Logistic regression) — разновидность регрессии для моделирования зависимости между зависимой и независимой переменными в случае, когда зависимая переменная
принимает значения в диапазоне от до .Гребневая регрессия (ридж-регрессия)
Гребневая регрессия или ридж-регрессия (англ. ridge regression) — один из методов понижения размерности. Применяется для борьбы с избыточностью данных, когда независимые переменные коррелируют друг с другом, вследствие чего проявляется неустойчивость оценок коэффициентов многомерной линейной регрессии.
Мотивация
Определение: |
Мультиколлинеарность (англ. multicollinearity) — наличие линейной зависимости между независимыми переменными регрессионной модели. Различают полную коллинеарность и частичную или просто мультиколлинеарность — наличие сильной корреляции между независимыми переменными. |
Рассмотрим пример линейной модели:
. Пусть имеет место зависимость . Добавим к первому коэффициенту произвольное число , а из двух других коэффициентов это же число вычтем. Получаем (без случайной ошибки):
Несмотря на относительно произвольное изменение коэффициентов модели мы получили исходную модель, то есть такая модель неидентифицируема.
На практике чаще встречается проблема сильной корреляции между независимыми переменными. В этом случае оценки параметров модели получить можно, но они будут неустойчивыми.
Описание
Напомним задачу многомерной линейной регрессии: Рассматривается линейная зависимость
.Находим вектор
, при котором достигается минимум среднего квадрата ошибки:
Методом наименьших квадратов находим решение:
В условиях мультиколлинеарности матрица
становится плохо обусловленной.Для решения этой проблемы добавим к функционалу
регуляризационное слагаемое:где
— неотрицательный параметр.Решением в этом случае будет
Это изменение увеличивает собственные значения матрицы
, но не изменяет ее собственные вектора. В результате имеем хорошо обусловленную матрицу.Диагональная матрица
называется гребнем.Пример кода для Scikit-learn
# Импорт библиотек from sklearn.datasets import make_regression from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split X, y = make_regression(n_samples=10000, noise=100, random_state=0) # генерируем данные для X и y # разделение данных на train и test train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=3) 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))
Точность предсказания для данного датасета и параметров:
>>> 0.8171822749108134
Лассо-регрессия
Описание
Метод регрессии лассо (англ. LASSO, Least Absolute Shrinkage and Selection Operator) похож на гребневую регрессию:
В ходе минимизации некоторые коэффициенты становятся равными нулю, что определяет отбор информативных признаков.
Пример кода для Scikit-learn
# Импорт библиотек from sklearn.datasets import make_regression from sklearn.linear_model import Lasso from sklearn.model_selection import train_test_split X, y = make_regression(n_samples=10000, noise=100, random_state=0) # генерируем данные для X и y # разделение данных на train и test train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=3) 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))
Точность предсказания для данного датасета и параметров:
>>> 0.8173906804156383
Байесовская регрессия
Байесовская линейная регрессия (англ. Bayesian linear regression) — подход в линейной регрессии, в котором предполагается что шум распределен нормально.
Рассмотрим задачу линейной регрессии
, где .В терминах вероятностей можно записать следующее:
Будем предполагать, что данные независимы:
Прологарифмируем это выражение:
Из оценки максимального правдоподобия мы получили оценку по методу наименьших квадратов.
Логическая регрессия
Логическая регрессия (англ. logic regression) — обобщенный метод регрессии, применяемый в основном в случае, когда независимые переменные имеют двоичную природу (при этом зависимая переменная не обязательно двоичная). Задачей логической регрессии является определение независимых переменных, которые могут быть выражены как результат вычисления булевой функции от других независимых переменных.
Пусть
— двоичные независимые переменные, и пусть — зависимая переменная. Будем пытаться натренировать модели регрессии вида , где — булева функция от переменных .Для каждого типа модели определим функцию счета, которая отражает качество рассматриваемой модели. For example, for linear regression the score could be the residual sum of squares and for logistic regression the score could be the deviance. Будем стараться подобрать такие булевы выражения, при которых функция счета минимизируется, настраивая параметры
одновременно с булевыми выражениями .См. также
Источники информации
- 10 типов регрессии — какой выбрать?
- machinelearning.ru — Линейная регрессия (пример)
- machinelearning.ru — Ридж-регрессия
- Wikipedia — Мультиколлинеарность
- Лекции по алгоритмам восстановления регрессии К. В. Воронцов
- Habr — Базовые принципы машинного обучения на примере линейной регрессии
- Documents on Logic Regression