Реализация алгоритма PCA для восстановления данных (изображений)

Вопрос или проблема

Я изучаю теорию и реализацию алгоритма главных компонент (PCA) в книге «Математика для машинного обучения» и заканчиваю официальный учебный ноутбук по адресу https://colab.research.google.com/github/mml-book/mml-book.github.io/blob/master/tutorials/tutorial_pca.ipynb.

Принимая перспективу энкодера-декодера, как показывает рисунок иллюстрация энкодер-декодер, алгоритм можно сформулировать как линейный, убыточный автокодер. В частности, центрированная матрица данных $X\in \mathbb{R}^{D\times N}$, где $N, D$ — это количество образцов и размерность образца соответственно. Часть энкодера:
$$
Z=B^TX\in \mathbb{R}^{M\times N}
$$

где $B\in \mathbb{R}^{D\times M}$ строится из $M$ собственных векторов как столбцов, соответствующих $M$ наибольшим собственным значениям матрицы ковариации $S=\frac{1}{N}XX^T$. А восстановленные данные декодером:
$$
\hat{X}=BZ=BB^TX\in \mathbb{R}^{D \times N}
$$

Таким образом, матрица проекции $P=BB^T$.
Но в официальной реализации/решении учебника по адресу https://colab.research.google.com/github/mml-book/mml-book.github.io/blob/master/tutorials/tutorial_pca.solution.ipynb матрица проекции рассчитывается следующим образом:

projection_matrix = (B @ np.linalg.inv(B.T @ B) @ B.T)

а матрица восстановления как:

reconst = (projection_matrix @ X.T)

И это соответствует вычислению матрицы проекции следующим образом:
$$
P=B(B^TB)^{-1}B^T
$$

вместо $BB^T$.
Единственное различие в реализации здесь заключается в том, что матрица данных транспонируется в отличие от формулировки в книге, так что $X\in \mathbb{R}^{N\times D}$.
Я сбит с толку тем, как учебник вычисляет матрицу проекции. Может кто-нибудь объяснить это?

Так как B имеет размерность D*M, то Bt (B транспонированное) будет иметь размерность M * D, P будет иметь размерность D * D, умноженная на X, которая имеет размерность D * N, X¨ будет иметь размерность D * N, такую же как X.
Bt @ B — это матрица ковариации. Честно говоря, я не знаю, почему они вставили это посередине и изменили формулы, но формулы действительны.

Ответ или решение

Реализация алгоритма PCA для реконструкции данных (изображений)

Алгоритм главных компонент (PCA) – это мощный инструмент для снижения размерности данных и их реконструкции. В этом ответе я объясню, как можно реализовать PCA, принимая во внимание вашу проблему с различиями в формулировках из книги и реализации в учебных материалах.

1. Основные понятия PCA

PCA представляет собой линейный метод, который проецирует высокоразмерные данные в пространство меньшей размерности, сохраняя при этом как можно больше дисперсии. Этот процесс можно представить в виде кодировщика-декодировщика.

  • Кодировщик: $Z = B^T X$, где $B$ – матрица, состоящая из $M$ собственных векторов, соответствующих $M$ наибольшим собственным значениям матрицы ковариаций $S = \frac{1}{N} XX^T$.
  • Декодировщик (реконструкция): $\hat{X} = BZ = BB^T X$, где $P = BB^T$ – матрица проекции.

2. Конкретная реализация

В рассматриваемом вами источнике для вычисления матрицы проекции используется другая форма:

$$
P = B (B^T B)^{-1} B^T
$$

которая эквивалентна формуле $P = BB^T$ при определенных условиях, касающихся размеров матриц.

3. Объяснение разницы в подходах

Основное отличие между вашими формулами и реализацией в учебном материале связано с изменением размерностей входных данных. В вашей интерпретации данные представлены в виде:

$$
X \in \mathbb{R}^{D \times N}
$$

где $D$ – это размерность признаков, а $N$ – количество образцов. В реализации из учебного материала данные интерпретируются как:

$$
X \in \mathbb{R}^{N \times D}
$$

Из-за этого необходимость обращения с матрицей $B$ и её транспонированием приводит к различиям в вычислениях.

4. Размерности матриц

Теперь давайте проанализируем размерности:

  • $B$ имеет размерность $D \times M$.
  • $B^T$ будет $M \times D$.
  • Тогда $B^T B$ имеет размерность $M \times M$ и является невыраженной матрицей (если $M \leq D$).
  • Выражение $(B^T B)^{-1}$ также имеет размерность $M \times M$.

Таким образом, проекция может быть рассчитана как:

$$
P = B (B^T B)^{-1} B^T
$$

которое затем может применяться к $X^T$. Это придаёт дополнительную стабильность вычислениям и обеспечит корректность проекции, даже если размерности данных варьируются.

5. Реконструкция данных

После вычисления матрицы проекции, реконструкция данных происходит следующим образом:

$$
\hat{X} = P X = (B (B^T B)^{-1} B^T) X^T
$$

Это позволяет вам получить пересчитанные данные, которые могут быть использованы для дальнейшего анализа или визуализации.

Заключение

Таким образом, реализация, показанная в учебных материалах, является корректной и разумной, учитывая, что данные представлены в виде матрицы размера $N \times D$. Понимание различий в подходах к размерностям и типам матриц является ключевым моментом для успешного применения алгоритма PCA. Если у вас есть дополнительные вопросы или требуется больше деталей, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...