1.1. Линейные модели¶
Ниже приводится наборы методов линейных моделей, предназначенные для регрессии, в которых целевое значение ожидается как линейная комбинация функций. В математической записи, если \(\hat{y}\) прогнозируемое значение.
В моделе мы получаем вектор \(w = (w_1,
..., w_p)\) как coef_
и \(w_0\) как intercept_
.
Чтобы выполнить классификацию с помощью обобщенных линейных моделей, смотри Логистическая регрессия.
1.1.1. Метод наименьших квадратов (Ordinary Least Squares, OLS) МНК¶
Линейная регрессия типа LinearRegression
подгоняет линейную модель с коэффицентами
\(w = (w_1, ..., w_p)\)
к минимизации остаточной суммы квадрата между наблюдаемого целевого признака в наборе данных и предсказанно целевого признака по линейной аппроксимации. Математически это решение проблемы в следующем виде:
Класс LinearRegression
имеет метод fit
который принимает матрицу X
и массив y
в результате будет хранить коэффиценты \(w\) линейной модели в перменной
coef_
member:
>>> from sklearn import linear_model
>>> reg = linear_model.LinearRegression()
>>> reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
LinearRegression()
>>> reg.coef_
array([0.5, 0.5])
Оценки коэффициентов для Метода Наименьших Квадратов полагаются
на независимость признаков. Когда признаки коррелированы и столбцы матрицы
имеют приблизительную линейную зависимость, матрица становится
близкой к сингулярной и в результате оценка методом наименьших квадратов
становится очень чувствительной к случайным ошибкам в наблюдаемой перменной y
,
что приводит к большой дисперсии. Эта ситуация мультиколлинеарности может
возникнуть, например, когда данные собираются без экспериментальных проверок.
1.1.1.1. Неотрицательный метод наименьших квадратов (Non-negative least squares, NNLS)¶
Можно сделать так, чтобы все коэффициенты были неотрицательными,
что может быть полезно, когда они представляют некоторые физические или
естественно неотрицательные величины (например, количество частот или цены на товары).
Класс LinearRegression
принимает логический параметр positive
: когда установлено True
,
то будет применен Неотрицательный метод наименьших квадратов.
1.1.1.2. Сложность метода наименьших квадратов¶
Решение методом наименьших квадратов вычисляется с использованием разложения X по сингулярным числам. Если X является матрицей формы`(n_samples, n_features)`, то этот метод имеет оценку \(O(n_{\text{samples}} n_{\text{features}}^2)\), при условии, что \(n_{\text{samples}} \geq n_{\text{features}}\).
1.1.2. Ридж регрессия и классификация¶
1.1.2.1. Регрессия¶
Гребневая регрессия или Ридж регрессия Ridge
решает некоторые проблемы
Метод наименьших квадратов (Ordinary Least Squares, OLS) МНК путем наложения штрафа в размере
коэффициентов.
Коэффициенты Ридж минимизируют штрафную остаточную сумму
квадратов:
Параметр сложности \(\alpha \geq 0\) управляет степенью усадки: чем больше значение \(\alpha\), тем больше степень сжатия и, таким образом, коэффициенты становятся более устойчивыми к коллинеарности.
Как и в случае с другими линейными моделями, Ridge
имеет метод fit
с параметрами
матрицы X
и массивом y
и сохранит коэффициенты \(w\) линейной модели в переменной coef_
:
>>> from sklearn import linear_model
>>> reg = linear_model.Ridge(alpha=.5)
>>> reg.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
Ridge(alpha=0.5)
>>> reg.coef_
array([0.34545455, 0.34545455])
>>> reg.intercept_
0.13636...
Обратите внимание, что класс Ridge
позволяет пользователю указать автоматический выбор
алгоритма, установив solver="auto"
. Если указана эта опция, Ridge
будет
выбирать между алгоритмами "lbfgs"
, "cholesky"
и "sparse_cg"
.
Ridge
начнет проверять условия, показанные в следующей таблице сверху вниз.
Если условие истинно, выбирается соответствующий алгоритм.
Алгоритм | Условие |
|
‘lbfgs’ |
указан параметр |
‘cholesky’ |
Входная матрица X не должна быть разреженной |
‘sparse_cg’ |
Ни одно из вышеперечисленных условий не выполнено. |
1.1.2.2. Классификация¶
У регрессии Ridge
есть вариант классификатора: RidgeClassifier
. Этот классификатор
сначала преобразует двоичные целевые метки в {-1, 1}, а затем обрабатывает проблему как задачу регрессии,
оптимизируя ту же цель, что и выше. Предсказанный класс соответствует знаку прогноза регрессии.
Для мультиклассовой классификации проблема рассматривается как регрессия с несколькими выходами,
и предсказанный класс соответствует выходу с наивысшим значением.
Может показаться сомнительным использование (штрафных) потерь по методу наименьших квадратов для соответствия
классификационной модели вместо более традиционных логистических или кусочно-линейных функций потерь.
Однако на практике все эти модели могут приводить к одинаковым оценкам перекрестной проверки с точки
зрения точности или точности/полноты, в то время как штрафные потери наименьших квадратов,
используемые RidgeClassifier
, позволяют совершенно разный выбор числовых алгоритмов с различными
профилями вычислительной производительности.
RidgeClassifier
может быть значительно быстрее, чем, например, LogisticRegression
с
большим количеством классов, потому что он может вычислять матрицу проекции \((X^T X)^{-1} X^T\)
только один раз.
Этот классификатор иногда называют машинами опорных векторов наименьших квадратов (LS-SVM) с линейным ядром.
1.1.2.3. Сложности Ридж регрессия¶
Этот метод имеет тот же порядок сложности, что и Метод наименьших квадратов (Ordinary Least Squares, OLS) МНК.
1.1.2.4. Настройка параметра регуляризации: кросс-валидация с исключением¶
RidgeCV
реализует Ридж регрессию со встроенной перекрестной
проверкой альфа-параметра. Объект работает так же, как GridSearchCV,
за исключением того, что по умолчанию используется кросс-валидация
Leave-One-Out (исключение одного фолда):
>>> import numpy as np
>>> from sklearn import linear_model
>>> reg = linear_model.RidgeCV(alphas=np.logspace(-6, 6, 13))
>>> reg.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
RidgeCV(alphas=array([1.e-06, 1.e-05, 1.e-04, 1.e-03, 1.e-02, 1.e-01, 1.e+00, 1.e+01,
1.e+02, 1.e+03, 1.e+04, 1.e+05, 1.e+06]))
>>> reg.alpha_
0.01
Указание значения атрибута cv вызовет использование перекрестной проверки
с помощью GridSearchCV
, например cv = 10
для 10-кратной перекрестной проверки,
а не перекрестной проверки с оставлением одного значения.
“Notes on Regularized Least Squares”, Rifkin & Lippert (technical report,
course slides).
Ссылки
Click for more details
¶
1.1.3. Лассо (Lasso)¶
Лассо (Lasso
)
это линейная модель, которая оценивает разреженные коэффициенты.
Это полезно в некоторых контекстах из-за своей тенденции отдавать предпочтение
решениям с меньшим количеством ненулевых коэффициентов, эффективно уменьшая
количество признаков, от которых зависит данное решение.
По этой причине лассо и его варианты являются фундаментальными для области
сжатого представления ( так называемый compressed sensing).
При определенных условиях он может восстановить точный набор ненулевых коэффициентов (см.
Compressive sensing: tomography reconstruction with L1 prior (Lasso)).
Математически он состоит из линейной модели с добавленным членом регуляризации. Целевая функция, которую необходимо минимизировать:
Таким образом, оценка Лассо решает проблему минимизации штрафа методом наименьших квадратов с помощью добавления \(\alpha ||w||_1\), где \(\alpha\) постоянная, а \(||w||_1\) это \(\ell_1\)- норма вектора коэффициентов.
Реализация в классе Lasso
использует координатный спуск в качестве алгоритма подбора коэффициентов.
См. Другую реализацию в разделе
Регрессия наименьшего угла:
>>> from sklearn import linear_model
>>> reg = linear_model.Lasso(alpha=0.1)
>>> reg.fit([[0, 0], [1, 1]], [0, 1])
Lasso(alpha=0.1)
>>> reg.predict([[1, 1]])
array([0.8])
Функция lasso_path
полезна для низкоуровневых задач, поскольку она вычисляет коэффициенты по всему пути возможных значений.
Примечание
Выбор признаков (Feature selection) с лассо
Поскольку регрессия Лассо дает разреженные модели, она может таким образом, использоваться для выполнения выбора призакнов, как подробно описано в Выбор функций на основе L1.
Следующие две ссылки объясняют используемые итерации в решениях координатного спуска scikit-learn,
а также вычисление разрыва двойственности, используемое для контроля сходимости. “Regularization Path For Generalized linear Models by Coordinate Descent”,
Friedman, Hastie & Tibshirani, J Stat Softw, 2010 (Paper). “An Interior-Point Method for Large-Scale L1-Regularized Least Squares,”
S. J. Kim, K. Koh, M. Lustig, S. Boyd and D. Gorinevsky,
in IEEE Journal of Selected Topics in Signal Processing, 2007
(Paper)
Ссылки
Click for more details
¶
1.1.3.1. Настройка параметра регуляризации¶
Параметр alpha
управляет степенью разряженности оцениваемых
коэффициентов.
1.1.3.1.1. Использование кросс-валидации¶
scikit-learn для Лассо предоставляет объекты с помощью которых, можно подобрать параметр alpha
через кросс-валидацию: LassoCV
и LassoLarsCV
.
LassoLarsCV
основан на алогоритме Регрессия наименьшего угла который описан ниже.
Для наборов с большим количеством признаком (так называемой high-dimensional - высокой размеросности)
а так же с множеством коллинеарных признаков, предпочтительнее использовать класс
LassoCV
. Тем не менее, LassoLarsCV
имеет преимущество в исследовании более актуальных значений параметра alpha
, и если количество
записей очень мало по сравнению с количеством признаков, то он часто быстрее, чем LassoCV
.
1.1.3.1.2. Выбор модели на основе информационных критериев¶
Альтернативный вариант для выбора модели на основе информационных критериев представляет
класс LassoLarsIC
, который предлагает использовать
Информационный критерий Акаике (Akaike information criterion - AIC) и
Байесовский Информационный критерий (Bayes Information criterion - BIC).
Это более дешевая в вычислительном отношении альтернатива поиску оптимального значения альфа,
поскольку путь регуляризации вычисляется только один раз вместо k+1 раз как
при использовании k-кратной (или k-фолдной) перекрестной проверки (кросс валидации).
Действительно, эти критерии вычисляются на обучающем наборе внутри выборки. То есть, они штрафуют чрезмерно оптимистичные оценки различных моделей Лассо на их адаптивности (см. раздел “Математические детали” ниже).
Однако такие критерии требуют правильной оценки степеней свободы решения, при работе с большими выборками (асимптотические результаты). В итоге предполагается едиинственная правильная модель - среди кандидатов, которые рассматриваются среди всех моделей. Они также имеют тенденцию ломаться, когда проблема плохо обусловлена (например, много признаков, но мало записей).
1.1.3.1.3. Критерии AIC и BIC¶
Определение AIC (и, следовательно, BIC) может отличаться в литературе. В этом разделе мы даем дополнительную информацию о критерии, рассчитанном в scikit-learn.
Критерий AIC выражается как: где \(\hat{L}\) это максимальная вероятонсоть модели и
\(d\) - количество параметров (также называемый степенью
свобода в предыдущем разделе). Определение BIC заменяет константу \(2\) на \(\log(N)\): где \(N\) количество записей. Для линейной гауссовой модели максимальное логарифмическое правдоподобие определяется как где \(\sigma^2\) это оценка дисперсии шума,
\(y_i\) и \(\hat{y}_i\) соответственно истинные и прогнозируемые целевые метки,
и \(n\) - количество записей. Подстановка максимального логарифмического правдоподобия в формулу AIC дает: Первый член приведенного выше выражения иногда отбрасывают, поскольку он является константой,
когда представлена \(\sigma^2\). Кроме того, иногда утверждается, что AIC эквивалентен \(C_p\) статистике
[12]. Однако в строгом смысле эквивалентно лишь с точностью до некоторой константы и мультипликативного множителя. Наконец, мы упомянули выше, что \(\sigma^2\) - это оценка дисперсии шума.
В где \(p\) это количество признаков и \(\hat{y}_i\) это предсказанная целевая переменная
используемая в обычной регрессию метода наименьших квадратов.
Обратите внимание, что эта формула справедлива только тогда, когда
Математические детали
Click for more details
¶
LassoLarsIC
, когда параметр noise_variance
не указан (по умолчанию),
дисперсия шума оценивается с помощью несмещенной оценки [13], определяемой как:n_samples > n_features
.
1.1.3.1.4. Сравнение с параметром регуляризации SVM¶
Эквивалентность между alpha
и параметр регуляризации SVM,
C
получаем alpha = 1 / C
или alpha = 1 / (n_samples * C)
,
в зависимости от средства оценки и точной целевой функции, оптимизированной моделью.
1.1.4. Мультизадачное Лассо (Multi-task Lasso)¶
Класс MultiTaskLasso
- это линейная модель, которая совместно оценивает
разреженные коэффициенты для нескольких задач регрессии: y
представляет
собой двумерный массив формы (n_samples, n_tasks)
. Ограничение состоит
в том, что выбранные признаки являются одинаковыми для всех задач регрессии.
На следующем рисунке сравнивается расположение ненулевых записей в матрице коэффициентов W, полученной с помощью простого Lasso или MultiTaskLasso. Оценки Lasso дают разрозненные ненулевые значения, тогда как ненулевые значения MultiTaskLasso представляют собой заполненные столбцы.
Fitting a time-series model, imposing that any active feature be active at all times.
Примеры:
Математически он состоит из линейной модели, обученной со смешанной
\(\ell_1\) \(\ell_2\) - нормой для регуляризации.
Целевая функция, которую необходимо минимизировать: где \(\text{Fro}\) указывает на норму Фробениуса и \(\ell_1\) \(\ell_2\) читаем Реализация в классе
Mathematical details
Click for more details
¶
MultiTaskLasso
использует спуск по координатам
в качестве алгоритма подбора коэффициентов.
1.1.5. Эластичная сеть (Elastic-net)¶
Класс ElasticNet
- это модель линейной регрессии, обученная как с
помощью \(\ell_1\), так и \(\ell_2\)-нормы регуляризации коэффициентов.
Эта комбинация позволяет изучить разреженную модель, в которой лишь немногие
веса не равны нулю, например Lasso
, сохраняя при этом свойства
регуляризации Ridge
. Мы управляем сводной комбинацией \(\ell_1\) и \(\ell_2\)
с помощью параметра l1_ratio
.
Elastic-net полезен, когда имеется несколько призакнов, коррелирующих друг с другом. Лассо, скорее всего, выберет один из них случайным образом, а эластичная сеть, скорее всего, выберет оба.
Практическое преимущество компромисса между Lasso и Ridge заключается в том, что он позволяет Elastic-Net унаследовать некоторую стабильность Ridge при вращении.
Целевая функция, которую нужно минимизировать, в этом случае равна:
Класс ElasticNetCV
можно использовать для установки параметров
alpha
(\(\alpha\)) и l1_ratio
(\(\rho\)) с помощью кросс валидации.
Примеры:
Следующие две ссылки объясняют итерации, используемые в алгоритме координатного
спуска scikit-learn, а также вычисление разрыва двойственности,
используемое для управления сходимостью. “Regularization Path For Generalized linear Models by Coordinate Descent”,
Friedman, Hastie & Tibshirani, J Stat Softw, 2010 (Paper). “An Interior-Point Method for Large-Scale L1-Regularized Least Squares,”
S. J. Kim, K. Koh, M. Lustig, S. Boyd and D. Gorinevsky,
in IEEE Journal of Selected Topics in Signal Processing, 2007
(Paper)
Ссылки
Click for more details
¶
1.1.6. Мультизадачная Эластичная сеть¶
Класс MultiTaskElasticNet
- это модель эластичной сети, которая совместно
оценивает разреженные коэффициенты для нескольких задач регрессии: Y
- это
двумерный массив формы (n_samples, n_tasks)
. Ограничение состоит в том, что
выбранные признаки являются одинаковыми для всех задач регрессии.
Математически она состоит из линейной модели, обученной со смешанной \(\ell_1\) \(\ell_2\)-нормой и \(\ell_2\)-нормой для регуляризации. Целевая функция, которую необходимо минимизировать:
Реализация в классе MultiTaskElasticNet
использует спуск по координатам в
качестве алгоритма подбора коэффициентов.
Класс MultiTaskElasticNetCV
можно использовать для установки параметров
alpha
(\(\alpha\)) и l1_ratio
(\(\rho\)) для кросс валидации.
1.1.7. Регрессия наименьшего угла¶
Регрессия наименьшего угла (Least Angle Regression - LARS) - это алгоритм регрессии для многомерных данных, разработанный Брэдли Эфроном, Тревором Хасти, Иэном Джонстоном и Робертом Тибширани. LARS похож на прямую пошаговую регрессию. На каждом этапе он находит признак, наиболее коррелирующую с целью. Когда существует несколько признаков, имеющих одинаковую корреляцию, вместо продолжения вдоль одного и того же признака, процесс продолжается в равноугольном направлении между признаками.
Преимущества LARS are:
Он численно эффективен в контекстах, где количество признаков значительно превышает количество выборок.
В вычислительном отношении он так же быстр, как и прямой выбор, и имеет тот же порядок сложности, что и обычный метод наименьших квадратов.
Он создает полный кусочно-линейный путь решения, который полезен при кросс валидации или аналогичных попытках настройки модели.
Если два признака почти одинаково коррелируют с целью, то их коэффициенты должны увеличиваться примерно с одинаковой скоростью. Таким образом, алгоритм ведет себя так, как и ожидала интуиция, а также является более стабильным.
Его легко модифицировать для получения решений для других моделей, таких как Лассо.
К недостаткам метода LARS относятся:
Поскольку LARS основан на итеративной переработке остатков, он может оказаться особенно чувствительным к влиянию шума. Эта проблема подробно обсуждается Вейсбергом в дискуссионном разделе книги Эфрона и др. (2004) Статья “Анналы статистики”.
Модель LARS можно использовать через класс Lars
, или его
низкоуровневая реализация lars_path
или lars_path_gram
.
1.1.8. LARS Лассо¶
LassoLars
представляет собой модель лассо, реализованную с использованием алгоритма LARS,
и в отличие от реализации, основанной на спуске по координатам, она дает точное решение,
которое является кусочно-линейным в зависимости от нормы его коэффициентов.
>>> from sklearn import linear_model
>>> reg = linear_model.LassoLars(alpha=.1)
>>> reg.fit([[0, 0], [1, 1]], [0, 1])
LassoLars(alpha=0.1)
>>> reg.coef_
array([0.6..., 0. ])
Примеры:
Алгоритм Ларса предоставляет полный путь коэффициентов
по параметру регуляризации почти без дополнительны затрат,
поэтому обычной операцией является получение
пути с помощью одной из функций lars_path
или lars_path_gram
.
Алгоритм похож на прямую пошаговую регрессию, но вместо того,
чтобы включать признаки на каждом шаге, весовые коэффициенты
увеличиваются в направлении, равносильном корреляциям каждого
из них с остатком. Вместо того, чтобы давать векторный результат, решение LARS состоит из кривой,
обозначающей решение для каждого значения \(\ell_1\) - норма вектора параметров.
Полный путь коэффициентов хранится в массиве Ссылки: Original Algorithm is detailed in the paper Least Angle Regression
by Hastie et al.
Математическая постановка
Click for more details
¶
coef_path_
, который имеет размер
(n_features, max_features + 1)
. Первый столбец всегда равен нулю.
1.1.9. Ортогональное соответствие (Orthogonal Matching Pursuit - OMP)¶
Класс OrthogonalMatchingPursuit
и функция orthogonal_mp
реализует алгоритм
OMP для аппроксимации соответствия линейной модели с ограничениями,
наложенными на количество ненулевых коэффициентов (т. е. \(\ell_0\) псевдонорма).
Будучи методом прямого выбора признаков, таким как Регрессия наименьшего угла, поиск ортогонального соответствия может аппроксимировать вектор оптимального решения с фиксированным числом ненулевых элементов:
В качестве альтернативы, поиск ортогонального соответствия может нацеливаться на конкретную ошибку вместо определенного количества ненулевых коэффициентов. Это можно выразить как:
OMP основан на жадном алгоритме, который на каждом этапе включает признак, наиболее сильно коррелирующий с текущим остатком. Он похож на более простой метод поиска совпадений (MP), но лучше тем, что на каждой итерации остаток пересчитывается с использованием ортогональной проекции на пространство ранее выбранных элементов словаря.
Примеры:
Ссылки
Click for more details
¶
1.1.10. Байесовская регрессия¶
Методы байесовской регрессии можно использовать для включения параметров регуляризации в процедуру оценки: параметр регуляризации не задается в жестком смысле, а настраивается в соответствии с имеющимися данными.
Это можно сделать, введя
Это можно сделать, внедрив Неинформативное априорное распределение
над гиперпараметрами модели.
В \(\ell_{2}\) регуляризация, используемая в Ридж регрессия и классификация
эквивалентна нахождению максимальной апостериорной оценки при гауссовой
априорной оценке коэффициентов \(w\) с точностью \(\lambda^{-1}\).
Вместо настройки lambda
вручную, ее можно рассматривать как случайную величину,
которую нужно оценить на основе данных.
Чтобы получить полностью вероятностную модель, на выходе \(y\) предполагается, что Гауссово распределено вокруг \(X w\):
где \(\alpha\) снова рассматривается как случайная величина, которая должна быть оценена на основе данных.
Преимущества байесовской регрессии:
Оно адаптируется к имеющимся данным.
Её можно использовать для включения параметров регуляризации в процедуру оценки.
К недостаткам байесовской регрессии можно отнести:
Вывод модели может занять много времени.
Хорошее введение в байесовские методы дано в C. Bishop: Pattern Recognition and Machine Learning. Оригинальный алгоритм подробно описан в книге Рэдфорда М. Нила
Рекомендации
Click for more details
¶
Bayesian learning for neural
networks
1.1.10.1. Байесовская Ридж Регрессия (Bayesian Ridge Regression)¶
BayesianRidge
оценивает вероятностную модель проблемы регрессии, как описано выше.
Приоритет коэффициента \(w\) определяется сферической гауссианой:
Априорные значения для \(\alpha\) и \(\lambda\) выбраны как гамма-распределения,
сопряженные априорные значения для точности гауссиан. Полученная модель называется Байесовская Ридж Регрессия
и похожа на классическую модель “Ридж” (Ridge
).
Параметры \(w\), \(\alpha\) и \(\lambda\) оцениваются совместно во время обучения
модели, параметры регуляризации \(\alpha\) и \(\ лямбда\) оценивается путем максимизации
логарифмической предельной вероятности. Реализация scikit-learn основана на алгоритме, описанном
в Приложении A к (Tipping, 2001), где обновление параметров \(\alpha\) и \(\lambda\)
выполняется, как предложено в (MacKay, 1992). ). Начальное значение процедуры максимизации
можно установить с помощью гиперпараметров alpha_init
и lambda_init
.
Есть еще четыре гиперпараметра, \(\alpha_1\), \(\alpha_2\), \(\lambda_1\) и \(\lambda_2\) гамма-априорных распределений по \(\alpha\) и \(\lambda\). Обычно они выбираются как неинформативные. По умолчанию \(\alpha_1 = \alpha_2 = \lambda_1 = \lambda_2 = 10^{-6}\).
Пример использования Байесовской Ридж Регрессии:
>>> from sklearn import linear_model
>>> X = [[0., 0.], [1., 1.], [2., 2.], [3., 3.]]
>>> Y = [0., 1., 2., 3.]
>>> reg = linear_model.BayesianRidge()
>>> reg.fit(X, Y)
BayesianRidge()
После подбора модель можно использовать для прогнозирования новых значений:
>>> reg.predict([[1, 0.]])
array([0.50000013])
Доступ к коэффициентам \(w\) модели можно получить:
>>> reg.coef_
array([0.49999993, 0.49999993])
Due to the Bayesian framework, the weights found are slightly different to the ones found by Метод наименьших квадратов (Ordinary Least Squares, OLS) МНК. However, Bayesian Ridge Regression is more robust to ill-posed problems.
Из-за байесовской структуры найденные веса немного отличаются от тех, которые были найдены с помощью Метод наименьших квадратов (Ordinary Least Squares, OLS) МНК. Однако Байесовская ридж регрессия более устойчива к некорректно поставленным задачам (задача, не обладающая каким-либо из свойств корректно поставленной задачи.).
Примеры:
Раздел 3.3 в книге Кристофера М. Бишопа: Распознавание образов и машинное обучение, 2006 г. Дэвид Дж. К. Маккей, Байесовская интерполяция, 1992. Майкл Э. Типпинг, Разреженное байесовское обучение и машина вектора релевантности, 2001.
Ссылки
Click for more details
¶
1.1.10.2. Автоматическое определение релевантности - ARD¶
Автоматическое определение релевантности (реализовано в классе
ARDRegression
) представляет собой своего рода линейную модель, очень похожую на
Байесовскую Ридж Регрессию, но это приводит к более редким коэффициентам \(w\)
[1] [2].
Класс ARDRegression
имеет другой приоритет по сравнению с \(w\): он отбрасывает
сферическое распределение Гаусса в пользу центрированного эллиптического распределения
Гаусса. Это означает, что каждый коэффициент \(w_{i}\) может быть получен
из распределения Гаусса с центром в нуле и с точностью
\(\lambda_{i}\):
с \(A\) являющаяся положительно определенной диагональной матрицей и \(\text{diag}(A) = \lambda = \{\lambda_{1},...,\lambda_{p}\}\).
В отличие от Байесовской ридж регрессии, каждая координата \(w_{i}\) имеет собственное стандартное отклонение \(\frac{1}{\lambda_i}\). Приоритет для всех \(\lambda_i\) выбирается равным одному и тому же гамма-распределению, заданному гиперпараметрами \(\lambda_1\) и \(\lambda_2\).
ARD также известен в литературе как Разреженное байесовское обучение и Релевантная векторная машина [3] [4]. Подробное сравнение ARD и “байесовской ридж регрессии” см. в примере ниже.
Примеры:
Ссылки:
Кристофер М. Бишоп: Распознавание образов и машинное обучение, Глава 7.2.1
Дэвид Випф и Срикантан Нагараджан: Новый взгляд на автоматическое определение релевантности
Майкл Э. Типпинг: Разреженное байесовское обучение и вектор релевантности
Тристан Флетчер: Объяснение машин вектора релевантности
1.1.11. Логистическая регрессия¶
Логистическая регрессия реализована в LogisticRegression
. Несмотря
на свое название, она реализована как линейная модель классификации, а не
регрессия в терминах scikit-learn/ML. Логистическая регрессия
также известна в литературе как логит-регрессия, классификация максимальной
энтропии (MaxEnt) или лог-линейный классификатор. В этой модели вероятности,
описывающие возможные результаты одного испытания, моделируются с использованием
логистической функции.
Эта реализация может соответствовать бинарной регрессии, регрессии “один против остальных” или полиномиальной логистической регрессии с дополнительной регуляризацией \(\ell_1\), \(\ell_2\) или Elastic-Net регуляризации.
Примечание
Регуляризация
Регуляризация применяется по умолчанию, что часто встречается в машинном обучении, но не в статистике. Еще одним преимуществом регуляризации является то, что она повышает числовую стабильность. Отсутствие регуляризации означает установку C на очень высокое значение.
Примечание
Логистическая регрессия как частный случай обобщенных линейных моделей (Generalized Linear Models - GLM)
Логистическая регрессия - это частный случай Обобщенные линейные модели (Generalized Linear Models - GLM) с условным распределением Биномиального/Бернулли и логит-связью. Числовой результат логистической регрессии, который представляет собой прогнозируемую вероятность, можно использовать в качестве классификатора, применив к нему пороговое значение (по умолчанию 0.5). Именно так это реализовано в scikit-learn: он ожидает категориальную целевую перменную, что делает Логистическую Регрессию классификатором.
Примеры
1.1.11.1. Двоичный случай¶
Для простоты записи мы предполагаем, что цель \(y_i\) принимает значения из набора
\(\{0, 1\}\) для точки данных \(i\). После установки метод
predict_proba
LogisticRegression
прогнозирует вероятность положительного
класса \(P(y_i=1|X_i)\) как
В качестве задачи оптимизации логистическая регрессия двоичного класса с регуляризацией \(r(w)\) минимизирует следующую функцию затрат:
где \({s_i}\) соответствует весам, присвоенным пользователем конкретной обучающей выборке (вектор \(s\) формируется путем поэлементного умножения весов классов и весов выборки).
В настоящее время предоставляется четыре варианта члена регуляризации \(r(w)\)
через аргумент penalty
:
penalty |
\(r(w)\) |
---|---|
|
\(0\) |
\(\ell_1\) |
\(\|w\|_1\) |
\(\ell_2\) |
\(\frac{1}{2}\|w\|_2^2 = \frac{1}{2}w^T w\) |
|
\(\frac{1 - \rho}{2}w^T w + \rho \|w\|_1\) |
Для ElasticNet
\(\rho\) (который соответствует параметру l1_ratio
)
контролирует силу регуляризации \(\ell_1\) по сравнению с регуляризацией
\(\ell_2\). Elastic-Net эквивалентен \(\ell_1\), когда \(\rho = 1\),
и эквивалентен \(\ell_2\), когда \(\rho=0\).
Обратите внимание, что масштаб весов классов и весов выборки будет влиять на задачу
оптимизации. Например, умножение весов выборки на константу \(b>0\) эквивалентно
умножению (обратной) силы регуляризации C
на \(b\).
1.1.11.2. Полиномиальный случай¶
Бинарный случай может быть расширен до \(K\)-классов, что приводит к полиномиальной логистической регрессии, см. также логарифмически-линейную модель.
Примечание
Можно параметризовать классификационную модель \(K\)-класса, используя только весовые векторы \(K-1\), оставляя вероятность одного класса полностью определяемой вероятностями другого класса, используя тот факт, что все вероятности классов должны суммироваться к одному. Мы намеренно решили чрезмерно параметризовать модель, используя весовые векторы \(K\) для простоты реализации и сохранения симметричного индуктивного смещения относительно порядка классов, см. [16]. Этот эффект становится особенно важным при использовании регуляризации. Выбор сверхпараметризации может оказаться вредным для нештрафных моделей, поскольку тогда решение может быть неединственным, как показано в [16].
Пусть \(y_i \in {1, \ldots, K}\) будет целевой переменной с меткой (порядковым номером) для наблюдения \(i\).
Вместо одного вектора коэффициентов мы теперь имеем
матрицу коэффициентов \(W\), где каждый вектор-строка \(W_k\) соответствует классу
\(k\). Мы стремимся предсказать вероятности классов \(P(y_i=k|X_i)\) с помощью
Целью оптимизации становится Где \([P]\) представляет собой скобку Айверсона, значение которой равно \(0\)
если \(P\) имеет значение false, в противном случае оно оценивается как \(1\).
В настоящее время мы предлагаем четыре варианта для члена регуляризации \(r(W)\) через аргумент penalty \(r(W)\) \(0\) \(\ell_1\) \(\|W\|_{1,1} = \sum_{i=1}^m\sum_{j=1}^{K}|W_{i,j}|\) \(\ell_2\) \(\frac{1}{2}\|W\|_F^2 = \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^{K} W_{i,j}^2\) \(\frac{1 - \rho}{2}\|W\|_F^2 + \rho \|W\|_{1,1}\)
Математические детали
Click for more details
¶
predict_proba
как:штраф
, где \(m\)
количество признаков:
None
ElasticNet
1.1.11.3. Алгоритмы оптимизации¶
В классе LogisticRegression
реализованлы следующие алгоритмы оптимизации
“lbfgs”, “liblinear”, “newton-cg”, “newton-cholesky”, “sag” и “saga”:
В следующей таблице приведены штрафы, поддерживаемые каждым алгоритмом:
Алгоритм |
|||||||
Штрафы |
‘lbfgs’ |
‘liblinear’ |
‘newton-cg’ |
‘newton-cholesky’ |
‘sag’ |
‘saga’ |
|
Полиномиальный + L2 регуляризация |
yes |
no |
yes |
no |
yes |
yes |
|
OVR* + L2 регуляризация |
yes |
yes |
yes |
yes |
yes |
yes |
|
Полиномиальный + L1 регуляризация |
no |
no |
no |
no |
no |
yes |
|
OVR* + L1 регуляризация |
no |
yes |
no |
no |
no |
yes |
|
Elastic-Net |
no |
no |
no |
no |
no |
yes |
|
Бзе ругуляризации (‘none’) |
yes |
no |
yes |
yes |
yes |
yes |
|
Поведения |
|||||||
Наказать за перехват (плохо) |
no |
yes |
no |
no |
no |
no |
|
Быстрее для больших наборов данных |
no |
no |
no |
no |
yes |
yes |
|
Устойчивость к немасштабируемым наборам данных |
yes |
yes |
yes |
yes |
no |
no |
*OVR - one-vs-rest (один против всех)
Алгоритм “lbfgs” используется по умолчанию из-за его надежности. Для больших наборов данных алгоритм “saga” обычно работает быстрее.
Для большого набора данных вы также можете рассмотреть возможность использования SGDClassifier
с loss="log_loss"
,
что может быть еще быстрее, но требует дополнительной настройки.
1.1.11.3.1. Различия между алгоритмами¶
Может быть разница в результатах, полученных между
LogisticRegression
с solver=liblinear
или
LinearSVC
и напрямую внешней liblinear библиотекой,
когда fit_intercept=False` ` и обученные коэффиценты ``coef_
(или) прогнозируемые данные равны нулю.
Это связано с тем, что для образцов с нулевой decision_function
LogisticRegression
и LinearSVC
прогнозируют отрицательный класс,
а liblinear прогнозирует положительный класс.
Обратите внимание, что модель с fit_intercept=False
и имеющая множество выборок с decision_function
нулевой, скорее всего, будет недообученной (underfit), плохой моделью, и вам рекомендуется установить
fit_intercept=True
и увеличить intercept_scaling`
.
Алогоритм liblinear использует алгоритм Координатного Спуска (КС) и полагается
на превосходную библиотеку C++ LIBLINEAR, которая
поставляется с scikit-learn. Однако алгоритм КС, реализованный в liblinear, не может изучить
настоящую полиномиальную (мультиклассовую) модель; вместо этого задача оптимизации
декомпозируется по принципу “один против остальных”, поэтому для всех классов
обучаются отдельные двоичные классификаторы. Это происходит “под капотом”, поэтому экземпляр
Алгоритмы lbfgs, newton-cg и sag поддерживают только регуляризацию \(\ell_2\)
или не поддерживают ее, и обнаружено, что они сходятся быстрее для некоторых
многомерных данных. Установка для multi_class значения “полиномиальную” с помощью этих алгоритмов
позволяет изучить истинную полиномиальную модель логистической регрессии [5], что означает,
что ее оценки вероятности должны быть лучше откалиброваны, чем настройка по умолчанию “один против остальных”. Алгоритм sag использует Cтохастический Cредний Градиентный (Stochastic Average Gradient) спуск [6].
Он работает быстрее, чем другие алгоритмы, для больших наборов данных, когда и количество записей,
и количество признаков велико. Алгоритм saga [7] - это вариант sag, который также поддерживает
негладкий lbfgs - это алгоритм оптимизации, аппроксимирующий алгоритм Бройдена–Флетчера–Гольдфарба–Шенно [8],
который принадлежит к квазиньютоновским методам. Таким образом, он может обрабатывать широкий спектр различных
обучающих данных и поэтому является алгоритм по умолчанию. Однако его производительность снижается
на плохо масштабируемых наборах данных и на наборах данных с категориальными признаками (закодированными в one-hot encoded)
и редкими категориями. Алгоритм newton-cholesky (Ньютона-Холесского) - это точный алгоритм Ньютона, который вычисляет матрицу Гессиана
и решает полученную линейную систему. Это очень хороший выбор, когда Для сравнения некоторых из этих алгоритмов см. [9]. Ссылки: Кристофер М. Бишоп: Распознавание образов и машинное обучение, Глава 4.3.4 Марк Шмидт, Николя Ле Ру и Фрэнсис Бах: Minimizing Finite Sums with the Stochastic Average Gradient. Аарон Дефацио, Франсис Бах, Симон Лакост-Жюльен:
SAGA: A Fast Incremental Gradient Method With Support for
Non-Strongly Convex Composite Objectives. https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm Томас П. Минка “A comparison of numerical optimizers for logistic regression”
Детали алогоритмов
Click for more details
¶
LogisticRegression
, использующий этот алгоритм, ведет себя как многоклассовый
классификатор. Для \(\ell_1\) регуляризация sklearn.svm.l1_min_c
позволяет
вычислить нижнюю границу для C, чтобы получить модель, отличную от “null” (все веса признаков равны нулю).penalty="l1"
. Таким образом, это предпочтительный алгоритм для
разреженной полиномиальной логистической регрессии. Это также единственный алгоритм,
который поддерживает penalty="elasticnet"
.n_samples
>> n_features
, но у него есть несколько недостатков:
Поддерживается только регуляризация \(\ell_2\). Более того, поскольку матрица гессиана вычисляется явно, использование памяти имеет
квадратичную зависимость от n_features, а также от n_classes.
Как следствие, для многоклассового случая реализуется только схема “один против остальных”.
Примечание
Выбор признаков (feature selection) с помощью разреженной логистической регрессии
Логистическая регрессия со штрафом \(\ell_1\) дает разреженные модели и, таким образом, может использоваться для выбора признаков, как подробно описано в Выбор функций на основе L1.
Примечание
Оценка P-value
В случаях регрессии можно получить значения p-value и доверительные интервалы для коэффициентов без регуляризации. Пакет statsmodels изначально поддерживает это. Вместо этого в sklearn можно также использовать Бутстрэп (Bootstrapping).
LogisticRegressionCV
реализует логистическую регрессию со встроенной
поддержкой перекрестной проверки, чтобы найти оптимальные параметры C
и l1_ratio
в соответствии с атрибутом scoring
. Алгоритмы newton-cg, sag, saga и lbfgs
оказались быстрее для многомерных плотных данных
из-за горячего запуска (см. Глоссарий).
1.1.12. Обобщенные линейные модели (Generalized Linear Models - GLM)¶
Обобщенные линейные модели (GLM) расширяют линейные модели двумя способами [10]. Во-первых, прогнозируемые значения \(\hat{y}\) связаны с линейной комбинацией входных переменных \(X\) через функцию обратной связи \(h\) как
Во-вторых, квадрат функции потерь заменяется единичным отклонением \(d\) распределения в экспоненциальном семействе (или, точнее, модели репродуктивной экспоненциальной дисперсии (EDM) [11]).
Задача минимизации становится:
где \(\alpha\) - штраф за регуляризацию L2. Если указаны веса выборки, среднее значение становится средневзвешенным.
В следующей таблице перечислены некоторые конкретные EDM и их единичные отклонения:
Распределение |
Целевой домен |
Отклонение единицы измерения \(d(y, \hat{y})\) |
---|---|---|
Нормальное |
\(y \in (-\infty, \infty)\) |
\((y-\hat{y})^2\) |
Бернулли |
\(y \in \{0, 1\}\) |
\(2({y}\log\frac{y}{\hat{y}}+({1}-{y})\log\frac{{1}-{y}}{{1}-\hat{y}})\) |
Категорийное |
\(y \in \{0, 1, ..., k\}\) |
\(2\sum_{i \in \{0, 1, ..., k\}} I(y = i) y_\text{i}\log\frac{I(y = i)}{\hat{I(y = i)}}\) |
Пуассона |
\(y \in [0, \infty)\) |
\(2(y\log\frac{y}{\hat{y}}-y+\hat{y})\) |
Гамма |
\(y \in (0, \infty)\) |
\(2(\log\frac{\hat{y}}{y}+\frac{y}{\hat{y}}-1)\) |
Обратное Гаусса |
\(y \in (0, \infty)\) |
\(\frac{(y-\hat{y})^2}{y\hat{y}^2}\) |
Функции Плотности Вероятности (Probability Density Functions - PDF) этих распределений показаны на следующем рисунке:
Распределение Бернулли - это дискретное распределение вероятностей, моделирующее испытание Бернулли - событие, имеющее только два взаимоисключающих результата. Категориальное распределение является обобщением распределения Бернулли для категориальной случайной величины. В то время как случайная величина в распределении Бернулли имеет два возможных результата, категориальная случайная величина может принимать одну из K возможных категорий, при этом вероятность каждой категории указывается отдельно.
Выбор дистрибутива зависит от решаемой задачи:
Если целевыми значениями \(y\) являются числа (неотрицательные целочисленные значения) или относительные частоты (неотрицательные), вы можете использовать распределение Пуассона с лог-связью.
Если целевые значения имеют положительные значения и асимметричны, вы можете попробовать гамма-распределение с помощью лог-связи.
Если целевые значения кажутся более хвостатыми, чем гамма-распределение, вы можете попробовать обратное распределение Гаусса (или даже более высокие степени дисперсии семейства Твиди).
Если целевые значения \(y\) являются вероятностями, вы можете использовать распределение Бернулли. Распределение Бернулли с логит-связью можно использовать для двоичной классификации. Категориальное распределение со ссылкой softmax можно использовать для многоклассовой классификации.
Моделирование сельского хозяйства/погоды: количество дождей в год (Пуассон),
количество осадков на одно событие (Гамма), общее количество осадков в год (Твиди / Составное Распределение Пуассона). Моделирование рисков/цены на страховые полисы: количество страховых случаев на одного страхователя в год (Пуассон),
стоимость за событие (Гамма), общая стоимость на одного страхователя в год (Твиди/Составное Распределение Пуассона). Кредитный скоринг: вероятность того, что кредит не может быть погашен (Бернулли). Обнаружение мошенничества: вероятность того, что финансовая операция, такая как перевод наличных, является мошеннической транзакцией (Бернулли). Прогнозное обслуживание: количество случаев прерывания производства в год (Пуассон),
продолжительность перерыва (Гамма), общее время перерыва в год (Твиди / Составное Распределение Пуассона). Медицинское тестирование на лекарства: вероятность излечения пациента в ходе ряда исследований
или вероятность того, что у пациента возникнут побочные эффекты (Бернулли). Классификация новостей: классификация новостных статей на три категории, а именно новости бизнеса, политики и развлечений (категориальные).
Примеры использования
Click for more details
¶
Ссылки:
McCullagh, Peter; Nelder, John (1989). Generalized Linear Models, Second Edition. Boca Raton: Chapman and Hall/CRC. ISBN 0-412-31760-5.
Jørgensen, B. (1992). The theory of exponential dispersion models and analysis of deviance. Monografias de matemática, no. 51. See also Exponential dispersion model.
1.1.12.1. Использование¶
TweedieRegressor
реализует обобщенную линейную модель распределения Твиди,
которая позволяет моделировать любое из вышеупомянутых распределений,
используя соответствующий параметр power
. В частности:
power = 0
: Нормальное распределение. В этом случае обычно более подходят специальные оценки, такие какRidge
иElasticNet
.power = 1
: Распределение Пуассона.PoissonRegressor
представлен для удобства. Однако он строго эквивалентенTweedieRegressor(power=1, link='log')
.power = 2
: Гамма-распределение.GammaRegressor
представлен для удобства. Однако он строго эквивалентенTweedieRegressor(power=2, link='log')
.power = 3
: Обратное распределение Гаусса.
Функция ссылки определяется параметром link
.
Пример использования:
>>> from sklearn.linear_model import TweedieRegressor
>>> reg = TweedieRegressor(power=1, alpha=0.5, link='log')
>>> reg.fit([[0, 0], [0, 1], [2, 2]], [0, 1, 2])
TweedieRegressor(alpha=0.5, link='log', power=1)
>>> reg.coef_
array([0.2463..., 0.4337...])
>>> reg.intercept_
-0.7638...
Примеры
Матрица признаков Поскольку линейный предиктор \(Xw\) может быть отрицательным, а распределения
Пуассона, гамма-распределения и обратного гауссова
не поддерживают отрицательные значения, необходимо применить функцию обратной связи,
которая гарантирует неотрицательность. Например, при Если вы хотите смоделировать относительную частоту, то есть количество отсчетов на одно воздействие
(время, объем и т. д.), вы можете сделать это, используя распределение Пуассона и передав
\(y=\frac{\mathrm{counts}}{\ mathrm{exposure}}\) в качестве целевых значений вместе с
\(\mathrm{exposure}\) в качестве весов выборки.
Конкретный пример
Tweedie regression on insurance claims. При выполнении перекрестной проверки параметра
Практические соображения
Click for more details
¶
X
должна быть стандартизирована перед обучением.
Это гарантирует, что штраф будет одинаково относиться к признакам.link='log'
функция обратной
связи принимает вид \(h(Xw)=\exp(Xw)\).power
TweedieRegressor`
желательно указать явную функцию scoring
,
поскольку метод по умолчанию TweedieRegressor.score
является функцией самого power
.
1.1.13. Стохастический градиентный спуск (Stochastic Gradient Descent - SGD)¶
Стохастический градиентный спуск - это простой, но очень эффективный подход
для обучения линейной модели. Это особенно полезно, когда количество записей
(и количество признаков) очень велико.
Метод partial_fit
позволяет проводить онлайн-обучение или внеосновное обучение.
Классы SGDClassifier
и SGDRegressor
предоставляют
функциональные возможности обучения линейной модели для классификации и регрессии
с использованием различных (выпуклых) функций потерь и различных штрафов.
Например, с loss="log"
SGDClassifier
обучает модель логистической регрессии,
а с loss="hinge"
он обучает линейной машине опорных векторов (SVM).
Вы можете обратиться к специальному разделу документации Стохастический градиентный спуск для получения более подробной информации.
1.1.14. Персептрон¶
Класс Perceptron
еще один простой алгоритм классификации,
подходящий для крупномасштабного обучения. По умолчанию:
Не требует указывать скорости обучения (learning rate).
Не указано регуляризации.
Обновляет свою модель только на ошибках.
Последняя характеристика подразумевает, что персептрон обучается немного быстрее, чем SGD с потерей “шарнира” (SVM), и что получаемые модели более разрежены.
Фактически, Perceptron
- это оболочка класса SGDClassifier
,
использующая потери перцептрона и постоянную скорость обучения. Для получения
более подробной информации обратитесь к математическому разделу
процедуры SGD.
1.1.15. Пассивно-агрессивные алгоритмы¶
The passive-aggressive algorithms are a family of algorithms for large-scale
learning. They are similar to the Perceptron in that they do not require a
learning rate. However, contrary to the Perceptron, they include a
regularization parameter C
.
Пассивно-агрессивные алгоритмы - это семейство алгоритмов для крупномасштабного
обучения. Они похожи на персептрон тем, что не требуют скорости обучения (learning rate).
Однако, в отличие от Персептрона, они включают параметр регуляризации C
.
Для классификации PassiveAggressiveClassifier
может быть использован с
loss='hinge'
(PA-I) или loss='squared_hinge'
(PA-II). Для регрессии,
PassiveAggressiveRegressor
может быть использован с
loss='epsilon_insensitive'
(PA-I) или
loss='squared_epsilon_insensitive'
(PA-II).
“Online Passive-Aggressive Algorithms”
K. Crammer, O. Dekel, J. Keshat, S. Shalev-Shwartz, Y. Singer - JMLR 7 (2006)
Ссылки
Click for more details
¶
1.1.16. Регрессия устойчивости: выбросы и ошибки моделирования¶
Робастная регрессия направлена на то, чтобы соответствовать модели регрессии при наличии поврежденных данных: либо выбросов, либо ошибок в модели.
1.1.16.1. Различные сценарии и полезные концепции¶
При работе с данными, поврежденными выбросами, следует учитывать разные вещи:
Выбросы по X или по y?
Выбросы в направлении y
Выбросы в направлении X
Доля выбросов в зависимости от амплитуды ошибки
Имеет значение не только количество выпадающих точек, но и то, насколько они являются выбросами.
Небольшие выбросы
Большие выбросы
Важным понятием надежной аппроксимацией является точка разбивки: доля данных, которая может быть исключенной, из-за которой при аппроксимации начинают упускаться внутренние данные.
Обратите внимание, что в целом качественное обучение в условиях большой размерности (большие
n_features
) очень сложна. Представленные здесь робастные модели, вероятно, не будут работать
в таких условиях.
Компромиссы: какая модель ?
Scikit-learn предоставляет 3 робастные средства оценки регрессии: RANSAC, Theil Sen и HuberRegressor.
HuberRegressor должно быть быстрее, чем RANSAC и Theil Sen если только количество выборок не очень велико, т.е.
n_samples
>>n_features
. Это потому что RANSAC и Theil Sen обучаются на меньших подмножеств данных. Однако оба Theil Sen и RANSAC вряд ли окажутся столь же робастными, как HuberRegressor для параметров по умолчанию.RANSAC быстрее чем Theil Sen и гораздо лучше масштабируется в зависимости от объема данных.
RANSAC будет лучше справляться с большими выбросами в направлении y (наиболее распространенная ситуация).
Theil Sen будет лучше справляться с выбросами среднего размера в направлении X, но это свойство исчезнет в настройках большой размерности.
В случае сомнений используйте RANSAC.
1.1.16.2. RANSAC: RANdom SAmple Consensus (Консенсус случайной выборки)¶
RANSAC (RANdom SAmple Consensus) обучает модели из случайных подмножеств вставок из полного набора данных.
RANSAC - это недетерминированный алгоритм, дающий только разумный результат с
определенной вероятностью, которая зависит от количества итераций (см. параметр max_trials
).
Обычно он используется для решения задач линейной и нелинейной регрессии и особенно
популярен в области фотограмметрического
компьютерного зрения.
Алгоритм разделяет полные данные входной выборки на подвыборки, которые могут быть подвержены шуму, и выбросов, которые, например, вызваны ошибочными измерениями или неверными гипотезами о данных. Результирующая модель затем оценивается только на основе определенных вкладок.
Examples
Каждая итерация выполняет следующие шаги: Выбор случайной подвыборки Обучение модели случайного подмножества ( Классифицируются все данные как вложенные значения или выбросы путем расчета остатков для оцененной модели ( Сохраняется обученная модель как лучшая модель, если количество вложенных значений максимально.
Если текущая оцененная модель имеет такое же количество вложенных значений, она считается лучшей моделью только в том случае,
если она имеет более высокий балл. Примечание Что такое Вложенное значение? Вложенное значение - это значение данных, которое находится внутри статистического распределения и является ошибочным. Вложенное значение - это наблюдение, лежащее в пределах общего распределения других наблюдаемых значений,
обычно не искажающее результаты, но, тем не менее, несоответствующее и необычное. Вложенное значение трудно отличить от хороших значений данных Пример: Простым примером вставки может быть значение в записи, указанное в неправильных единицах, скажем, в градусах Фаренгейта вместо градусов Цельсия. В чем может быть опасность их присутствия в наборе данных? Обычно это не влияет на статистические результаты.
выявление Вложенных значений иногда может сигнализировать о неправильном измерении и, таким образом, быть полезным для улучшения качества данных. Могу ли я идентифицировать их собственными глазами?
Нет, это невозможно для одной переменной в отдельности идентификация вставки практически невозможна.
Но в многомерных данных с взаимосвязями между переменными можно выявить вложенные значения. ссылки: Эти шаги выполняются либо максимальное количество раз ( Функции
Подробности алгоритма
Click for more details
¶
min_samples
из исходных данных и проверка, действителен ли набор данных (см. is_data_valid
).base_estimator.fit
) и проверка, действительна ли оцененная модель (см. is_model_valid
).base_estimator.predict(X) - y
) - все выборки данных
с абсолютными остатками, меньшими или равными residual_threshold
, считаются вложенными значениями.
max_trials
),
либо до тех пор, пока не будет выполнен один из специальных критериев остановки
(см. stop_n_inliers
и stop_score
). Окончательная модель оценивается с использованием
всех внутренних выборок (консенсусного набора) ранее определенной лучшей модели.is_data_valid
и is_model_valid
позволяют идентифицировать и отклонять
вырожденные комбинации случайных подвыборок. Если предполагаемая модель
не требуется для выявления вырожденных случаев, следует использовать is_data_valid
,
поскольку он вызывается перед обучением модели, что приводит к повышению
производительности вычислений.
“Random Sample Consensus: A Paradigm for Model Fitting with Applications to
Image Analysis and Automated Cartography”
Martin A. Fischler and Robert C. Bolles - SRI International (1981) “Performance Evaluation of RANSAC Family”
Sunglok Choi, Taemin Kim and Wonpil Yu - BMVC (2009)
Ссылки
Click for more details
¶
1.1.16.3. Оценка Тейла-Сена (Theil-Sen estimator): оценка на основе обобщенной медианы¶
Класс TheilSenRegressor
использует обобщение медианы в нескольких измерениях.
Таким образом, он устойчив к многомерным выбросам. Однако обратите внимание, что надежность
оценки быстро снижается с увеличением размерности задачи. Он теряет свои свойства устойчивости
и становится не лучше обычного метода наименьших квадратов в больших измерениях.
Примеры:
Метод Реализация С точки зрения временной и пространственной сложности Тейл-Сен масштабируется в соответствии с что делает невозможным его исчерпывающее применение к задачам с
большим количеством записей и признаков. Следовательно, размер субпопуляции
можно выбрать, чтобы ограничить временную и пространственную сложность,
рассматривая только случайное подмножество всех возможных комбинаций. Ссылки: Xin Dang, Hanxiang Peng, Xueqin Wang and Heping Zhang: Theil-Sen Estimators in a Multiple Linear Regression Model. Kärkkäinen and S. Äyrämö: On Computation of Spatial Median for Robust Data Mining. Also see the Wikipedia page
Теоретические соображения
Click for more details
¶
TheilSenRegressor
сравним с Обычным методом наименьших квадратов (МНК)
с точки зрения асимптотической эффективности и несмещенной оценки.
В отличие от МНК, метод Тейла-Сена является непараметрическим методом, что означает,
что он не делает предположений об основном распределении данных.
Поскольку Тейл-Сен является модель на основе медианы, он более устойчив к поврежденным данным,
то есть выбросам. В одномерной настройке точка разбивки Тейла-Сена составляет около 29,3%
в случае простой линейной регрессии, что означает, что он может допускать
произвольные искажения данных до 29,3%.TheilSenRegressor
в scikit-learn следует за
обобщением многомерной модели линейной регрессии [14] с использованием
пространственной медианы, которая является обобщением медианы на несколько
измерений [15].
1.1.16.4. Регрессия Губера (Huber Regression)¶
HuberRegressor
отличается от Ridge
, поскольку он применяет
линейные потери к выборкам, которые классифицируются как выбросы.
Выборка классифицируется как второстепенная, если абсолютная ошибка
этой выборки меньше определенного порога.
Так же он отличается от TheilSenRegressor
и RANSACRegressor
,
поскольку не игнорирует влияние выбросов, но придает им меньший вес.
Примеры:
Функция потерь, которую минимизирует где Рекомендуется установить параметр Ссылки: Peter J. Huber, Elvezio M. Ronchetti: Robust Statistics, Concomitant scale
estimates, pg 172
Математические детали
Click for more details
¶
HuberRegressor
, определяется выражениемepsilon
равным 1.35 для достижения статистической эффективности 95%.
HuberRegressor
отличается от использования SGDRegressor
с параметром loss, установленным в huber
, следующим образом.
HuberRegressor
является инвариантом масштабирования. После установкиepsilon
масштабированиеX
иy
вниз или вверх на разные значения обеспечит ту же устойчивость к выбросам, что и раньше по сравнению сSGDRegressor
, гдеepsilon
нужно устанавливать снова, когдаX
иy
масштабируются.HuberRegressor
должен быть более эффективным для использования с данными с небольшим количеством выборок, в то время какSGDRegressor
требует нескольких проходов обучающих данных для обеспечения той же надежности.
Обратите внимание, что эта оценка отличается от реализации Устойчивой Регрессии в языке R (https://stats.oarc.ucla.edu/r/dae/robust-regression/), поскольку реализация R выполняет взвешенную реализацию метода наименьших квадратов с весами, присвоенными каждому выборку на основе того, насколько остаток превышает определенный порог.
1.1.17. Квантильная регрессия (Quantile Regression)¶
Квантильная регрессия оценивает медиану или другие квантили \(y\) при условии \(X\), тогда как обычный метод наименьших квадратов (МНК) оценивает условное среднее.
Квантильная регрессия может быть полезна, если кто-то заинтересован в прогнозировании интервала, а не прогнозирования точки. Иногда интервалы прогнозирования рассчитываются на основе предположения, что ошибка прогнозирования распределяется нормально с нулевым средним значением и постоянной дисперсией. Квантильная регрессия обеспечивает разумные интервалы прогнозирования даже для ошибок с непостоянной (но предсказуемой) дисперсией или ненормальным распределением.
Основываясь на минимизации ошибки так называемой “pinball loss” [e1], условные квантили также можно
оценивать с помощью моделей, отличных от линейных. Например, GradientBoostingRegressor
может предсказывать условные
квантили, если его параметр loss
установлен на "quantile"
, а параметр
alpha
установлен на квантиль, который должен быть предсказанным. См. пример в
Prediction Intervals for Gradient Boosting Regression.
Большинство реализаций квантильной регрессии основаны на задаче линейного программирования.
Текущая реализация основана на
scipy.optimize.linprog
.
Примеры:
Ссылки:
Steinwart, Ingo; Christmann, Andreas (2011). “Estimating conditional quantiles with the help of the pinball loss”. Bernoulli. 17 (1). Bernoulli Society for Mathematical Statistics and Probability: 211–225. arXiv:1102.2101. doi:10.3150/10-BEJ267.
В качестве линейной модели Это состоит из “pinball loss” (также известных как линейные потери), см. также и штраф L1, управляемый параметром Поскольку “pinball loss” является линейной только в остатках, квантильная регрессия
гораздо более устойчива к выбросам, чем оценка среднего значения на основе квадратичной ошибки.
Где-то посередине находится
Математические детали
Click for more details
¶
QuantileRegressor
дает линейные предсказания
\(\hat{y}(w, X) = Xw\) для \(q\)-го квантиля, \(q \ в (0, 1)\).
Затем веса или коэффициенты \(w\) находятся с помощью следующей
задачи минимизации:mean_pinball_loss
,alpha
, аналогичный Lasso
.HuberRegressor
.
Koenker, R., & Bassett Jr, G. (1978). Regression quantiles.
Econometrica: journal of the Econometric Society, 33-50. Portnoy, S., & Koenker, R. (1997). The Gaussian hare and the Laplacian
tortoise: computability of squared-error versus absolute-error estimators.
Statistical Science, 12, 279-300. Koenker, R. (2005). Quantile Regression.
Cambridge University Press.
Ссылки
Click for more details
¶
1.1.18. Полиномиальная регрессия: расширение линейных моделей базисными функциями¶
Одним из распространенных шаблонов машинного обучения является использование линейных моделей,обученных на нелинейных функциях данных. Этот подход сохраняет в целом высокую производительность линейных методов, позволяя им обучаться гораздо более широкому диапазону данных.
Например, простую линейную регрессию можно расширить, построив
полиномиальные признаки на основе коэффициентов. В случае стандартной линейной
регрессии у вас может быть модель, которая выглядит следующим образом для
двумерных данных: Если мы хотим обучить к данным параболоид вместо плоскости, мы можем объединить
признаки в полиномы второго порядка, чтобы модель выглядела следующим образом: Наблюдение (иногда удивительное) заключается в том, что это все еще линейная модель:
чтобы увидеть это, представьте, что вы создаете новый набор признаков. С помощью такой перемаркировки данных нашу задачу можно записать Мы видим, что результирующая полиномиальная регрессия относится к тому же классу
линейных моделей, которые мы рассматривали выше (т.е. модель линейна по \(w\))
и может быть решена теми же методами. Учитывая линейные зависимости в
многомерном пространстве, построенном с помощью этих базовых функций, модель обладает
гибкостью, позволяющей обучаться гораздо более широкому диапазону данных.
Математические детали
Click for more details
¶
Вот пример применения этой идеи к одномерным данным с использованием полиномиальных признаков разной степени:
Эта фигура создается с помощью преобразователя PolynomialFeatures
, который
преобразует матрицу входных данных в новую матрицу данных заданной степени.
Его можно использовать следующим образом:
>>> from sklearn.preprocessing import PolynomialFeatures
>>> import numpy as np
>>> X = np.arange(6).reshape(3, 2)
>>> X
array([[0, 1],
[2, 3],
[4, 5]])
>>> poly = PolynomialFeatures(degree=2)
>>> poly.fit_transform(X)
array([[ 1., 0., 1., 0., 0., 1.],
[ 1., 2., 3., 4., 6., 9.],
[ 1., 4., 5., 16., 20., 25.]])
Признаки X
были преобразованы из \([x_1, x_2]\) в
\([1, x_1, x_2, x_1^2, x_1 x_2, x_2^2]\), и теперь может использоваться в
любой линейной модели.
Этот вид предварительной обработки можно упростить с помощью инструментов Pipeline. Один объект, представляющий простую полиномиальную регрессию, можно создать и использовать следующим образом:
>>> from sklearn.preprocessing import PolynomialFeatures
>>> from sklearn.linear_model import LinearRegression
>>> from sklearn.pipeline import Pipeline
>>> import numpy as np
>>> model = Pipeline([('poly', PolynomialFeatures(degree=3)),
... ('linear', LinearRegression(fit_intercept=False))])
>>> # fit to an order-3 polynomial data
>>> x = np.arange(5)
>>> y = 3 - 2 * x + x ** 2 - x ** 3
>>> model = model.fit(x[:, np.newaxis], y)
>>> model.named_steps['linear'].coef_
array([ 3., -2., 1., -1.])
Линейная модель, обученная на полиномиальных признаках, способна точно восстанавливать входные полиномиальные коэффициенты.
В некоторых случаях нет необходимости включать более высокие степени какой-либо отдельного признака.
Можно оставить только так называемые взаимодействия признаков (interaction features),
которые являются умножением максимально различных входных признаков.
То есть исключаются члены со степенью 2 и выше одного и того же входного объекта.
Их можно получить из PolynomialFeatures
с настройкой interaction_only=True
.
Например, при работе с логическими признаками \(x_i^n = x_i\) для всех \(n\) и поэтому бесполезно; но \(x_i x_j\) представляет собой объединение двух логических значений. Таким образом, мы можем решить проблему XOR с помощью линейного классификатора:
>>> from sklearn.linear_model import Perceptron
>>> from sklearn.preprocessing import PolynomialFeatures
>>> import numpy as np
>>> X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
>>> y = X[:, 0] ^ X[:, 1]
>>> y
array([0, 1, 1, 0])
>>> X = PolynomialFeatures(interaction_only=True).fit_transform(X).astype(int)
>>> X
array([[1, 0, 0, 0],
[1, 0, 1, 0],
[1, 1, 0, 0],
[1, 1, 1, 1]])
>>> clf = Perceptron(fit_intercept=False, max_iter=10, tol=None,
... shuffle=False).fit(X, y)
И “предсказания” классификатора идеальны:
>>> clf.predict(X)
array([0, 1, 1, 0])
>>> clf.score(X, y)
1.0