Все, что нам нужно, это набор интеллектуальных базисных векторов.

Возможно, вы уже знаете, что на самом деле делает PCA абстрактно, и также использовали это в своем проекте. но вы можете не знать, как это уменьшает размеры или интуицию, стоящую за этим. Тогда эта статья для вас.

Проще говоря, PCA уменьшает размерность данных.

Предположим, у нас есть матрица данных X размерности M * N

где M = количество образцов, N = количество признаков (размеров)

Поэтому очевидно, что для уменьшения размера нам нужно что-то сделать с N, потому что мы не хотим уменьшать число выборок.

Чтобы играть с N, мы должны четко понимать, что оно представляет. Один из способов интерпретировать N — это количество базисных векторов, используемых в одном примере. Вам может быть интересно, WT** этот базисный вектор!!

Давайте разберемся на примере. Здесь пример имеет два измерения.

здесь правая сторона думает как один пример, тогда левосторонние векторы являются базисными векторами

{ [а, с] ; [b,d]} здесь набор базисных векторов. а x и y - вес.

{ [1,0] ; [0,1] } — стандартный набор базисных векторов.

В стандартном наборе базисных векторов веса (x, y) сами становятся данными.

Так. Может ли любой набор векторов быть набором базисных векторов??

Ответ - нет.

Есть некоторые правила, которые можно квалифицировать как набор базисных векторов.

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

Чтобы сделать один пример, у нас есть базисные векторы и веса (которые представляют, какой вклад вносит каждый базисный вектор в каждый пример).

Примечание: но обычно мы не хранили базисные векторы. из-за стандартного набора базисных векторов.

Ключевые моменты:

1 › Набор базовых векторов одинаков для всех примеров в одном наборе данных.

2 › базисные векторы являются ортогональными (линейно независимыми и под углом 90 градусов друг к другу), а также нормальными.

3 › мы можем представить каждый пример набора данных в виде линейных комбинаций его базисных векторов.

Теперь вернемся к исходному вопросу: как изменить это второе измерение N.

Здесь мы собираемся изменить базисные векторы. Что это значит🤔?

Давайте разберемся с этим на небольшом примере.

Итак, слева у нас стандартные базисные векторы. { [1,0] ; [0,1] }

В то время как красный показывает здесь новые базисные векторы. мы можем видеть, что в направлении PCA-2 дисперсия направления очень низкая, в то время как в направлении PCA-1 дисперсия велика. Итак, если мы отбросим PCA2. тогда мы не потеряем много информации. После отказа от PCA-2 мы сократили наши двухмерные данные до одномерных.

После этого преобразования у нас будет новое направление (набор базисных векторов) и новые веса (для каждого примера, какой базисный вектор будет вносить вклад, сколько x, y в приведенном выше примере). у нас нет весов напрямую, но мы можем легко вычислить их путем умножения одной матрицы. Так что на данный момент, думаю, у нас есть это.

Пример 1 2D -> 1D

Итак, здесь, на левом рисунке, мы видим данные с новыми базисными векторами. здесь мы сохраняем единственную основу с большой величиной (большая дисперсия). И регенерируйте данные из этого измерения. Регенерированные данные нанесены на график (справа) темно-синим цветом. Итак, мы видим, что потеряли информацию из второго базисного вектора.

Это может быть недостатком, но в очень многомерных данных последние несколько базисных векторов (с низкой дисперсией) больше похожи на шум. Они не сильно помогли однозначно отличить выборку от других из-за низкой дисперсии. Теперь давайте посмотрим на более наглядный пример.

Пример 2 PCA для набора данных о лицах

Итак, здесь слева отображаются исходные изображения. В то время как правые изображения показывают новый набор базисных векторов (топ-20). у вас может возникнуть вопрос, почему новый базисный вектор имеет одинаковый размер. Просто вспомните первый рисунок, на котором у нас было два базисных вектора одинакового размера. Здесь у нас также есть N (размер изображения w * h) базисных векторов, но, как обсуждалось ранее, top-k будет вносить большой вклад, потому что они имеют высокую дисперсию. На правом рисунке показаны топ-20 собственных векторов.

Теперь давайте восстановим исходные изображения с помощью линейных комбинаций топ-k собственных векторов.

Итак, здесь, на левом рисунке, для реконструкции использовались только первые 5 собственных векторов. Так что этого недостаточно, чтобы четко регенерировать лица. В то время как топ-15 (правый рисунок) реконструированных лиц очень похож на исходный пример. Итак, здесь, чтобы сгенерировать одно лицо, у нас есть только 15 основных векторов и вес (величина), связанные с каждым вектором. Для каждого лица теперь нам нужно хранить только 15 значений вместо целого лица. Можно также играть с этими собственными векторами, чтобы генерировать новые данные или дополнять набор данных.

Изменение параметров:

(Исходные данные) M*N ==› ( M*k (веса)+ k*N (собственные векторы))

Пример: (место мы сэкономили)

M = 10,000 , N = 100 , K = 30

10,00,000 ==>3,00,000 + 3000 = 3,03,000

Таким образом, это (1/3) исходных данных без потери большой информации.

Но как найти эти собственные векторы/новые базисные векторы (математическая часть):

Существуют стандартные математические шаги для нахождения собственных векторов/базисных векторов.

  1. Возьмите матрицу X, транспонируйте ее и умножьте транспонированную матрицу на X. В результате получится XᵀX. Полученная матрица является ковариационной матрицей X.
  2. Вычислите собственные векторы и соответствующие им собственные значения XᵀX. (Если вы не знаете, что такое собственные векторы, но хотите узнать, посмотрите 3blue1Brown-Linear Algebra/ лекции Гилберта Стрэнга на YouTube).
  3. Возьмите собственные значения λ₁, λ₂, …, λp и отсортируйте их от большего к меньшему. При этом отсортируйте собственные векторы соответственно. Итак, теперь мы можем выбрать top-k из этого списка.

Источники:



Полезные ссылки:

Линейная алгебра ( 3blue1brown ): https://www.youtube.com/watch?v=kjBOesZCoqc&list=PL0-GT3co4r2y2YErbmuJw2L5tW4Ew2O5B

Линейная алгебра (Гилберт Стрэнг): https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8

Статистический квест: https://www.youtube.com/results?search_query=pca+statquest

Визуализация: http://setosa.io/ev/principal-component-analysis/

Учебник: https://towardsdatascience.com/a-one-stop-shop-for-principal-component-analysis-5582fb7e0a9c