Spec-Zone.ru › scikit-learn

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’.

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.

Примеры из галереи

Задержка прогнозирования

SGD: Штрафы

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API