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)[source]
-
Линейная модель, обучаемая путём минимизации эмпирической регуляризованной функции потерь с использованием стохастического градиентного спуска.
SGD означает стохастический градиентный спуск: градиент функции потерь оценивается для каждого примера по отдельности, а модель обновляется по ходу с убывающим значением коэффициента обучения.
Регуляризатор представляет собой штраф, добавляемый к функции потерь, который сжимает параметры модели к нулевому вектору, используя либо евклидову норму L2, либо абсолютную норму L1, либо их комбинацию (Elastic Net). Если обновление параметра пересекает значение 0.0 из-за регуляризатора, обновление обрезается до 0.0, что позволяет обучать разреженные модели и проводить онлайн-выбор признаков.
Эта реализация работает с данными, представленными в виде плотных массивов NumPy с плавающей точкой для признаков.
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- lossstr, default=’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}, default=’l2’
-
Используемая функция штрафа (также известная как функция регуляризации). По умолчанию используется ‘l2’, которая является стандартной функцией регуляризации для линейных моделей SVM. ‘l1’ и ‘elasticnet’ могут привести к разреженности модели (отбору признаков), недостижимой с помощью ‘l2’. Штраф не применяется, если установлено значение
None.Визуализацию штрафов можно посмотреть в SGD: Штрафы.
- alphafloat, default=0.0001
-
Постоянная, которая умножает функцию регуляризации. Чем выше значение, тем сильнее регуляризация. Также используется для вычисления скорости обучения, когда
learning_rateустановлено в ‘optimal’. Значения должны быть в диапазоне[0.0, inf). - l1_ratiofloat, default=0.15
-
Параметр смешивания Elastic Net, с 0 ≤ l1_ratio ≤ 1. l1_ratio=0 соответствует штрафу L2, l1_ratio=1 – штрафу L1. Используется только если
penaltyравно ‘elasticnet’. Значения должны быть в диапазоне[0.0, 1.0]. - fit_interceptbool, default=True
-
Нужно ли оценивать свободный член?
- max_iterint, default=1000
-
Максимальное количество проходов по обучающим данным (эпох). Это влияет только на поведение в методе
fit, а не в методеpartial_fit. Значения должны быть в диапазоне[1, inf).Добавлен в версии 0.19.
- tolfloat or None, default=1e-3
-
Критерий остановки. Если не None, обучение остановится, когда (loss > best_loss - tol) в течение
n_iter_no_changeпоследовательных эпох. Сходимость проверяется по потерям на обучающей выборке или по потерям на валидационной выборке в зависимости от параметраearly_stopping. Значения должны быть в диапазоне[0.0, inf).Добавлен в версии 0.19.
- shufflebool, default=True
-
Перемешивать ли обучающие данные после каждой эпохи.
- verboseint, default=0
-
Уровень подробности. Значения должны быть в диапазоне
[0, inf). - epsilonfloat, default=0.1
-
Epsilon в функциях потерь с epsilon-нечувствительностью; только если
lossравно ‘huber’, ‘epsilon_insensitive’, или ‘squared_epsilon_insensitive’. Для ‘huber’ определяет порог, после которого становится менее важным получить точное предсказание. Для epsilon-нечувствительности любые различия между текущим предсказанием и правильным значением игнорируются, если они меньше этого порога. Значения должны быть в диапазоне[0.0, inf). - random_stateint, RandomState instance, default=None
-
Используется для перемешивания данных, когда
shuffleустановлено вTrue. Передайте целое число для воспроизводимого результата при нескольких вызовах функции. См. Словарь. - learning_ratestr, default=’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.
Добавлен в версии 0.20: Добавлен вариант ‘adaptive’.
- ‘constant’:
- eta0float, default=0.01
-
Начальная скорость обучения для графиков ‘constant’, ‘invscaling’ или ‘adaptive’. Значение по умолчанию 0.01. Значения должны быть в диапазоне
[0.0, inf). - power_tfloat, default=0.25
-
Показатель для обратного масштабирования скорости обучения. Значения должны быть в диапазоне
(-inf, inf). - early_stoppingbool, default=False
-
Использовать ли раннюю остановку для прекращения обучения, когда валидационная оценка не улучшается. Если установлено в True, автоматически отложит часть обучающих данных для валидации и прекратит обучение, когда валидационная оценка, возвращаемая методом
score, не улучшается как минимум наtolв течениеn_iter_no_changeпоследовательных эпох.Пример влияния ранней остановки можно посмотреть в Ранняя остановка градиентного спуска с помощью стохастического градиента.
Добавлен в версии 0.20: Добавлен параметр ‘early_stopping’
- validation_fractionfloat, default=0.1
-
Доля обучающих данных, откладываемых в качестве валидационной выборки для ранней остановки. Должно быть значением от 0 до 1. Используется только, если
early_stoppingравно True. Значения должны быть в диапазоне(0.0, 1.0).Добавлен в версии 0.20: Добавлен параметр ‘validation_fraction’
- n_iter_no_changeint, default=5
-
Количество итераций без улучшения, которые необходимо подождать, прежде чем остановить подгонку. Сходимость проверяется по потерям на обучающей выборке или по потерям на валидационной выборке в зависимости от параметра
early_stopping. Целочисленные значения должны быть в диапазоне[1, max_iter).Добавлен в версии 0.20: Добавлен параметр ‘n_iter_no_change’
- warm_startbool, default=False
-
Если установлено в True, используйте решение из предыдущего вызова fit в качестве начального значения, иначе просто стереть предыдущее решение. См. Словарь.
Повторные вызовы fit или partial_fit, когда warm_start = True, могут привести к другому решению, чем при единственном вызове fit, из-за способа перемешивания данных. Если используется динамическая скорость обучения, скорость обучения адаптируется в зависимости от количества уже увиденных образцов. Вызов
fitсбрасывает этот счётчик, аpartial_fitприведет к увеличению существующего счётчика. - averagebool or int, default=False
-
Если установлено в True, вычисляет усреднённые веса SGD по всем обновлениям и сохраняет результат в атрибуте
coef_. Если установлено в целое число больше 1, усреднение начнётся, когда общее количество увиденных образцов достигнетaverage. Такaverage=10начнёт усреднение после просмотра 10 образцов.
- Атрибуты:
-
- coef_ndarray of shape (n_features,)
-
Присвоенные весам признаков.
- intercept_ndarray of shape (1,)
-
Свободный член.
- n_iter_int
-
Фактическое количество итераций до достижения критерия остановки.
- t_int
-
Количество обновлений весов, выполненных во время обучения. То же, что и
(n_iter_ * n_samples + 1). - n_features_in_int
-
Количество признаков, увиденных во время fit.
Добавлен в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Названия признаков, увиденные во время fit. Определены только тогда, когда
Xимеет имена признаков, все из которых являются строками.Добавлен в версии 1.0.
См. также
HuberRegressor-
Линейная регрессионная модель, устойчивая к выбросам.
Lars-
Модель регрессии наименьших углов.
Lasso-
Линейная модель, обученная с регуляризацией L1.
RANSACRegressor-
Алгоритм RANSAC (случайный выбор, согласованность образцов).
Ridge-
Линейные наименьшие квадраты с регуляризацией l2.
sklearn.svm.SVR-
Регрессия с ε-машиной опорных векторов.
TheilSenRegressor-
Модель регрессии Тейла-Сена — устойчивая многомерная модель регрессии.
Примеры
>>> 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()[source]
-
Преобразовать матрицу коэффициентов в плотный массив.
Преобразует член
coef_(обратно) в numpy.ndarray. Это стандартный форматcoef_, и он необходим для обучения, поэтому вызов этого метода требуется только для моделей, которые ранее были разреженными; в противном случае это действие без эффекта.- Возвращает:
-
- self
-
Обученная модель.
- fit(X, y, coef_init=None, intercept_init=None, sample_weight=None)[source]
-
Обучить линейную модель методом стохастического градиентного спуска.
- Параметры:
-
- X{array-like, разреженная матрица}, форма (n_samples, n_features)
-
Обучающие данные.
- yмассив ndarray формы (n_samples,)
-
Целевые значения.
- coef_initмассив ndarray формы (n_features,), по умолчанию None
-
Начальные коэффициенты для разогрева оптимизации.
- intercept_initмассив ndarray формы (1,), по умолчанию None
-
Начальный сдвиг для разогрева оптимизации.
- sample_weightarray-like, форма (n_samples,), по умолчанию None
-
Веса, применяемые к отдельным образцам (1. для невзвешенных).
- Возвращает:
-
- selfобъект
-
Обученная модель
SGDRegressor.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
-
- routingMetadataRequest
-
MetadataRequestобъект, содержащий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию True
-
Если True, вернёт параметры этого оценщика и вложенных подобъектов, являющихся оценщиками.
- Возвращает:
-
- paramsсловарь
-
Имена параметров, сопоставленные со значениями.
- partial_fit(X, y, sample_weight=None)[source]
-
Выполнить одну эпоху стохастического градиентного спуска на заданных образцах.
Внутренне этот метод использует
max_iter = 1. Поэтому нет гарантии, что после однократного вызова будет достигнут минимум целевой функции. Вопросы сходимости целевой функции и раннего прерывания должны быть обработаны пользователем.- Параметры:
-
- X{array-like, разреженная матрица}, форма (n_samples, n_features)
-
Подмножество обучающих данных.
- yмассив numpy формы (n_samples,)
-
Подмножество целевых значений.
- sample_weightarray-like, форма (n_samples,), по умолчанию None
-
Веса, применяемые к отдельным образцам. Если не указано, предполагаются равномерные веса.
- Возвращает:
-
- selfобъект
-
Возвращает экземпляр self.
- predict(X)[source]
-
Предсказание с использованием линейной модели.
- Параметры:
-
- X{array-like, разреженная матрица}, форма (n_samples, n_features)
-
Входные данные.
- Возвращает:
-
- массив ndarray формы (n_samples,)
-
Предсказанные целевые значения для каждого элемента в X.
- score(X, y, sample_weight=None)[source]
-
Возвращает коэффициент детерминации предсказания.
Коэффициент детерминации \(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.- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Тестовые образцы. Для некоторых оценок это может быть предварительно вычисленная матрица ядра или список общих объектов вместо этого с формой
(n_samples, n_samples_fitted), гдеn_samples_fitted— это количество образцов, используемых в подгонке для оценки. - yмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)
-
Истинные значения для
X. - sample_weightмассивоподобный объект формы (n_samples,), default=None
-
Веса образцов.
- Возвращает:
-
- scorefloat
-
\(R^2\) of
self.predict(X)w.r.t.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[source]
-
Запрос метаданных, переданных методу
fit.Обратите внимание, что этот метод актуален только в том случае, если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, см. Руководство пользователя о том, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: запрашиваются метаданные и передаются вfit, если предоставлены. Запрос игнорируется, если метаданные не предоставлены. -
False: метаданные не запрашиваются, и мета-оценщик не будет передавать их вfit. -
None: метаданные не запрашиваются, и мета-оценщик вызовет ошибку, если пользователь предоставит их. -
str: метаданные должны быть переданы мета-оценщику с этим заданным псевдонимом вместо исходного имени.
Значение по умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, а не для других.Добавлено в версии 1.3.
Примечание
Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, используется внутри
Pipeline. В противном случае он не оказывает никакого влияния.- Параметры:
-
- coef_initstr, True, False, или None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
coef_initвfit. - intercept_initstr, True, False, или None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
intercept_initвfit. - sample_weightstr, True, False, или None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвfit.
- Возвращает:
-
- selfobject
-
Обновленный объект.
-
- set_params(**params)[source]
-
Задает параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (такими как
Pipeline). Последние имеют параметры формы<component>__<parameter>, так что можно обновить каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- set_partial_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') SGDRegressor[source]
-
Запрос метаданных, передаваемых методу
partial_fit.Обратите внимание, что этот метод актуален только если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, ознакомьтесь с Руководством пользователя, чтобы узнать, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: запрашиваются метаданные и передаются методуpartial_fitпри их наличии. Запрос игнорируется, если метаданные не предоставлены. -
False: метаданные не запрашиваются, и мета-оцениватель не передаст их методуpartial_fit. -
None: метаданные не запрашиваются, и мета-оцениватель выдаст ошибку, если пользователь их предоставит. -
str: метаданные должны передаваться мета-оценивателю с указанным псевдонимом вместо оригинального имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменять запросы для некоторых параметров, а не для всех.Добавлен в версии 1.3.
Примечание
Этот метод актуален только если этот оцениватель используется в качестве под-оценивателя мета-оценивателя, например, внутри
Pipeline. В противном случае он не оказывает влияния.- Parameters:
-
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвpartial_fit.
- Returns:
-
- selfobject
-
Обновлённый объект.
-
- set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') SGDRegressor[source]
-
Запрос метаданных, передаваемых методу
score.Обратите внимание, что этот метод актуален только если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, ознакомьтесь с Руководством пользователя, чтобы узнать, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: запрашиваются метаданные и передаются методуscoreпри их наличии. Запрос игнорируется, если метаданные не предоставлены. -
False: метаданные не запрашиваются, и мета-оцениватель не передаст их методуscore. -
None: метаданные не запрашиваются, и мета-оцениватель выдаст ошибку, если пользователь их предоставит. -
str: метаданные должны передаваться мета-оценивателю с указанным псевдонимом вместо оригинального имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменять запросы для некоторых параметров, а не для всех.Добавлен в версии 1.3.
Примечание
Этот метод актуален только если этот оцениватель используется в качестве под-оценивателя мета-оценивателя, например, внутри
Pipeline. В противном случае он не оказывает влияния.- Parameters:
-
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвscore.
- Returns:
-
- selfobject
-
Обновлённый объект.
-
- sparsify()[source]
-
Преобразовать матрицу коэффициентов в разреженный формат.
Преобразует член
coef_в матрицу scipy.sparse, что для моделей с L1-регуляризацией может быть значительно эффективнее с точки зрения памяти и хранения, чем обычное представление numpy.ndarray.Член
intercept_не преобразуется.- Returns:
-
- self
-
Обученный оцениватель.
Примечания
Для неразреженных моделей, то есть когда в
coef_не много нулевых элементов, это может фактически *увеличить* использование памяти, поэтому используйте этот метод с осторожностью. Правило большого пальца заключается в том, что количество нулевых элементов, которое можно вычислить с помощью(coef_ == 0).sum(), должно быть более 50%, чтобы это принесло существенные преимущества.После вызова этого метода дальнейшая подгонка с помощью метода partial_fit (если таковой имеется) не будет работать, пока вы не вызовете densify.
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.SGDRegressor.html