Немного алгебры, чтобы понять, почему работает PCA 🔧

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

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

Хотя не обязательно понимать математику, чтобы использовать PCA из коробки, я твердо верю, что глубокое понимание алгоритмов сделает вас лучшим пользователем, способным понять его производительность и недостатки в любых конкретных ситуациях. Кроме того, математические концепции в ML взаимосвязаны, и понимание PCA может помочь вам разобраться с другими понятиями машинного обучения, использующими алгебру (для любопытных посмотрите рисунок 3 в разделе постскриптума в конце сообщения).

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

Перво-наперво, давайте повторим рецепт PCA для быстрого обновления различных задействованных шагов:

  1. Нормализуйте свои данные, назовем нормализованный набор данных X. X имеет N строк (примеры) и d столбцов (размеры), это матрица (N, d).
  2. Вычислить ковариационную матрицу Σ для X
    Σ - это матрица (d, d)
  3. Вычислить собственные векторы и собственные значения Σ
  4. Отсортируйте k собственных векторов с наибольшими собственными значениями (это k главных компонентов) и сделайте W, который представляет собой (d, k) матрицу
  5. Спроецируйте исходный набор данных X в пространство нижнего измерения, состоящее из k собственных векторов, отсортированных на шаге 4, что составляет W
    X '= XW …… X ' готов👨‍🍳! X ’ теперь представляет собой (N, k) матрицу

Учитывая, что k ‹< D, мы свободны от проклятия размерности, которое ранее обрушивалось на нас 🗡️ 🐉

Так круто! Но как это возможно, что если взять ковариационную матрицу и каким-то образом смешать ее с декомпозицией по собственным векторам, то наш набор данных окажется в пространстве более низкой размерности !?

Чтобы ответить на этот вопрос, пора запачкать руки и посмотреть, что творится под капотом двигателя PCA! 🛠️

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

Что содержит больше всего информации в наборе данных?

Фундаментальная связь, лежащая в основе PCA, заключается в том, что дисперсия захватывает большую часть информации набора данных. Чем больше дисперсия (разброс), тем больше информации. Таким образом, PCA стремится найти пространство более низкой размерности, которое сохраняет максимальную дисперсию.

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

Большой! Но теперь, когда мы поняли, что максимальная дисперсия является ключом к сохранению большей части информации нашего исходного набора данных в пространстве более низкого измерения, можно спросить:

Как найти пространство меньшего измерения, в котором сохраняется максимальная дисперсия?

Чтобы добиться этого, мы можем просто начать с поиска вектора u, который фиксирует наибольшую дисперсию, когда на него проецируется наш набор данных.

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

Теперь мы можем спроецировать наш исходный набор данных X на 1 ось, вектор u, который сохраняет максимум исходной дисперсии. Но, может быть, мы захотим найти еще одну ось или еще k ..?

Неважно! Мы просто повторяем тот же процесс, который показан на рисунке 1. выше k раз, с новым ограничением, добавляемым каждый раз: предыдущие наибольшие (относительно связанных с ними собственных значений) собственные векторы должны быть ортогональны по отношению к новый кандидат.

Вот и мы, мы доказали, что собственные векторы ковариационной матрицы указывают в направлениях максимальной дисперсии, а связанные с ними собственные значения равны дисперсии в этих направлениях, как показано на рисунке 2. Это показано на рисунке 2.

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

Et voilà! 👌

Ресурсы:

PS: при оптимизации нейронной сети полезно вычислить матрицу Гессе функции потерь, чтобы помочь шагам градиентного спуска адаптировать скорость обучения в зависимости от направления. . Короче говоря, гессиан показывает, насколько быстро градиент функции потерь изменяется в любом направлении.

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