сингулярные значения в расчете svd с использованием numpy

у меня вопрос в след

A = array([
[1,2,3,4,5,6,7,8,9,10],
[11,12,13,14,15,16,17,18,19,20],
[21,22,23,24,25,26,27,28,29,30]])
print(A)
# Singular-value decomposition
U, s, VT = svd(A)

Поскольку выше «s» должен иметь форму (10,), поскольку у нас есть 10 признаков, но вместо (3,) показано. Пример вывода показан ниже. Я запутался. Пожалуйста, объясните, почему мы идем (3,)

(3, 10)
U shape (3, 3)
s shape (3,)
VT shape (10, 10)

Рассмотрим другой пример

A = array([[1, 2], [3, 4], [5, 6]])
print(A.shape)
# Singular-value decomposition
U, s, VT = svd(A)
Here “s” shape is shown as (2,)

Здесь вывод показан ниже

(3, 2)
U shape  (3, 3)
s shape (2,)
VT shape  (2, 2)

Я не понимаю, почему есть разница в форме. Пожалуйста, объясните


person venkysmarty    schedule 30.10.2019    source источник


Ответы (1)


Используя SVD, матрицу A формы (m x n ) разбивается на

  • унитарная матрица U формы (m x m)
  • прямоугольная диагональная матрица Sigma формы (m x n)
  • унитарная матрица V формы (n x n)

Сигма содержит все сингулярные числа на своей главной диагонали. Поскольку матрица формы (m x n) содержит только min(m, n) элементов на своей главной диагонали, существует только min(m, n) сингулярные значения.

person Nils Werner    schedule 30.10.2019