Вариации регрессии — различия между версиями
Penguinni (обсуждение | вклад) м (→Лассо-регрессия) |
Penguinni (обсуждение | вклад) (→Пример кода для Scikit-learn) |
||
Строка 82: | Строка 82: | ||
===Пример кода для Scikit-learn=== | ===Пример кода для Scikit-learn=== | ||
+ | ===Пример кода для Scikit-learn=== | ||
+ | <font color = green># Импорт библиотек</font> | ||
+ | '''from''' sklearn.linear_model '''import''' Lasso | ||
+ | '''from''' sklearn.model_selection '''import''' train_test_split | ||
+ | |||
+ | X = ... <font color = green># загрузка X</font> | ||
+ | y = ... <font color = green># загрузка y</font> | ||
+ | <font color = green># разделение данных на train и test</font> | ||
+ | train_X, test_X, train_y, test_y = train_test_split(X, y) | ||
+ | |||
+ | lasso_regression = Lasso(alpha=0.1) <font color = green># alpha {{---}} величина регуляризации</font> | ||
+ | |||
+ | <font color = green># обучение</font> | ||
+ | lasso_regression.fit(train_X, train_y) | ||
+ | |||
+ | <font color = green># предсказание результата</font> | ||
+ | ''print''(lasso_regression.predict(test_X)) | ||
+ | |||
+ | <font color = green># вывод точности предсказания</font> | ||
+ | ''print''(lasso_regression.score(test_X, test_y)) | ||
==Байесовская регрессия== | ==Байесовская регрессия== |
Версия 00:26, 24 января 2019
Регрессия (англ. Regression) — метод моделирования зависимости между зависимой переменной
и одной или несколькими независимыми переменными . В случае нескольких независимых переменных регрессия называется множественной (англ. multivariate regression). Цель регрессионного анализа состоит в том, чтобы оценить значение непрерывной выходной переменной по значениям входных переменных.Содержание
Линейная регрессия
Линейная регрессия (англ. Linear regression) — разновидность регрессии для моделирования линейной зависимости между зависимой и независимой переменными.
Логистическая регрессия
Логистическая регрессия (англ. Logistic regression) — разновидность регрессии для моделирования зависимости между зависимой и независимой переменными в случае, когда зависимая переменная
принимает значения в диапазоне от до .Гребневая регрессия (ридж-регрессия)
Гребневая регрессия или ридж-регрессия (англ. ridge regression) — один из методов понижения размерности. Применяется для борьбы с избыточностью данных, когда независимые переменные коррелируют друг с другом, вследствие чего проявляется неустойчивость оценок коэффициентов многомерной линейной регрессии.
Мотивация
Мультиколлинеарность (англ. multicollinearity) — наличие линейной зависимости между независимыми переменными регрессионной модели. Различают полную коллинеарность и частичную или просто мультиколлинеарность — наличие сильной корреляции между факторами.
Рассмотрим пример линейной модели:
. Пусть имеет место зависимость . Добавим к первому коэффициенту произвольное число , а из двух других коэффициентов это же число вычтем. Получаем (без случайной ошибки):
Несмотря на относительно произвольное изменение коэффициентов модели мы получили исходную модель, то есть такая модель неидентифицируема.
На практике чаще встречается проблема сильной корреляции между независимыми переменными. В этом случае оценки параметров модели получить можно, но они будут неустойчивыми.
Описание
Напомним задачу многомерной линейной регрессии: Рассматривается линейная зависимость
.Находим вектор
, при котором достигается минимум среднего квадрата ошибки:
Методом наименьших квадратов находим решение:
В условиях мультиколлинеарности матрица
становится плохо обусловленной.Для решения этой проблемы добавим к функционалу
регуляризационное слагаемое:где
— неотрицательный параметр.Решением в этом случае будет
Это изменение увеличивает собственные значения матрицы
, но не изменяет ее собственные вектора. В результате имеем хорошо обусловленную матрицу.Диагональная матрица
называется гребнем.Пример кода для 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) похож на гребневую регрессию, но вместо добавочного слагаемого здесь используется ограничение на величину абсолютных значений коэффициентов:
где
— параметр регуляризации.Этот метод отбирает информативные признаки.
Пример кода для Scikit-learn
Пример кода для 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))
Байесовская регрессия
Логическая регрессия
См. также
- Общие понятия
- Линейная регрессия
- Логистическая регрессия
- Обзор библиотек для машинного обучения на Python
- Байесовская классификация
- Уменьшение размерности