MiniBatchNMF#

класс sklearn.decomposition.MiniBatchNMF(n_components='auto', *, init=None, batch_size=1024, beta_loss='frobenius', tol=0.0001, max_no_improvement=10, max_iter=200, alpha_W=0.0, alpha_H='same', l1_ratio=0.0, forget_factor=0.7, fresh_restarts=False, fresh_restarts_max_iter=30, transform_max_iter=None, random_state=None, verbose=0)[источник]#

Мини-пакетное неотрицательное матричное разложение (NMF).

Добавлено в версии 1.1.

Найти две неотрицательные матрицы, т.е. матрицы со всеми неотрицательными элементами, (W, H), произведение которых аппроксимирует неотрицательную матрицу X. Это разложение может использоваться, например, для уменьшения размерности, разделения источников или извлечения тем.

Целевая функция:

\[ \begin{align}\begin{aligned}L(W, H) &= 0.5 * ||X - WH||_{loss}^2\\ &+ alpha\_W * l1\_ratio * n\_features * ||vec(W)||_1\\ &+ alpha\_H * l1\_ratio * n\_samples * ||vec(H)||_1\\ &+ 0.5 * alpha\_W * (1 - l1\_ratio) * n\_features * ||W||_{Fro}^2\\ &+ 0.5 * alpha\_H * (1 - l1\_ratio) * n\_samples * ||H||_{Fro}^2,\end{aligned}\end{align} \]

где \(||A||_{Fro}^2 = \sum_{i,j} A_{ij}^2\) (норма Фробениуса) и \(||vec(A)||_1 = \sum_{i,j} abs(A_{ij})\) (Поэлементная L1 норма).

Общая норма \(||X - WH||_{loss}^2\) может представлять норму Фробениуса или другую поддерживаемую бета-дивергенцию. Выбор между вариантами контролируется параметром beta_loss параметр.

Целевая функция минимизируется с помощью чередующейся минимизации W и H.

Обратите внимание, что преобразованные данные называются W и матрица компонентов называется H. В литературе по NMF соглашение об именовании обычно противоположно, поскольку матрица данных X транспонируется.

Подробнее в Руководство пользователя.

Параметры:
n_componentsint или {‘auto’} или None, по умолчанию=’auto’

менее 30 или около того), None, все признаки сохраняются. Если n_components='auto', количество компонентов автоматически выводится из форм W или H.

Изменено в версии 1.4: Добавлен 'auto' значение.

Изменено в версии 1.6: Значение по умолчанию изменено с None to 'auto'.

init{‘random’, ‘nndsvd’, ‘nndsvda’, ‘nndsvdar’, ‘custom’}, по умолчанию=None

Метод, используемый для инициализации процедуры. Допустимые варианты:

  • None: ‘nndsvda’ если n_components <= min(n_samples, n_features), в противном случае случайный.

  • 'random': неотрицательные случайные матрицы, масштабированные с: sqrt(X.mean() / n_components)

  • 'nndsvd': Инициализация Nonnegative Double Singular Value Decomposition (NNDSVD) (лучше для разреженности).

  • 'nndsvda': NNDSVD с нулями, заполненными средним значением X (лучше, когда разреженность нежелательна).

  • 'nndsvdar' NNDSVD с нулями, заполненными небольшими случайными значениями (обычно более быстрая, но менее точная альтернатива NNDSVDa для случаев, когда разреженность нежелательна).

  • 'custom': Использовать пользовательские матрицы W и H которые должны быть предоставлены оба.

batch_sizeint, default=1024

Количество образцов в каждой мини-партии. Большие размеры партий дают лучшую долгосрочную сходимость ценой более медленного старта.

beta_lossfloat или {'frobenius', 'kullback-leibler', 'itakura-saito'}, по умолчанию='frobenius'

Бета-расхождение для минимизации, измеряющее расстояние между X и скалярное произведение WH. Обратите внимание, что значения, отличные от 'frobenius' (или 2) и 'kullback-leibler' (или 1), приводят к значительно более медленному обучению. Обратите внимание, что для beta_loss <= 0 (или 'itakura-saito'), входная матрица X не может содержать нули.

tolfloat, по умолчанию=1e-4

Контроль ранней остановки на основе нормы разностей в H между 2 шагами. Чтобы отключить раннюю остановку на основе изменений в H, установите tol до 0.0.

max_no_improvementint, по умолчанию=10

Управление ранней остановкой на основе последовательного количества мини-батчей, которые не приводят к улучшению сглаженной функции стоимости. Чтобы отключить обнаружение сходимости на основе функции стоимости, установите max_no_improvement в None.

max_iterint, default=200

Максимальное количество итераций по полному набору данных до таймаута.

alpha_Wfloat, по умолчанию=0.0

Константа, умножающая члены регуляризации W. Установите значение ноль (по умолчанию), чтобы не было регуляризации на W.

alpha_Hfloat или "same", по умолчанию="same"

Константа, умножающая члены регуляризации H. Установите его в ноль, чтобы не иметь регуляризации на H. Если "same" (по умолчанию), принимает то же значение, что и alpha_W.

l1_ratiofloat, по умолчанию=0.0

Параметр смешивания регуляризации, где 0 <= l1_ratio <= 1. Для l1_ratio = 0 штраф является поэлементным L2-штрафом (также известным как норма Фробениуса). Для l1_ratio = 1 это поэлементный L1-штраф. Для 0 < l1_ratio < 1 штраф представляет собой комбинацию L1 и L2.

forget_factorfloat, по умолчанию=0.7

Величина перемасштабирования прошлой информации. Её значение может быть 1 при конечных наборах данных. Рекомендуется выбирать значения < 1 при онлайн-обучении, так как более свежие пакеты будут иметь больший вес, чем прошлые пакеты.

fresh_restartsbool, по умолчанию=False

Полностью ли решать для W на каждом шаге. Свежие перезапуски, вероятно, приведут к лучшему решению за то же число итераций, но это намного медленнее.

fresh_restarts_max_iterint, по умолчанию=30

Максимальное количество итераций при решении для W на каждом шаге. Используется только при выполнении новых перезапусков. Эти итерации могут быть остановлены раньше на основе небольшого изменения W, контролируемого tol.

transform_max_iterint, default=None

Максимальное количество итераций при решении для W во время преобразования. Если None, по умолчанию равно max_iter.

random_stateint, экземпляр RandomState или None, по умолчанию=None

Используется для инициализации (когда init == 'nndsvdar' или 'random'), и в методе координатного спуска. Передайте целое число для воспроизводимых результатов при многократных вызовах функции. См. Глоссарий.

verbosebool, по умолчанию=False

Быть ли подробным.

Атрибуты:
components_ndarray формы (n_components, n_features)

Матрица факторизации, иногда называемая 'словарем'.

n_components_int

Количество компонентов. Оно совпадает с n_components параметр если он был задан. В противном случае он будет таким же, как количество признаков.

reconstruction_err_float

Норма Фробениуса разности матриц или бета-дивергенция между обучающими данными X и восстановленные данные WH из обученной модели.

n_iter_int

Фактическое количество начатых итераций по всему набору данных.

n_steps_int

Количество обработанных мини-пакетов.

n_features_in_int

Количество признаков, замеченных во время fit.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только когда X имеет имена признаков, которые все являются строками.

Смотрите также

NMF

Неотрицательная матричная факторизация.

MiniBatchDictionaryLearning

Находит словарь, который лучше всего можно использовать для представления данных с помощью разреженного кода.

Ссылки

[1]

“Fast local algorithms for large scale nonnegative matrix and tensor factorizations” Cichocki, Andrzej, and P. H. A. N. Anh-Huy. IEICE transactions on fundamentals of electronics, communications and computer sciences 92.3: 708-721, 2009.

Примеры

>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]])
>>> from sklearn.decomposition import MiniBatchNMF
>>> model = MiniBatchNMF(n_components=2, init='random', random_state=0)
>>> W = model.fit_transform(X)
>>> H = model.components_
fit(X, y=None, **params)[источник]#

Изучите модель NMF для данных X.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Вектор обучения, где n_samples это количество образцов и n_features это количество признаков.

yИгнорируется

Не используется, присутствует для согласованности API по соглашению.

**paramskwargs

Параметры (именованные аргументы) и значения, передаваемые экземпляру fit_transform.

Возвращает:
selfobject

Возвращает сам экземпляр.

fit_transform(X, y=None, W=None, H=None)[источник]#

Обучить модель NMF для данных X и вернуть преобразованные данные.

Это более эффективно, чем вызов fit с последующим transform.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Матрица данных для декомпозиции.

yИгнорируется

Не используется, присутствует здесь для согласованности API по соглашению.

Warray-like формы (n_samples, n_components), default=None

Если init='custom', он используется как начальное предположение для решения. Если None, использует метод инициализации, указанный в init.

Harray-like формы (n_components, n_features), по умолчанию=None

Если init='custom', он используется как начальное предположение для решения. Если None, использует метод инициализации, указанный в init.

Возвращает:
Wndarray формы (n_samples, n_components)

Преобразованные данные.

get_feature_names_out(input_features=None)[источник]#

Получить имена выходных признаков для преобразования.

Имена признаков на выходе будут иметь префикс в виде имени класса в нижнем регистре. Например, если преобразователь выводит 3 признака, то имена признаков на выходе: ["class_name0", "class_name1", "class_name2"].

Параметры:
input_featuresarray-like из str или None, по умолчанию=None

Используется только для проверки имен признаков с именами, встреченными в fit.

Возвращает:
feature_names_outndarray из str объектов

Преобразованные имена признаков.

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

inverse_transform(X)[источник]#

Преобразование данных обратно в исходное пространство.

Добавлено в версии 0.18.

Параметры:
X{ndarray, sparse matrix} формы (n_samples, n_components)

Преобразованная матрица данных.

Возвращает:
X_originalndarray формы (n_samples, n_features)

Возвращает матрицу данных исходной формы.

partial_fit(X, y=None, W=None, H=None)[источник]#

Обновить модель, используя данные в X в качестве мини-пакета.

Этот метод предназначен для многократного последовательного вызова на различных частях набора данных для реализации внеядерного или онлайн-обучения.

Это особенно полезно, когда весь набор данных слишком велик, чтобы поместиться в память сразу (см. Стратегии масштабирования вычислений: большие данные).

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Матрица данных для декомпозиции.

yИгнорируется

Не используется, присутствует здесь для согласованности API по соглашению.

Warray-like формы (n_samples, n_components), default=None

Если init='custom', он используется как начальное предположение для решения. Используется только для первого вызова partial_fit.

Harray-like формы (n_components, n_features), по умолчанию=None

Если init='custom', он используется как начальное предположение для решения. Используется только для первого вызова partial_fit.

Возвращает:
self

Возвращает сам экземпляр.

set_output(*, преобразовать=None)[источник]#

Установить контейнер вывода.

См. Введение API set_output для примера использования API.

Параметры:
преобразовать{“default”, “pandas”, “polars”}, по умолчанию=None

Настройка вывода transform и fit_transform.

  • "default": Формат вывода трансформера по умолчанию

  • "pandas": DataFrame вывод

  • "polars": Вывод Polars

  • None: Конфигурация преобразования не изменена

Добавлено в версии 1.4: "polars" опция была добавлена.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_params(**params)[источник]#

Установить параметры этого оценщика.

Метод работает как на простых оценщиках, так и на вложенных объектах (таких как Pipeline). Последние имеют параметры вида __ чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_partial_fit_request(*, H: bool | None | str = '$UNCHANGED$', W: bool | None | str = '$UNCHANGED$') MiniBatchNMF[источник]#

Настроить, следует ли запрашивать передачу метаданных в partial_fit метод.

Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются partial_fit если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в partial_fit.

  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.

Добавлено в версии 1.3.

Параметры:
Hstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для H параметр в partial_fit.

Wstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для W параметр в partial_fit.

Возвращает:
selfobject

Обновленный объект.

преобразовать(X)[источник]#

Преобразовать данные X в соответствии с обученной моделью MiniBatchNMF.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Матрица данных для преобразования моделью.

Возвращает:
Wndarray формы (n_samples, n_components)

Преобразованные данные.