Spec-Zone.ru › scikit-learn

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’

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

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

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

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

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

  • None: ‘nndsvda’, если n_components <= min(n_samples, n_features), иначе случайная инициализация.
  • 'random': случайные неотрицательные матрицы, масштабированные по формуле: sqrt(X.mean() / n_components)
  • 'nndsvd': инициализация методом неотрицательного двойного сингулярного разложения (NNDSVD; лучше подходит для разреженных данных).
  • 'nndsvda': NNDSVD с заменой нулей средним значением X (лучше, если разреженность не требуется).
  • 'nndsvdar' NNDSVD с заменой нулей небольшими случайными значениями (обычно быстрее, но менее точная альтернатива NNDSVDa, если разреженность не требуется).
  • 'custom': использовать пользовательские матрицы W и H, которые необходимо задать обе.
batch_sizeint, по умолчанию=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 между двумя шагами. Чтобы отключить досрочную остановку на основе изменений в H, задайте tol равным 0.0.

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

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

max_iterint, по умолчанию=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, по умолчанию=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

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

feature_names_in_ndarray формы (n_features_in_,)

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

См. также

NMF

Факторизация неотрицательных матриц.

MiniBatchDictionaryLearning

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

Литература

[1]

«Быстрые локальные алгоритмы для крупномасштабной факторизации неотрицательных матриц и тензоров» Cichocki, Andrzej, and P. H. A. N. Anh-Huy. IEICE transactions on fundamentals of electronics, communications and computer sciences 92.3: 708-721, 2009.

[2]

«Алгоритмы факторизации неотрицательных матриц с бета-дивергенцией» Fevotte, C., & Idier, J. (2011). Neural Computation, 23(9).

[3]

«Онлайн-алгоритмы факторизации неотрицательных матриц с дивергенцией Итакуры — Сайто» Lefevre, A., Bach, F., Fevotte, C. (2011). WASPA.

Примеры

>>> 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), по умолчанию=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

Названия преобразованных признаков.

get_metadata_routing()[исходный код]

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

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

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

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_params(deep=True)[исходный код]

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

Параметры:
deepbool, по умолчанию=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), по умолчанию=None

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

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

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

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

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

set_output(*, transform=None)[исходный код]

Задать контейнер для вывода.

Дополнительные сведения см. в руководстве пользователя, а пример использования API — в разделе Знакомство с API set_output.

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

Настроить вывод методов transform и fit_transform.

  • "default": формат вывода преобразователя по умолчанию
  • "pandas": вывод в формате DataFrame
  • "polars": вывод в формате Polars
  • None: настройки преобразования не изменяются

Добавлено в версии 1.4: Добавлен вариант "polars".

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

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

set_params(**params)[исходный код]

Задать параметры этого оценщика.

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

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

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

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

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

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

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

transform(X)[исходный код]

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

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

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

Возвращает:
Wndarray of shape (n_samples, n_components)

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

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

Извлечение тем с помощью неотрицательной матричной факторизации и латентного размещения Дирихле

Основные новшества scikit-learn 1.1

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.decomposition.MiniBatchNMF.html

Spec-Zone.ru

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