Каковы преимущества ядра PCA перед стандартным PCA?

18

Я хочу реализовать алгоритм в статье, которая использует ядро ​​SVD для декомпозиции матрицы данных. Итак, я читал материалы о методах ядра, ядре PCA и т. Д. Но это все еще очень неясно для меня, особенно когда речь идет о математических деталях, и у меня есть несколько вопросов.

  1. Почему методы ядра? Или каковы преимущества методов ядра? Какова интуитивная цель?

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

  2. Напротив, SVD уменьшает пространство функций. Почему они делают это в разных направлениях? Методы ядра ищут более высокое измерение, в то время как SVD ищет более низкое измерение. Мне кажется странным объединять их. Согласно статье, которую я читаю ( Symeonidis et al. 2010 ), введение ядра SVD вместо SVD может решить проблему разреженности в данных, улучшая результаты.

введите описание изображения здесь

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

Тайлер 傲 来 国 主
источник
3
Больше комментарий, чем ответ: KPCA очень похож на Spectral Clustering - в некоторых настройках это даже то же самое. (см., например, cirano.qc.ca/pdf/publication/2003s-19.pdf ).
Извините за поздний ответ. Да, ваш ответ очень поучительный.
Тайлер 主 来 国 主

Ответы:

24

PCA (как метод уменьшения размерности) пытается найти низкоразмерное линейное подпространство, к которому относятся данные. Но может случиться так, что данные ограничены низкоразмерным нелинейным подпространством. Что будет потом?

Взгляните на этот рисунок, взятый из учебника Бишопа «Распознавание образов и машинное обучение» (рисунок 12.16):

ядро PCA из книги епископа ML

Точки данных здесь (слева) расположены в основном вдоль кривой в 2D. PCA не может уменьшить размерность с двух до одного, потому что точки не расположены вдоль прямой линии. Но, тем не менее, данные «очевидно» расположены вокруг одномерной нелинейной кривой. Так что пока PCA выходит из строя, должен быть другой путь! И действительно, ядро ​​PCA может найти это нелинейное многообразие и обнаружить, что данные на самом деле почти одномерны.

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

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

амеба говорит восстановить монику
источник
Хороший ответ. Просто последующий вопрос. Вы сказали, что если точки данных нелинейны, как показано на рисунке выше, PCA не будет работать, и потребуется PCA ядра. Но как мы узнаем, в первую очередь, являются ли точки данных нелинейными для набора данных, который имеет более 4 признаков (случай реального мира). Чтобы визуализировать такие данные, нам нужно уменьшить размерность, что означает, что мы в конечном итоге используем PCA для уменьшения размерности, что было бы неправильно, поскольку данные могут быть нелинейными, и мы используем обычный PCA для визуализации. Тогда как узнать, являются ли данные нелинейными для использования PCA ядра, а не PCA
Baktaawar
Спасибо, @user. Я думаю, это зависит от применения PCA / kPCA. Например, если он применяется в качестве шага предварительной обработки для некоторого алгоритма классификации, регрессии или кластеризации, то можно судить, насколько хорошо PCA и kPCA работали, исходя из того, насколько хорошо работает этот последующий алгоритм.
говорит амеба, восстанови Монику
1
Спасибо @amoeba. Но я думаю, что я хотел спросить, что, как вы упомянули выше, нам нужно использовать kPCA, когда данные нелинейны, тогда как узнать, что данные имеют нелинейность, если нет. из особенностей больше 3? Мы не можем визуализировать это, не достигнув размеров, и тогда это похоже на проблему курицы и яйца
Бактаавар
2
@Baktaawar Если вы занимаетесь машинным обучением, не визуализируйте, пусть ваша модель изучит его сама. По сути, включите шаг KPCA в свой внутренний цикл повторной выборки и протестируйте ядра в качестве параметров, включая линейное ядро ​​и любые другие, которые вы хотите / можете себе позволить протестировать.
Firebug