Общий подход к выбору оптимального ядра (либо типа ядра, либо параметров ядра) в любом основанном на ядре методе заключается в перекрестной проверке. Смотрите здесь для обсуждения выбора ядра для машин опорных векторов: Как выбрать ядро для SVM?
Идея перекрестной проверки заключается в том, что мы пропускаем некоторые «тестовые» данные, запускаем наш алгоритм для подгонки модели к оставшимся «обучающим» данным, а затем проверяем, насколько хорошо полученная модель описывает тестовые данные (и насколько велика ошибка является). Это повторяется для разных пропущенных данных, ошибки усредняются, чтобы сформировать среднюю перекрестно проверенную ошибку, а затем могут сравниваться разные алгоритмы, чтобы выбрать тот, который дает наименьшую ошибку. В SVM можно использовать, например, точность классификации (или связанные с ней показатели) в качестве показателя эффективности модели. Затем можно выбрать ядро, которое дает лучшую классификацию тестовых данных.
Тогда возникает вопрос: какую меру производительности модели можно использовать в кПКА? Если вы хотите добиться «хорошего разделения данных» (предположительно, хорошего разделения классов), то вы можете как-то измерить его на обучающих данных и использовать его для поиска лучшего ядра. Однако следует отметить, что PCA / KPCA не предназначены для получения хорошего разделения данных (они не принимают класс этикетки во внимание на всех ). Так что, вообще говоря, нужно другое, не относящееся к классу, измерение производительности модели.
В стандартном PCA можно использовать ошибку реконструкции в качестве показателя производительности на тестовом наборе. В PCA ядра также можно вычислить ошибку восстановления, но проблема в том, что она не сопоставима между различными ядрами: ошибка восстановления - это расстояние, измеренное в целевом пространстве признаков; и разные ядра соответствуют разным целевым пространствам ... Итак, у нас есть проблема.
Одним из способов решения этой проблемы является вычисление ошибки восстановления в исходном пространстве, а не в целевом пространстве. Очевидно, что оставленная тестовая точка данных живет в исходном пространстве. Но его реконструкция kPCA живет в [низкоразмерном подпространстве] целевого пространства. Что можно сделать, так это найти точку («предварительное изображение») в исходном пространстве, которая будет отображена как можно ближе к этой точке реконструкции, а затем измерить расстояние между контрольной точкой и этим предварительным изображением. как ошибка реконструкции.
Я не буду приводить здесь все формулы, но вместо этого отсылаю вас к некоторым работам и вставляю здесь только несколько рисунков.
Идея «предварительного изображения» в kPCA была, по-видимому, введена в этой статье:
Мика и соавт. не выполняют перекрестную проверку, но им нужны предварительные изображения для устранения шумов, см. этот рисунок:
Обозначенные (толстые) точки представляют собой предварительные изображения проекций kPCA (здесь нет тестов и тренировок). Найти эти предварительные изображения нетривиально: нужно использовать градиентный спуск, а функция потерь будет зависеть от ядра.
И вот очень недавняя статья, в которой использовались предварительные изображения для перекрестной проверки и выбора ядра / гиперпараметра:
Это их алгоритм:
И вот некоторые результаты (которые, я думаю, в значительной степени говорят сами за себя):