Разложение по сингулярным значениям имеет множество применений при обработке изображений, таких как реконструкция изображений, разделение изображений, классификация и обнаружение сообществ графов. Разложение по сингулярным числам берет матрицу A размером m × n и разлагает ее на A = UΣV’. Σ — диагональная матрица, содержащая сингулярные значения A. U и V — ортогональные матрицы, где U — матрица размера m × m, а V — матрица размера n × n. Столбцы U и столбцы V являются левыми сингулярными векторами и правыми сингулярными векторами соответственно. Путем вычисления псевдообратного A⁺ = VΣ⁺U' разложение по сингулярным числам также можно использовать для решения задачи оптимизации методом наименьших квадратов, x = argminₓ ||b — Ax||₂ = A⁺b.

Восстановление матрицы низкого ранга

Ранг матрицы A размером m × n – это количество линейно независимых столбцов или строк в матрице. Дело в том, что для матрицы первого ранга существует много избыточности. Для матрицы низкого ранга с пропущенными значениями мы можем воспользоваться этой избыточностью, чтобы заполнить пропущенные элементы. В следующем примере мы создаем матрицу A_org только с рангом 1. Затем создаем несколько недостающих элементов и заменяем значения на 0.

Поскольку мы знаем, что ранг исходной матрицы равен 1, мы можем использовать усеченный SVD для перестроения матрицы. По мере увеличения времени итерации и уменьшения допустимой ошибки процесс может постепенно аппроксимировать отсутствующие значения.

Метод может применяться для реконструкции изображений низкого ранга.

По мере увеличения числа итераций и снижения допустимой ошибки реконструкция выполняется лучше.

Классификация

Предположим, нам даны помеченные обучающие данные из d классов. Пусть yᵢʲ обозначает i-й вектор обучающей выборки, принадлежащий j-му классу. Мы предполагаем, что yᵢʲ является n-мерным вектором. Для каждого класса j существует N обучающих выборок размерности n, поэтому форма обучающих данных будет n × N × d. Мы можем найти матрицу n × k U с ортогональными столбцами для каждого класса, а x - это k-мерный вектор, который представляет координаты yᵢʲ относительно базиса, заданного U. Чтобы классифицировать выборки, мы можем использовать проекционную матрицу P = UU ', которая представляет собой проекционную матрицу ранга k размера × n для промежутка первых k базисных векторов U. Для каждого класса существует одна проекционная матрица размера n × n P. Это называется классификацией ближайшего подпространства.

В следующем примере мы применяем метод классификации ближайшего подпространства для распознавания рукописных цифровых данных. Для обучающих данных имеется 10 цифр и 800 выборок с 784 измерениями для каждого класса. Для тестовых данных имеется 2000 образцов с 784 измерениями для каждого и соответствующими метками.

Через набор обучающих данных можно изучить ближайшие подпространства. Функция «learn_nearest_ss» изучает векторы U , которые представляют собой матрицу размера n × ktrain × d.

Построив проекционную матрицу P = UU’, тестовые данные можно спроецировать на подпространство для каждого класса. Затем мы относим выборку к классу с минимальной ошибкой. К процессу обращается функция classify_nearest_ss. Сравнив результат с test_labels, мы можем получить вероятность правильной классификации.

По мере увеличения размерности U увеличивается вероятность правильной классификации. Фактически количество сингулярных значений может быть определено рангом подпространства и получено спектром сингулярных значений обучающих данных.

Разложение по сингулярным числам имеет множество применений. Вот несколько примеров аппроксимации низкого ранга. Поскольку матрицу Σ можно рассматривать как матрицу масштабирования, а U, V можно рассматривать как матрицы вращения, геометрическое свойство интуитивно понятно. Столбцы U, V являются базисными векторами, где U являются базисными векторами, охватывающими сингулярные слева векторы каждого сингулярного значения A, а V являются базисными векторами, охватывающими сингулярные справа векторы каждого сингулярного значения A.