NMF#

класс sklearn.decomposition.NMF(n_components='auto', *, init=None, solver='cd', beta_loss='frobenius', tol=0.0001, max_iter=200, random_state=None, alpha_W=0.0, alpha_H='same', l1_ratio=0.0, verbose=0, перемешивание=False)[источник]#

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

Найти две неотрицательные матрицы, т.е. матрицы со всеми неотрицательными элементами, (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}\) может представлять норму Фробениуса или другую поддерживаемую бета-дивергенцию. Выбор между вариантами контролируется параметром beta_loss параметр.

Регуляризационные члены масштабируются на n_features для W и с помощью n_samples для H чтобы сбалансировать их влияние друг относительно друга и относительно члена соответствия данным как можно более независимо от размера n_samples обучающей выборки.

Целевая функция минимизируется с помощью чередующейся минимизации 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': Инициализация неотрицательного двойного сингулярного разложения (NNDSVD) (лучше для разреженности)

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

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

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

Изменено в версии 1.1: Когда init=None и n_components меньше n_samples и n_features по умолчанию равно nndsvda вместо nndsvd.

solver{'cd', 'mu'}, по умолчанию='cd'

Численный решатель для использования:

  • 'cd' — это решатель координатного спуска.

  • ‘mu’ — решатель мультипликативного обновления.

Добавлено в версии 0.17: Решатель Coordinate Descent.

Добавлено в версии 0.19: решатель Multiplicative Update.

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

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

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

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

Допуск условия остановки.

max_iterint, default=200

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

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

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

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

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

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

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

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

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

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

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

Добавлено в версии 0.17: Параметр регуляризации l1_ratio используется в решателе Coordinate Descent.

verboseint, по умолчанию=0

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

перемешиваниеbool, по умолчанию=False

Если истинно, рандомизировать порядок координат в решателе CD.

Добавлено в версии 0.17: перемешивание параметр, используемый в решателе Coordinate Descent.

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

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

n_components_int

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

reconstruction_err_float

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

n_iter_int

Фактическое количество итераций.

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

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

DictionaryLearning

Найти словарь, который разреженно кодирует данные.

MiniBatchSparsePCA

Мини-пакетный разреженный анализ главных компонент.

PCA

Метод главных компонент.

SparseCoder

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

SparsePCA

Разреженный анализ главных компонент.

TruncatedSVD

Уменьшение размерности с использованием усеченного SVD.

Ссылки

[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 NMF
>>> model = NMF(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)

Вектор обучения, где 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)

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

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

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

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

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

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

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

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

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