Spec-Zone.ru › scikit-learn

randomized_svd

sklearn.utils.extmath.randomized_svd(M, n_components, *, n_oversamples=10, n_iter='auto', power_iteration_normalizer='auto', transpose='auto', flip_sign=True, random_state=None, svd_lapack_driver='gesdd')[source]

Вычисление усечённого случайного SVD.

Этот метод решает проблему аппроксимации фиксированного ранга, описанную в [1] (проблема (1.5), стр. 5).

Обратитесь к Главный собственный вектор Википедии для примера типичного использования алгоритма итераций степени для ранжирования веб-страниц. Этот алгоритм также известен как часть алгоритма PageRank Google.

Параметры:
M{ndarray, разреженная матрица}

Матрица для разложения.

n_componentsint

Количество сингулярных значений и векторов для извлечения.

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

Дополнительное количество случайных векторов для выборки диапазона M для обеспечения надлежащей обусловленности. Общее количество случайных векторов, используемых для нахождения диапазона M, равно n_components + n_oversamples. Меньшее число может улучшить скорость, но может негативно повлиять на качество аппроксимации сингулярных векторов и сингулярных значений. Пользователи могут пожелать увеличить этот параметр до 2*k - n_components, где k — эффективный ранг, для больших матриц, шумных задач, матриц со медленно убывающими спектрами или для повышения точности. См. [1] (страницы 5, 23 и 26).

n_iterint или ‘auto’, по умолчанию=’auto’

Количество итераций степени. Его можно использовать для работы с очень шумными проблемами. При значении ‘auto’ оно устанавливается в 4, если n_components невелико (< .1 * min(X.shape)), в этом случае n_iter устанавливается в 7. Это повышает точность при небольшом количестве компонентов. Обратите внимание, что, как правило, пользователи должны сначала увеличить n_oversamples, а затем n_iter, так как принцип случайного метода заключается в избегании использования более дорогостоящих этапов итераций степени. Когда n_components равно или больше эффективного ранга матрицы, и спектр не демонстрирует медленное затухание, n_iter=0 или 1 должны работать нормально теоретически (см. [1] страница 9).

Изменено в версии 0.18.

power_iteration_normalizer{‘auto’, ‘QR’, ‘LU’, ‘none’}, по умолчанию=’auto’

Нормализуются ли итерации степени с помощью пошаговой QR-факторизации (самый медленный, но наиболее точный), ‘none’ (самый быстрый, но численно нестабильный, когда n_iter велико, например, обычно 5 или больше), или LU-факторизации (численно стабильно, но может немного потерять в точности). Режим ‘auto’ не применяет нормализацию, если n_iter <= 2, и переключается на LU в противном случае.

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

transposebool или ‘auto’, по умолчанию=’auto’

Нужно ли применять алгоритм к M.T вместо M. Результат должен быть приблизительно одинаковым. Режим ‘auto’ вызовет транспонирование, если M.shape[1] > M.shape[0], поскольку это реализация случайного SVD, как правило, немного быстрее в этом случае.

Изменено в версии 0.18.

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

Выход сингулярного разложения уникален только до перестановки знаков сингулярных векторов. Если flip_sign установлено в True, неоднозначность знака разрешается путем присвоения наибольших нагрузок для каждого компонента в левых сингулярных векторах положительного значения.

random_stateint, RandomState instance или None, по умолчанию=’warn’

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

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

svd_lapack_driver{“gesdd”, “gesvd”}, по умолчанию=”gesdd”

Использовать ли более эффективный подход «разделяй и властвуй» ("gesdd") или более общий прямоугольный подход ("gesvd") для вычисления SVD матрицы B, которая является проекцией M в подпространство с низкой размерностью, как описано в [1].

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

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

Унитарная матрица, содержащая левые сингулярные векторы со знаками, изменёнными в качестве столбцов.

sndarray формы (n_components,)

Сингулярные значения, отсортированные в порядке убывания.

vhndarray формы (n_components, n_features)

Унитарная матрица, содержащая правые сингулярные векторы со знаками, изменёнными в качестве строк.

Примечания

Этот алгоритм находит (обычно очень хорошее) приближенное усечённое сингулярное разложение с использованием случайности для ускорения вычислений. Он особенно быстрый для больших матриц, на которых требуется извлечь только небольшое количество компонентов. Для дальнейшего ускорения n_iter можно установить <=2 (за счёт потери точности). Для повышения точности рекомендуется увеличить n_oversamples, до 2*k-n_components, где k — эффективный ранг. Обычно n_components выбирается больше, чем k, поэтому увеличение n_oversamples до n_components должно быть достаточно.

Ссылки

[1] (1,2,3,4)

“Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions” Halko, et al. (2009)

[2]

Случайный алгоритм для разложения матриц Per-Gunnar Martinsson, Владимир Рохлин и Марк Тайгерт

[3]

Реализация случайного алгоритма для анализа главных компонент A. Szlam и др. 2014

Примеры

>>> import numpy as np
>>> from sklearn.utils.extmath import randomized_svd
>>> a = np.array([[1, 2, 3, 5],
...               [3, 4, 5, 6],
...               [7, 8, 9, 10]])
>>> U, s, Vh = randomized_svd(a, n_components=2, random_state=0)
>>> U.shape, s.shape, Vh.shape
((3, 2), (2,), (2, 4))

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.utils.extmath.randomized_svd.html

Spec-Zone.ru

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