Как выбрать ядро ​​для ядра PCA?


12

Какими способами можно выбрать, какое ядро ​​приведет к хорошему разделению данных при окончательном выводе данных ядром PCA (анализ основных компонентов), и как оптимизировать параметры ядра?

Условия Лаймана, если это возможно, будут высоко оценены, и ссылки на статьи, которые объясняют такие методы, также были бы хорошими.


1
Когда вы говорите «хорошее разделение данных», что именно вы имеете в виду? Какое приложение ядра PCA вы имеете в виду? Если это имеет какое-либо отношение к «разделению данных», то следует ли вам использовать какой-либо метод классификации (например, механизм опорных векторов ядра) вместо kPCA? Помимо всего этого, хороший вопрос, +1. У меня нет опыта выбора ядра, поэтому я не могу вам помочь.
говорит амеба, восстанови Монику

@amoeba Используется для уменьшения нелинейности размеров. Мои знания о векторах поддержки немного ограничены, потому что я никогда не посещал курсы CS; Я студент и изучал через газеты онлайн. Под «хорошим разделением данных» я подразумеваю то, что показано приведенными в этой статье примерами . Я работаю с Matlab, и мой код PCA ядра работает и работает для простых, поли, радиальных и сигмовидных ядер, но было бы полезно узнать, когда использовать какой для достижения наилучших результатов.
Chives

Я думаю, что лучший (только?) Способ выбрать ядро ​​- это использовать перекрестную проверку, смотрите здесь: Как выбрать ядро ​​для SVM? Вам нужно только измерить производительность для вашего kPCA, чтобы использовать перекрестную проверку. Разделение класса может быть достойной мерой , если это то , что вы после этого , но обратите внимание , что PCA / KPCA не предназначен вовсе привести к разделению хорошего класса; это просто максимизация захваченной дисперсии.
говорит амеба, восстанови Монику

Я немного почитал и, возможно, смогу ответить на ваш вопрос. Но это может занять некоторое время (дни).
говорит амеба: восстанови Монику

@amoeba Максимизация дисперсии имеет смысл для меня теперь, когда вы упомянули это. Я сам посмотрю на перекрестную проверку, но было бы неплохо, если бы вы тоже немного посмотрели на нее, если бы нашли время! Спасибо.
Зеленый лук

Ответы:


7

Общий подход к выбору оптимального ядра (либо типа ядра, либо параметров ядра) в любом основанном на ядре методе заключается в перекрестной проверке. Смотрите здесь для обсуждения выбора ядра для машин опорных векторов: Как выбрать ядро ​​для SVM?

Идея перекрестной проверки заключается в том, что мы пропускаем некоторые «тестовые» данные, запускаем наш алгоритм для подгонки модели к оставшимся «обучающим» данным, а затем проверяем, насколько хорошо полученная модель описывает тестовые данные (и насколько велика ошибка является). Это повторяется для разных пропущенных данных, ошибки усредняются, чтобы сформировать среднюю перекрестно проверенную ошибку, а затем могут сравниваться разные алгоритмы, чтобы выбрать тот, который дает наименьшую ошибку. В SVM можно использовать, например, точность классификации (или связанные с ней показатели) в качестве показателя эффективности модели. Затем можно выбрать ядро, которое дает лучшую классификацию тестовых данных.

Тогда возникает вопрос: какую меру производительности модели можно использовать в кПКА? Если вы хотите добиться «хорошего разделения данных» (предположительно, хорошего разделения классов), то вы можете как-то измерить его на обучающих данных и использовать его для поиска лучшего ядра. Однако следует отметить, что PCA / KPCA не предназначены для получения хорошего разделения данных (они не принимают класс этикетки во внимание на всех ). Так что, вообще говоря, нужно другое, не относящееся к классу, измерение производительности модели.

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

Одним из способов решения этой проблемы является вычисление ошибки восстановления в исходном пространстве, а не в целевом пространстве. Очевидно, что оставленная тестовая точка данных живет в исходном пространстве. Но его реконструкция kPCA живет в [низкоразмерном подпространстве] целевого пространства. Что можно сделать, так это найти точку («предварительное изображение») в исходном пространстве, которая будет отображена как можно ближе к этой точке реконструкции, а затем измерить расстояние между контрольной точкой и этим предварительным изображением. как ошибка реконструкции.

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

Идея «предварительного изображения» в kPCA была, по-видимому, введена в этой статье:

Мика и соавт. не выполняют перекрестную проверку, но им нужны предварительные изображения для устранения шумов, см. этот рисунок:

kPCA от шумов от Mika et al.

Обозначенные (толстые) точки представляют собой предварительные изображения проекций kPCA (здесь нет тестов и тренировок). Найти эти предварительные изображения нетривиально: нужно использовать градиентный спуск, а функция потерь будет зависеть от ядра.

И вот очень недавняя статья, в которой использовались предварительные изображения для перекрестной проверки и выбора ядра / гиперпараметра:

Это их алгоритм:

Алам и Фукумизу

И вот некоторые результаты (которые, я думаю, в значительной степени говорят сами за себя):

Алам и Фукумизу


1
(+1) Может быть полезно отметить, что этот предварительный образ является набором средств Фреше / Карчера для точек, назначенных данному кластеру, но это не обязательно помогает во всем.
Дугал

xxyyzz

Если подумать, то, наверное, раньше я не обращал достаточно внимания; Мой комментарий относится к ядру k-means, а не кPCA. Прообраз определенно связан с этим понятием, но совсем не одно и то же. Извините за шум. :)
Дугал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.