SGDRegressor
- classsklearn.linear_model.SGDRegressor(loss='squared_error', *, penalty='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, epsilon=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, average=False)[исходный код]
-
Линейная модель, обучаемая путем минимизации регуляризованной эмпирической функции потерь с помощью SGD.
SGD — это сокращение от Stochastic Gradient Descent (стохастический градиентный спуск): градиент функции потерь оценивается по одному образцу за раз, а параметры модели постепенно обновляются с уменьшающимся коэффициентом (также называемым скоростью обучения).
Регуляризатор — это штраф, добавляемый к функции потерь. Он сокращает параметры модели в направлении нулевого вектора, используя либо квадрат евклидовой нормы L2, либо абсолютную норму L1, либо их комбинацию (Elastic Net). Если из-за регуляризатора обновление параметра пересекает значение 0.0, обновление обрезается до 0.0, что позволяет обучать разреженные модели и выполнять онлайн-отбор признаков.
Эта реализация работает с данными, представленными в виде плотных массивов numpy с вещественными значениями признаков.
Подробнее см. в руководстве пользователя.
- Параметры:
-
- lossstr, по умолчанию ’squared_error’
-
Используемая функция потерь. Возможные значения: ‘squared_error’, ‘huber’, ‘epsilon_insensitive’ или ‘squared_epsilon_insensitive’
‘squared_error’ соответствует обычной подгонке методом наименьших квадратов. ‘huber’ изменяет ‘squared_error’, уделяя меньше внимания точности для выбросов: при расстоянии больше epsilon квадратичная функция потерь заменяется линейной. ‘epsilon_insensitive’ игнорирует ошибки меньше epsilon и является линейной за его пределами; эта функция потерь используется в SVR. ‘squared_epsilon_insensitive’ работает аналогично, но за пределами допуска epsilon использует квадратичную функцию потерь.
Подробнее о формулах функций потерь см. в руководстве пользователя.
- penalty{‘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]или могут бытьNone, еслиpenaltyне равно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.
- shufflebool, по умолчанию=True
-
Следует ли перемешивать обучающие данные после каждой эпохи.
- verboseint, по умолчанию=0
-
Уровень подробности вывода. Значения должны находиться в диапазоне
[0, inf). - epsilonfloat, по умолчанию=0.1
-
Epsilon в функциях потерь, нечувствительных к epsilon; используется только если
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’
- ‘constant’:
- 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приводит к увеличению его текущего значения. - averagebool или 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 (консенсус случайной выборки).
Ridge-
Линейная регрессия методом наименьших квадратов с регуляризацией l2.
sklearn.svm.SVR-
Регрессия на опорных векторах с нечувствительностью к epsilon.
TheilSenRegressor-
Устойчивая многомерная регрессионная модель — оценка Тейла—Сена.
Литература
[1] (1,2)Онлайн пассивно-агрессивные алгоритмы <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, разреженная матрица}, форма (n_samples, n_features)
-
Обучающие данные.
- yndarray формы (n_samples,)
-
Целевые значения.
- coef_initndarray формы (n_features,), по умолчанию=None
-
Начальные коэффициенты для продолжения оптимизации.
- intercept_initndarray формы (1,), по умолчанию=None
-
Начальное значение свободного члена для продолжения оптимизации.
- sample_weightarray-like, форма (n_samples,), по умолчанию=None
-
Веса отдельных образцов (1. для образцов без весов).
- Возвращает:
-
- selfobject
-
Обученный оцениватель
SGDRegressor.
- get_metadata_routing()[исходный код]
-
Получить настройки маршрутизации метаданных этого объекта.
Описание принципа работы механизма маршрутизации см. в руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий информацию о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценивателя.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, будут возвращены параметры этого оценивателя и содержащихся в нем подобъектов, являющихся оценивателями.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- partial_fit(X, y, sample_weight=None)[исходный код]
-
Выполнить одну эпоху стохастического градиентного спуска на заданных образцах.
Внутри этот метод использует
max_iter = 1. Поэтому нет гарантии, что после однократного вызова будет достигнут минимум целевой функции. Пользователь должен самостоятельно решать такие вопросы, как сходимость целевой функции и ранняя остановка.- Параметры:
-
- X{array-like, разреженная матрица}, форма (n_samples, n_features)
-
Подмножество обучающих данных.
- ynumpy-массив формы (n_samples,)
-
Подмножество целевых значений.
- sample_weightarray-like, форма (n_samples,), по умолчанию=None
-
Веса отдельных образцов. Если не указаны, предполагаются одинаковые веса.
- Возвращает:
-
- selfobject
-
Возвращает экземпляр self.
- predict(X)[исходный код]
-
Выполнить предсказание с помощью линейной модели.
- Параметры:
-
- X{array-like, разреженная матрица}, форма (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\) для
self.predict(X)относительноy.
Примечания
Оценка \(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). У последних параметры имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценивателя.
- Возвращает:
-
- selfэкземпляр оценивателя
-
Экземпляр оценивателя.
- 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
-
Обновлённый объект.
-
- sparsify()[исходный код]
-
Преобразовать матрицу коэффициентов в разреженный формат.
Преобразует атрибут
coef_в матрицу scipy.sparse, которая для моделей с L1-регуляризацией может быть гораздо эффективнее обычного представления numpy.ndarray с точки зрения использования памяти и объёма хранилища.Атрибут
intercept_не преобразуется.Предупреждение
Этот метод не поддерживается для оценивателей, обученных с входными данными array API (то есть когда
sklearn.config_contextиспользуется сarray_api_dispatch=True). Вызов может завершиться успешно, но последующие вызовыpredictи других методов, принимающих массивы, могут вызвать ошибку или вернуть неожиданные результаты.- Возвращает:
-
- self
-
Обученный оцениватель.
Примечания
Для моделей без разреженного представления, то есть если в
coef_мало нулей, этот метод может фактически увеличить использование памяти, поэтому применяйте его с осторожностью. В качестве общего ориентира: чтобы получить существенную выгоду, число нулевых элементов, которое можно вычислить с помощью(coef_ == 0).sum(), должно превышать 50%.После вызова этого метода дальнейшее обучение с помощью метода partial_fit (если применимо) будет невозможно, пока вы не вызовете densify.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.linear_model.SGDRegressor.html