SGDRegressor#
- класс sklearn.linear_model.SGDRegressor(потеря='squared_error', *, штраф='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, перемешивание=True, verbose=0, эпсилон=0.1, random_state=None, learning_rate='invscaling', eta0=0.01, power_t=0.25, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, warm_start=False, среднее=False)[источник]#
Линейная модель, обученная путем минимизации регуляризованной эмпирической потери с SGD.
SGD означает стохастический градиентный спуск: градиент потерь оценивается для каждого образца отдельно, и модель обновляется по ходу с уменьшающимся графиком силы (также известным как скорость обучения).
Регуляризатор — это штраф, добавленный к функции потерь, который сжимает параметры модели к нулевому вектору, используя либо квадрат евклидовой нормы L2, либо абсолютную норму L1, либо их комбинацию (Elastic Net). Если обновление параметра пересекает значение 0.0 из-за регуляризатора, обновление обрезается до 0.0, чтобы позволить обучение разреженных моделей и достичь онлайн-отбора признаков.
Эта реализация работает с данными, представленными в виде плотных массивов numpy значений с плавающей точкой для признаков.
Подробнее в Руководство пользователя.
- Параметры:
- потеряstr, default=’squared_error’
Используемая функция потерь. Возможные значения: 'squared_error', 'huber', 'epsilon_insensitive' или 'squared_epsilon_insensitive'
'squared_error' относится к обычному методу наименьших квадратов. 'huber' модифицирует 'squared_error', чтобы меньше фокусироваться на правильности выбросов, переключаясь с квадратичной на линейную потерю после расстояния эпсилон. 'epsilon_insensitive' игнорирует ошибки меньше эпсилон и линейна после этого; это функция потерь, используемая в SVR. 'squared_epsilon_insensitive' аналогична, но становится квадратичной потерей после допуска эпсилон.
Более подробную информацию о формулах потерь можно найти в Руководство пользователя.
- штраф{‘l2’, ‘l1’, ‘elasticnet’, None}, по умолчанию=’l2’
Штраф (также известный как регуляризационный член) для использования. По умолчанию 'l2', что является стандартным регуляризатором для линейных моделей SVM. 'l1' и 'elasticnet' могут привнести разреженность в модель (отбор признаков), недостижимую с 'l2'. Штраф не добавляется, когда установлено
None.Вы можете увидеть визуализацию штрафов в SGD: Штрафы.
- alphafloat, по умолчанию=0.0001
Константа, умножающая член регуляризации. Чем выше значение, тем сильнее регуляризация. Также используется для вычисления скорости обучения, когда
learning_rateустановлено в 'optimal'. Значения должны быть в диапазоне[0.0, inf).- l1_ratiofloat, по умолчанию=0.15
Параметр смешивания Elastic Net, с 0 <= l1_ratio <= 1. l1_ratio=0 соответствует штрафу L2, l1_ratio=1 — L1. Используется только если
penaltyравно 'elasticnet'. Значения должны быть в диапазоне[0.0, 1.0]или может бытьNoneifpenaltyне являетсяelasticnet.Изменено в версии 1.7:
l1_ratioможет бытьNoneкогдаpenaltyне является "elasticnet".- fit_interceptbool, по умолчанию=True
Следует ли оценивать свободный член. Если False, предполагается, что данные уже центрированы.
- max_iterint, по умолчанию=1000
Максимальное количество проходов по обучающим данным (также называемых эпохами). Это влияет только на поведение в
fitметод, а неpartial_fitметод. Значения должны быть в диапазоне[1, inf).Добавлено в версии 0.19.
- tolfloat или None, по умолчанию=1e-3
Критерий остановки. Если не None, обучение остановится, когда (loss > best_loss - tol) для
n_iter_no_changeпоследовательных эпох. Сходимость проверяется по обучающим потерям или потерям валидации в зависимости отearly_stoppingпараметр. Значения должны быть в диапазоне[0.0, inf).Добавлено в версии 0.19.
- перемешиваниеbool, по умолчанию=True
Следует ли перемешивать обучающие данные после каждой эпохи.
- verboseint, по умолчанию=0
Уровень детализации вывода. Значения должны быть в диапазоне
[0, inf).- эпсилонfloat, по умолчанию=0.1
Эпсилон в эпсилон-нечувствительных функциях потерь; только если
lossравно 'huber', 'epsilon_insensitive' или 'squared_epsilon_insensitive'. Для 'huber' определяет порог, при котором становится менее важно получить точный прогноз. Для epsilon-нечувствительности любые различия между текущим прогнозом и правильной меткой игнорируются, если они меньше этого порога. Значения должны быть в диапазоне[0.0, inf).- random_stateint, экземпляр RandomState, по умолчанию=None
Используется для перемешивания данных, когда
shuffleустановлено вTrue. Передайте целое число для воспроизводимого результата при множественных вызовах функции. См. Глоссарий.- learning_ratestr, по умолчанию='invscaling'
Расписание скорости обучения:
‘constant’:
eta = eta0‘optimal’:
eta = 1.0 / (alpha * (t + t0))где t0 выбирается эвристикой, предложенной Леоном Ботту.‘invscaling’:
eta = eta0 / pow(t, power_t)‘adaptive’: eta = eta0, пока обучение продолжает уменьшаться. Каждый раз, когда n_iter_no_change последовательных эпох не уменьшают потерю обучения на tol или не увеличивают валидационную оценку на tol, если early_stopping равен True, текущая скорость обучения делится на 5.
'pa1': пассивно-агрессивный алгоритм 1, см. [1]. Только с
loss='epsilon_insensitive'. Обновлениеw += eta y xсeta = min(eta0, loss/||x||**2).‘pa2’: пассивно-агрессивный алгоритм 2, см. [1]. Только с
loss='epsilon_insensitive'. Обновлениеw += eta y xсeta = hinge_loss / (||x||**2 + 1/(2 eta0)).
Добавлено в версии 0.20: Добавлена опция 'adaptive'.
Добавлено в версии 1.8: Добавлены опции 'pa1' и 'pa2'
- eta0float, по умолчанию=0.01
Начальная скорость обучения для расписаний 'constant', 'invscaling' или 'adaptive'. Значение по умолчанию — 0.01. Значения должны находиться в диапазоне
(0.0, inf).Для PA-1 (
learning_rate=pa1) и PA-II (pa2), он задаёт агрессивность параметра для пассивно-агрессивного алгоритма, см. [1], где он называется C:Для PA-I это максимальный размер шага.
Для PA-II он регуляризует размер шага (чем меньше
eta0чем больше он регуляризует.
Как общее эмпирическое правило для PA,
eta0должен быть малым, когда данные зашумлены.- power_tfloat, по умолчанию=0.25
Показатель степени для обратного масштабирования скорости обучения. Значения должны находиться в диапазоне
[0.0, inf).Устарело с версии 1.8: Отрицательные значения для
power_tустарели в версии 1.8 и вызовут ошибку в 1.10. Используйте значения в диапазоне [0.0, inf) вместо этого.- early_stoppingbool, по умолчанию=False
Использовать ли раннюю остановку для прекращения обучения, когда валидационная оценка не улучшается. Если установлено True, автоматически выделит часть обучающих данных для валидации и прекратит обучение, когда валидационная оценка, возвращаемая
scoreметод не улучшается как минимум наtolдляn_iter_no_changeпоследовательных эпох.См. Ранняя остановка стохастического градиентного спуска для примера эффектов ранней остановки.
Добавлено в версии 0.20: Добавлена опция 'early_stopping'
- validation_fractionfloat, по умолчанию=0.1
Доля обучающих данных, которую следует выделить в качестве проверочного набора для ранней остановки. Должна быть в диапазоне от 0 до 1. Используется только если
early_stoppingравно True. Значения должны быть в диапазоне(0.0, 1.0).Добавлено в версии 0.20: Добавлена опция 'validation_fraction'
- n_iter_no_changeint, по умолчанию=5
Количество итераций без улучшения, которое нужно ждать перед остановкой обучения. Сходимость проверяется по обучающей потере или потере валидации в зависимости от
early_stoppingпараметр. Целочисленные значения должны быть в диапазоне[1, max_iter).Добавлено в версии 0.20: Добавлена опция 'n_iter_no_change'
- warm_startbool, по умолчанию=False
При установке в True повторно использует решение предыдущего вызова fit в качестве инициализации, в противном случае просто стирает предыдущее решение. См. Глоссарий.
Повторный вызов fit или partial_fit при warm_start=True может привести к другому решению, чем при однократном вызове fit, из-за способа перемешивания данных. Если используется динамическая скорость обучения, она адаптируется в зависимости от количества уже просмотренных образцов. Вызов
fitсбрасывает этот счетчик, в то время какpartial_fitприведет к увеличению существующего счетчика.- среднееbool или int, по умолчанию=False
При установке в True вычисляет усредненные веса SGD по всем обновлениям и сохраняет результат в
coef_атрибут. Если установлено в целое число больше 1, усреднение начнется, как только общее количество увиденных образцов достигнетaverage. Таким образом,average=10начнет усреднение после просмотра 10 образцов.
- Атрибуты:
- coef_ndarray формы (n_features,)
Веса, назначенные признакам.
- intercept_ndarray формы (1,)
Свободный член.
- n_iter_int
Фактическое количество итераций до достижения критерия остановки.
- t_int
Количество обновлений весов, выполненных во время обучения. То же, что и
(n_iter_ * n_samples + 1).- n_features_in_int
Количество признаков, замеченных во время fit.
Добавлено в версии 0.24.
- feature_names_in_ndarray формы (
n_features_in_,) Имена признаков, наблюдаемых во время fit. Определено только когда
Xимеет имена признаков, которые все являются строками.Добавлено в версии 1.0.
Смотрите также
HuberRegressorЛинейная регрессионная модель, устойчивая к выбросам.
LarsМодель регрессии с наименьшим углом.
LassoЛинейная модель, обученная с L1-априорным распределением в качестве регуляризатора.
RANSACRegressorАлгоритм RANSAC (RANdom SAmple Consensus).
RidgeЛинейные наименьшие квадраты с L2-регуляризацией.
sklearn.svm.SVREpsilon-Support Vector Regression.
TheilSenRegressorМногомерная регрессионная модель Theil-Sen Estimator, устойчивая к выбросам.
Ссылки
[1] (1,2)Online Passive-Aggressive Algorithms <http://jmlr.csail.mit.edu/papers/volume7/crammer06a/crammer06a.pdf> K. Crammer, O. Dekel, J. Keshat, S. Shalev-Shwartz, Y. Singer - JMLR (2006)
Примеры
>>> import numpy as np >>> from sklearn.linear_model import SGDRegressor >>> from sklearn.pipeline import make_pipeline >>> from sklearn.preprocessing import StandardScaler >>> n_samples, n_features = 10, 5 >>> rng = np.random.RandomState(0) >>> y = rng.randn(n_samples) >>> X = rng.randn(n_samples, n_features) >>> # Always scale the input. The most convenient way is to use a pipeline. >>> reg = make_pipeline(StandardScaler(), ... SGDRegressor(max_iter=1000, tol=1e-3)) >>> reg.fit(X, y) Pipeline(steps=[('standardscaler', StandardScaler()), ('sgdregressor', SGDRegressor())])
- densify()[источник]#
Преобразовать матрицу коэффициентов в плотный формат массива.
Преобразует
coef_преобразование (обратное) в numpy.ndarray. Это формат по умолчаниюcoef_и требуется для обучения, поэтому вызов этого метода необходим только для моделей, которые ранее были разрежены; в противном случае это пустая операция.- Возвращает:
- self
Обученный оценщик.
- fit(X, y, coef_init=None, intercept_init=None, sample_weight=None)[источник]#
Обучение линейной модели со стохастическим градиентным спуском.
- Параметры:
- X{array-like, sparse matrix}, форма (n_samples, n_features)
Обучающие данные.
- yndarray формы (n_samples,)
Целевые значения.
- coef_initndarray формы (n_features,), по умолчанию=None
Начальные коэффициенты для теплого старта оптимизации.
- intercept_initndarray формы (1,), по умолчанию=None
Начальный intercept для теплого старта оптимизации.
- sample_weightarray-like, shape (n_samples,), default=None
Веса, применяемые к отдельным образцам (1. для невзвешенных).
- Возвращает:
- selfobject
Обученная
SGDRegressorоценщик.
- 6332()[источник]#
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
- маршрутизацияMetadataRequest
A
MetadataRequestИнкапсуляция информации о маршрутизации.
- get_params(глубокий=True)[источник]#
Получить параметры для этого оценщика.
- Параметры:
- глубокийbool, по умолчанию=True
Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.
- Возвращает:
- paramsdict
Имена параметров, сопоставленные с их значениями.
- partial_fit(X, y, sample_weight=None)[источник]#
Выполнить одну эпоху стохастического градиентного спуска на заданных выборках.
Внутренне этот метод использует
max_iter = 1. Поэтому не гарантируется, что минимум функции стоимости достигается после одного вызова. Вопросы, такие как сходимость целевой функции и ранняя остановка, должны обрабатываться пользователем.- Параметры:
- X{array-like, sparse matrix}, форма (n_samples, n_features)
Подмножество обучающих данных.
- yмассив numpy формы (n_samples,)
Подмножество целевых значений.
- sample_weightarray-like, shape (n_samples,), default=None
Веса, применяемые к отдельным выборкам. Если не указаны, предполагаются равномерные веса.
- Возвращает:
- selfobject
Возвращает экземпляр self.
- predict(X)[источник]#
Прогнозирование с использованием линейной модели.
- Параметры:
- X{array-like, sparse matrix}, форма (n_samples, n_features)
Входные данные.
- Возвращает:
- ndarray формы (n_samples,)
Предсказанные значения целевой переменной для каждого элемента в X.
- score(X, y, sample_weight=None)[источник]#
Возвращает коэффициент детерминации на тестовых данных.
Коэффициент детерминации, \(R^2\), определяется как \((1 - \frac{u}{v})\), где \(u\) является остаточной суммой квадратов
((y_true - y_pred)** 2).sum()и \(v\) является общей суммой квадратов((y_true - y_true.mean()) ** 2).sum()Лучший возможный результат - 1.0, и он может быть отрицательным (потому что модель может быть сколь угодно хуже). Постоянная модель, которая всегда предсказывает ожидаемое значениеy, игнорируя входные признаки, получит \(R^2\) оценка 0.0.- Параметры:
- Xarray-like формы (n_samples, n_features)
Тестовые выборки. Для некоторых оценщиков это может быть предварительно вычисленная матрица ядра или список общих объектов вместо этого с формой
(n_samples, n_samples_fitted), гдеn_samples_fitted— это количество образцов, использованных при обучении оценщика.- yarray-like формы (n_samples,) или (n_samples, n_outputs)
Истинные значения для
X.- sample_weightarray-like формы (n_samples,), по умолчанию=None
Веса выборок.
- Возвращает:
- scorefloat
\(R^2\) of
self.predict(X)относительноy.
Примечания
The \(R^2\) оценка, используемая при вызове
scoreна регрессоре используетmultioutput='uniform_average'с версии 0.23 для сохранения согласованности со значением по умолчаниюr2_score. Это влияет наscoreметод всех многомерных регрессоров (кромеMultiOutputRegressor).
- set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') SGDRegressor[источник]#
Настроить, следует ли запрашивать передачу метаданных в
fitметод.Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.Варианты для каждого параметра:
True: запрашиваются метаданные и передаютсяfitесли предоставлено. Запрос игнорируется, если метаданные не предоставлены.False: метаданные не запрашиваются, и мета-оценщик не передаст их вfit.None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.Добавлено в версии 1.3.
- Параметры:
- coef_initstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED
Маршрутизация метаданных для
coef_initпараметр вfit.- intercept_initstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED
Маршрутизация метаданных для
intercept_initпараметр вfit.- sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED
Маршрутизация метаданных для
sample_weightпараметр вfit.
- Возвращает:
- selfobject
Обновленный объект.
- set_params(**params)[источник]#
Установить параметры этого оценщика.
Метод работает как на простых оценщиках, так и на вложенных объектах (таких как
Pipeline). Последние имеют параметры видачтобы можно было обновить каждый компонент вложенного объекта.__ - Параметры:
- **paramsdict
Параметры оценщика.
- Возвращает:
- selfэкземпляр estimator
Экземпляр оценщика.
- set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDRegressor[источник]#
Настроить, следует ли запрашивать передачу метаданных в
partial_fitметод.Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.Варианты для каждого параметра:
True: запрашиваются метаданные и передаютсяpartial_fitесли предоставлено. Запрос игнорируется, если метаданные не предоставлены.False: метаданные не запрашиваются, и мета-оценщик не передаст их вpartial_fit.None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.Добавлено в версии 1.3.
- Параметры:
- sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED
Маршрутизация метаданных для
sample_weightпараметр вpartial_fit.
- Возвращает:
- selfobject
Обновленный объект.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDRegressor[источник]#
Настроить, следует ли запрашивать передачу метаданных в
scoreметод.Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.Варианты для каждого параметра:
True: запрашиваются метаданные и передаютсяscoreесли предоставлено. Запрос игнорируется, если метаданные не предоставлены.False: метаданные не запрашиваются, и мета-оценщик не передаст их вscore.None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.Добавлено в версии 1.3.
- Параметры:
- sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED
Маршрутизация метаданных для
sample_weightпараметр вscore.
- Возвращает:
- selfobject
Обновленный объект.
- разрежать()[источник]#
Преобразовать матрицу коэффициентов в разреженный формат.
Преобразует
coef_члену разреженной матрицы scipy.sparse, что для моделей с L1-регуляризацией может быть значительно более эффективным по памяти и хранению, чем обычное представление numpy.ndarray.The
intercept_Член не преобразован.- Возвращает:
- self
Обученный оценщик.
Примечания
Для неразреженных моделей, т.е. когда в
coef_, это может фактически увеличить использование памяти, поэтому используйте этот метод с осторожностью. Эмпирическое правило: количество нулевых элементов, которое можно вычислить с помощью(coef_ == 0).sum(), должно быть больше 50%, чтобы это обеспечивало значительные преимущества.После вызова этого метода дальнейшее обучение с помощью метода partial_fit (если он есть) не будет работать, пока вы не вызовете densify.