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

Что такое уменьшение размерности?

Уменьшение размерности — это фундаментальный метод, используемый для упрощения сложных наборов данных за счет уменьшения количества признаков или переменных при сохранении важной информации. Этот метод особенно полезен для многомерных наборов данных, где большое количество признаков может вызвать такие проблемы, как переобучение, неэффективность вычислений и трудности с визуализацией. Уменьшая количество функций, уменьшение размерности может помочь повысить точность моделей машинного обучения и ускорить время вычислений. Более того, это также может помочь в определении наиболее важных функций в наборе данных, что может помочь улучшить интерпретируемость и дать представление об основных отношениях между переменными.

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

Люди могут легко визуализировать данные, когда они представлены в 2D или 3D с помощью простых диаграмм рассеивания. Но когда размерность данных увеличивается, становится сложно визуализировать и осмыслить информацию. Например, при работе с данными от 4D до 6D мы можем использовать парные графики, чтобы получить представление об основных закономерностях. При работе с еще более высокими измерениями эти методы становятся недостаточными.

Итак, нам нужен метод, который позволит нам преобразовывать n-мерные точки данных в m-мерное пространство, где m‹n, что упрощает обработку и интерпретацию данных. Популярные методы уменьшения размерности включают анализ основных компонентов (PCA), t-распределенное стохастическое встраивание соседей (t-SNE), UMAP и т. д.

Где это будет полезно?

Рассмотрим пример набора данных MNIST, который состоит из 784 измерений. Как вы думаете, возможно ли визуализировать это человеческими глазами?

Если кто-то так утверждает, скорее всего, он вводит вас в заблуждение.

Но с помощью методов уменьшения размерности мы можем преобразовать набор данных в 2 или 3 измерения, упрощая визуализацию и интерпретацию.

Уменьшение размерности не ограничивается только целями визуализации. Есть две ключевые области, в которых уменьшение размерности чрезвычайно выгодно. Во-первых, при работе с многомерными данными мы можем столкнуться с «проклятием размерности», когда количество точек данных, необходимых для точного моделирования, экспоненциально увеличивается с каждым дополнительным измерением. Уменьшая количество измерений, мы можем смягчить эту проблему и обеспечить более эффективное и точное моделирование.

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

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

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

Некоторые алгоритмы, такие как K-ближайшие соседи (KNN), K-средние и деревья решений, в значительной степени полагаются на вычисления на основе расстояния, что делает их особенно восприимчивыми к проблемам, возникающим из-за высокой размерности. Хотя одним из решений этой проблемы является получение большего количества данных, это не всегда осуществимо или практично. Таким образом, уменьшение размерности данных может быть полезной практикой для смягчения этих проблем, что приводит к более быстрым вычислениям и повышению производительности модели.

По мере увеличения числа измерений исчезает ощущение относительного расстояния и «близости».

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

  • Экспоненциальное увеличение вычислительной сложности и времени обработки.
  • Трудности с визуализацией и пониманием данных.
  • Более высокий риск переобучения и потери информации из-за разреженности.
  • Снижение точности и производительности и увеличение шума/выбросов в наборе данных
  • Ограниченная интерпретируемость результатов и трудности с получением осмысленных выводов.
  • Обобщения не произойдет, и модель может быть не в состоянии использовать важные функции из-за влияния других функций.

«Моделирование на конец дня заключается в поиске баланса или правильного порога, при котором модель может иметь большую прогностическую силу и простоту.»

Итак, для решения этих проблем есть три широко используемых метода:

  • PCA — Анализ главных компонентов.
  • t-SNE — t-распределенное стохастическое вложение окрестностей.
  • UMAP — унифицированное многообразие аппроксимации и проекции.

Анализ главных компонентов

Во-первых, давайте посмотрим, как уменьшить размерность с 2D до 1D?

В качестве простого примера здесь у вас есть данные о цвете человеческих волос и росте. как правило, рост может варьироваться от человека к человеку, но в Индии цвет волос в основном черный, и немногие люди могут иметь разные цвета и оттенки черного. Итак, если вы видите здесь, что пунктирная линия представляет собой дисперсию (разброс) набора данных, а по оси x она очень меньше. Итак, очень важной особенностью здесь является высота, сравнивающая цвет волос, потому что он имеет большую дисперсию. Сохраняю направление с большим разбросом. больше распространения означает, что он имеет больше информации, которая очень полезна. Итак, я могу добавить функцию x здесь, чтобы преобразовать 2D в 1D.

Давайте рассмотрим немного другой сценарий, у нас снова есть двумерный набор данных и его столбец нормализован. Итак, теперь дисперсия такая же, потому что она имеет среднее значение = 0, а дисперсия равна 1. Теперь, как мне избавиться от 1 измерения?

Разброс по x и y в основном похож, поэтому вы не можете просто исключить из него одну функцию. Но если вы заметите здесь направление этих двух элементов, если вы повернете его на определенный угол, все равно X’ и Y’ будут такими же перпендикулярными, как X и Y. Разброс по Y’ будет намного меньше, чем X’.

Каким-то образом, если я найду этот угол, оставлю Y’ и спроецирую точки данных на X’, я смогу успешно преобразовать 2D в 1D. Итак, это всего лишь техника вращения оси. мы хотим найти такое направление, чтобы дисперсия X’ была максимальной, чтобы мы могли отбросить Y’.

Есть два способа решить эту проблему,

  1. Найдите направление, которое максимизирует дисперсию.
  2. Минимизация расстояния.

Максимизация дисперсии

Задача состоит в том, чтобы найти u1 такое, что дисперсия точки xi, спроецированная на u1, максимальна.

Предположим, что направление u1 — единичный вектор (единичный вектор имеет длину, равную 1), а xi — точка, которую я проецирую на плоскость x’. Пусть xi’ — проекция xi на u1. Эта проекция приведет к новому набору данных D. Математическая функция, представляющая эту проекцию, может быть следующей:

D’ — это новый набор данных, который мы получим после этой проекции. Здесь задача состоит в том, чтобы найти u1 такое, чтобы дисперсия точек данных, спроецированных на u1, была максимальной.

Здесь максимизация u1 — наша целевая функция, а u1^T u — ограничение, которое у нас есть. Поэтому в PCA она называется задачей оптимизации с ограничениями. Если я установлю u1 на бесконечность, может показаться, что он будет максимальным, но ограничение здесь в том, что он должен быть единичным вектором.

Минимизация расстояния:

Для каждого xi мы должны получить di — расстояние от xi до ui. Итак, нам нужно найти расстояние d,

Согласно тригонометрии,

Здесь мы можем либо минимизировать, либо максимизировать «u1», что является двумя разными методами, но интуитивно это одно и то же «u1», которое нам нужно найти, чтобы либо максимизировать дисперсию, либо минимизировать расстояние.

Решение наших задач оптимизации заключается в использовании концепции собственных значений и собственных векторов. Предполагая, что наш набор данных «X» стандартизирован по столбцам, ковариационная матрица «S» случайной величины «X» может быть представлена ​​как «X ^ T * X», где «X» — это матрица nd, а X^T – это матрица dn, поэтому S – матрица d*d.

Чтобы максимизировать дисперсию, нам нужно найти направление u1. Здесь вступают в игру собственные значения и собственные векторы. Каждое собственное значение, обозначаемое как λ1›λ2›λ3›λ4…λd (поскольку S является матрицей d*d), имеет соответствующий собственный вектор, представленный как V1›V2›V3›V4…λd.

Мы можем установить связь с нашей симметричной матрицей «S» следующим образом: λ1 * V1 = S * V1 (где λ1 — собственное значение S, а V1 — собственный вектор S, соответствующий λ1).

Свойство собственных векторов гласит, что любые два собственных вектора перпендикулярны друг другу. Более того, каждая пара собственных векторов также перпендикулярна друг другу.

Используя это свойство, мы можем определить, что u1, максимизирующий дисперсию, равен V1, т. е. собственному вектору S, соответствующему наибольшему собственному значению λ1.

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

Процент объясненной дисперсии = отношение λi/сумма λ

Например, если λ1 = 3 и λ2 = 1, и вы решили использовать λ1, то расчет будет следующим: 3 / (3 + 1) = 3 / 4 = 75%. Это означает, что, используя только одно измерение, вы можете сохранить 75% информации, присутствующей в исходном наборе данных.

Итак, теперь, если у меня есть набор 2D-данных, я могу преобразовать его в 1D, просто используя метод максимальной дисперсии следующим образом:

Новый набор данных Xi’ может сохранять максимальную дисперсию с собственным вектором V1, поэтому мы можем исключить точку данных V2.

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

Во-первых, давайте рассмотрим наш набор данных MNIST, который состоит из 784 измерений, что делает невозможным прямую визуализацию человеческим глазом. Тем не менее, мы все еще можем получить лучшее понимание, применяя концепцию PCA вручную. Вот шаги для достижения этого: Используя 2 верхних собственных вектора, мы можем уменьшить размеры с 784 до 2D, что позволит нам создать визуализацию.

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

PCA — это мощный метод уменьшения размерности. Чтобы проиллюстрировать это, давайте используем набор данных MNIST в качестве примера и применим PCA. Построив график между «% объясненной дисперсии» и «количеством компонентов», мы можем определить, сколько функций необходимо для охвата большей части дисперсии набора данных. Например, если на 100 признаков приходится 96% дисперсии, исключение 50 признаков будет эффективным с точки зрения вычислений, но при этом сохранится значительный объем информации для интерпретации модели.

Если вы посмотрите на кривую локтя, вы заметите, что примерно при 350 компонентах мы можем уловить более 95% дисперсии. Основываясь на этом понимании, давайте приступим к созданию двух моделей: одна использует все функции 784, а другая использует только лучшие 312 функций.

Таким образом, даже с половиной функций мы наблюдаем снижение точности всего на 0,03%, что является приемлемым. Было бы нецелесообразно использовать дополнительные 472 измерения только для незначительного улучшения на 0,03%. Работа с таким большим количеством измерений потребует больших вычислительных ресурсов, особенно для больших наборов данных.

Поэтому, хотя использование PCA для визуализации действительно полезно, важно упомянуть, что такие методы, как t-SNE и UMAP, могут сделать феноменальную работу в этом отношении, о чем я расскажу в своих следующих блогах. Однако для уменьшения размерности PCA обеспечивает ценный компромисс между вычислительной эффективностью и поддержанием высокого уровня точности.

Надеюсь, я предоставил вам ценную информацию и лучшее понимание этой концепции, насколько мне известно. Спасибо :)