dict_learning_online#

sklearn.decomposition.dict_learning_online(X, n_components=2, *, alpha=1, max_iter=100, return_code=True, dict_init=None, callback=None, batch_size=256, verbose=False, перемешивание=True, n_jobs=None, метод='lars', random_state=None, positive_dict=False, positive_code=False, method_max_iter=1000, tol=0.001, max_no_improvement=10)[источник]#

Решить задачу матричной факторизации словарного обучения онлайн.

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

(U^*, V^*) = argmin 0.5 || X - U V ||_Fro^2 + alpha * || U ||_1,1
             (U,V)
             with || V_k ||_2 = 1 for all  0 <= k < n_components

где V — словарь, а U — разреженный код. ||.||_Fro обозначает норму Фробениуса, а ||.||_1,1 — поэлементную матричную норму, которая является суммой абсолютных значений всех элементов матрицы. Это достигается путём многократного итерирования по мини-батчам путём срезов входных данных.

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

Параметры:
Xarray-like формы (n_samples, n_features)

Матрица данных.

n_componentsint или None, по умолчанию=2

Количество словарных атомов для извлечения. Если None, то n_components установлено в n_features.

alphafloat, по умолчанию=1

Параметр управления разреженностью.

max_iterint, по умолчанию=100

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

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

return_codebool, по умолчанию=True

Возвращать ли также код U или только словарь V.

dict_initndarray формы (n_components, n_features), default=None

Начальные значения словаря для сценариев тёплого перезапуска. Если None, начальные значения для словаря создаются с помощью SVD-разложения данных через randomized_svd.

callbackвызываемый объект, по умолчанию=None

Вызываемый объект, который вызывается в конце каждой итерации.

batch_sizeint, по умолчанию=256

Количество образцов для взятия в каждой партии.

Изменено в версии 1.3: Значение по умолчанию для batch_size изменено с 3 на 256 в версии 1.3.

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

Для управления подробностью процедуры.

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

Перемешивать ли данные перед разделением на пакеты.

n_jobsint, default=None

Количество параллельных задач для выполнения. None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

метод{‘lars’, ‘cd’}, default=’lars’
  • 'lars': использует метод наименьшего угла регрессии для решения задачи лассо (linear_model.lars_path);

  • 'cd': использует метод координатного спуска для вычисления решения Lasso (linear_model.Lasso). Lars будет быстрее, если оцененные компоненты разрежены.

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

Используется для инициализации словаря, когда dict_init не указан, случайное перемешивание данных, когда shuffle установлено в True, и обновление словаря. Передайте int для воспроизводимых результатов при нескольких вызовах функции. См. Глоссарий.

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

Следует ли обеспечивать положительность при поиске словаря.

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

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

Следует ли обеспечивать положительность при нахождении кода.

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

method_max_iterint, по умолчанию=1000

Максимальное количество итераций для выполнения при решении задачи лассо.

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

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

Управление ранней остановкой на основе нормы различий в словаре между 2 шагами.

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

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

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

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

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

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

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

Разреженный код (возвращается только если return_code=True).

словарьndarray формы (n_components, n_features),

Решения задачи обучения словаря.

n_iterint

Количество выполненных итераций. Возвращается только если return_n_iter установлено в True.

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

dict_learning

Решить задачу матричной факторизации обучения словаря.

DictionaryLearning

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

MiniBatchDictionaryLearning

Более быстрая, но менее точная версия алгоритма обучения словарю.

SparsePCA

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

MiniBatchSparsePCA

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

Примеры

>>> import numpy as np
>>> from sklearn.datasets import make_sparse_coded_signal
>>> from sklearn.decomposition import dict_learning_online
>>> X, _, _ = make_sparse_coded_signal(
...     n_samples=30, n_components=15, n_features=20, n_nonzero_coefs=10,
...     random_state=42,
... )
>>> U, V = dict_learning_online(
...     X, n_components=15, alpha=0.2, max_iter=20, batch_size=3, random_state=42
... )

Мы можем проверить уровень разреженности U:

>>> np.mean(U == 0)
np.float64(0.53)

Мы можем сравнить среднюю квадратичную евклидову норму ошибки реконструкции разреженно закодированного сигнала относительно квадратичной евклидовой нормы исходного сигнала:

>>> X_hat = U @ V
>>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1))
np.float64(0.053)