Автор оригинала: Pankaj Kumar.
Особое значение разложения (SVD) в Python
Особое значение разложения ценностей (SVD) является одним из широко используемых методов уменьшения размеров Отказ SVD разлагает матрицу на три других матрица.
Если мы увидим матрицы как то, что вызывает линейное преобразование в пространстве, то с разложением сингулярного значения, мы разлагаемся на одном преобразовании в трех движениях.
В этой статье мы увидим разные методы для реализации SVD.
Особенности декомпозиции сингулярного значения
SVD факторы одной матрицы в матрицу U, D и V * соответственно.
где,
- U и V * являются ортогональными матрицами.
- D – диагональная матрица сингулярных значений.
SVD также можно рассматривать как разложение одного комплексного преобразования в 3 более простых преобразованиях (вращение, масштабирование и вращение).
С точки зрения преобразований
- Матрицы U и V * вызывает вращение
- Диагональная матрица D вызывает масштабирование.
Таким образом, в основном это позволяет нам выражать нашу оригинальную матрицу в качестве линейной комбинации матриц низкого ранга. Только первые несколько единственных ценностей большие.
Условия, кроме первых немногих, могут быть проигнорированы, не теряя много информации, и поэтому SVD называется техникой снижения размерности.
Реализация SVD в Python
Начнем с реализации SVD в Python. Мы будем работать с несколькими библиотеками, чтобы продемонстрировать, как будет продолжаться реализация.
1. Использование Numpy
Python Numpy иметь возможности для реализации большинства Линейная алгебра Методы предлагают легкую реализацию SVD.
Мы будем использовать numpy.linalg
Модуль, который имеет SVD
класс для выполнения SVD на матрице.
import numpy as np #Creating a matrix A A = np.array([[3,4,3],[1,2,3],[4,2,1]]) #Performing SVD U, D, VT = np.linalg.svd(A) #Checking if we can remake the original matrix using U,D,VT A_remake = (U @ np.diag(D) @ VT) print(A_remake)
D представляет собой 1D массив вместо 2D массива. D – это диагональная матрица с большинством значений заканчивается нулю, такая матрица называется редкая матрица Отказ Чтобы сохранить место, он возвращается как 1D массив.
2. Использование Scikit-Learn
Мы будем использовать Trunchedsvd
класс от Sklearn.DeComposition
модуль.
В Trunchedsvd
Нам нужно указать количество компонентов, которые нам нужны на нашем выходе, поэтому вместо расчета целых разложений мы просто рассчитаем необходимые единственные значения и обрежьте остальные.
#Importing required modules import numpy as np from sklearn.decomposition import TruncatedSVD #Creating array A = np.array([[3,4,3],[1,2,3],[4,2,1]]) #Fitting the SVD class trun_svd = TruncatedSVD(n_components = 2) A_transformed = svd.fit_transform(A) #Printing the transformed matrix print("Transformed Matrix:") print(A_transf)
Заключение
В этой статье мы увидели, как мы можем реализовать сингулярное разложение ценностей (SVD) с использованием библиотек, таких как Numpy и Scikit – учиться.
Счастливое обучение!