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)
-
Преобразованные данные.
Примеры из галереи
© 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