Вопрос или проблема
Я изучаю теорию и реализацию алгоритма главных компонент (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. Если у вас есть дополнительные вопросы или требуется больше деталей, пожалуйста, дайте знать!