Понимание преобразования между функциями и основными компонентами

Вступление

Понимание математики, лежащей в основе анализа главных компонентов (PCA), без прочной основы линейной алгебры является сложной задачей. Когда я преподавал науку о данных на Генеральной Ассамблее в Сан-Франциско, я обнаружил, что помощь студентам в визуализации трансформации между функциями и основными компонентами значительно улучшила их понимание. PCA - это метод уменьшения размерности, который состоит из четырех основных частей: ковариация функций, собственное разложение и т.д. преобразование основных компонентов и выбор компонентов с точки зрения объясненной дисперсии. Цель этого блога - поделиться наглядной демонстрацией, помогающей учащимся понять два последних шага.

Краткий обзор уменьшения размерности

Проклятие размерности

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

«По мере роста количества функций или размеров объем данных, которые нам нужно точно обобщить, растет в геометрической прогрессии».

- Чарльз Исбелл, профессор школы интерактивных вычислений Технологического института Джорджии.

Проклятие размерности - сообщение KDNuggets, автором которого является Прасад Пор.

Есть два варианта уменьшения размерности:

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

PCA

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

  1. Мы определяем взаимосвязь между функциями с помощью матрицы ковариации.
  2. Благодаря линейному преобразованию или собственному разложению матрицы ковариации мы получаем собственные векторы и собственные значения.
  3. Затем мы преобразуем наши данные с помощью собственных векторов в главные компоненты.
  4. Наконец, мы количественно оцениваем важность этих отношений с помощью собственных значений и сохраняем важные основные компоненты .

Опять же, мы можем найти полное объяснение всех терминов, упомянутых в Википедии. Я нашел следующие сообщения более интуитивно понятными и полезными.

3blue1brown опубликовал отличную визуализацию для шага 2 (на самом деле, я очень рекомендую весь их мультсериал по линейной алгебре). В следующем разделе рассматривается визуализация для шагов 3 и 4.

Упрощенная визуальная демонстрация

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

  1. Возможности: обозначены синим горизонтом вверху. Обратите внимание, что x1, x2, x3 и x4 представляют четыре характеристики одной радужной оболочки (то есть длину чашелистика, ширину чашелистика, длину лепестка и ширину лепестка), а не четыре разных радужки.
  2. Собственные векторы: представлены зеленой матрицей.
  3. Основные компоненты: представлены оранжевой вертикальной полосой слева.

Рисунок 3 включает значения для каждой части. Один из лучших способов изучить и понять математический метод - убедиться, что числа складываются. Отсюда мы сделаем несколько простых вычислений.

Визуальная демонстрация для шага 3

  1. Преобразование функций в основные компоненты.

Чтобы преобразовать признаки в главные компоненты, мы умножаем признаки на собственные векторы поэлементно, как показано на рисунке 4 выше, и складываем их в горизонтальном направлении.

2. Преобразуйте основные компоненты обратно в функции.

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

Визуальная демонстрация для шага 4

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

Как показано на рисунке 6 выше, если мы решим уменьшить размерность за счет исключения функций, мы полностью удалим некоторые функции, в данном случае x3 и x4. Вся информация о длине и ширине лепестка теряется, когда мы уменьшаем размер с 4 до 2.

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

В нашем случае первая и вторая главные компоненты (то есть pc1 и pc2) объясняют более 95% отклонений от характеристик на основе нормализованного собственного значения, связанного с каждым собственным вектором, как показано на рисунке 8 ниже. Поэтому мы оставляем только pc1 и pc2.

Обратите внимание, что каждый из основных компонентов содержит информацию обо всех четырех функциях. Сохраняя только pc1 и pc2, мы извлекаем наиболее важную информацию из всех четырех функций и уменьшаем размерность с 4 до 2.

Замечания

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

Очистка данных важна

  • PCA чувствителен к выбросам и пропущенным значениям.

Стандартизация данных

  • PCA использует евклидово расстояние в качестве метрики сходства векторов признаков, поэтому перед применением PCA убедитесь, что мы масштабируем объекты.
  • Если мы используем в модели GridSearchCV, убедитесь, что мы поместили PCA в конвейер. Подгонка и преобразование обучающих данных перед запуском GridSearch приводит к утечке данных во время перекрестной проверки в GridSearch. Подробности читайте в моем последнем посте в блоге.

Плюсы

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

Минусы

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

Возможные варианты использования PCA (не исчерпывающий список)

  • У нас много функций с высокой мультиколлинеарностью.
  • У нас слишком много функций, из-за которых алгоритм работает очень медленно.

Неправильное использование PCA (неполный список)

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

Ресурсы и кредиты

  • Для дальнейшего изучения PCA я порекомендовал пройти курс машинного обучения профессора Стэнфорда Эндрю Нг на Coursera (неделя 8). Https://www.coursera.org/learn/machine-learning?
  • Я также процитировал материалы, подготовленные для своих учеников Мэттом Бремсом, глобальным инструктором Генеральной Ассамблеи. Он также написал в блоге очень подробную информацию о PCA. Https://towardsdatascience.com/a-one-stop-shop-for-principal-component-analysis-5582fb7e0a9c