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)