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)[исходный код]

Линейная модель, обучаемая путем минимизации регуляризованной эмпирической функции потерь с помощью 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’

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.

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

Задержка предсказания

SGD: штрафы

© 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

Spec-Zone.ru

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