2014-01-30 2 views
1

Я начинаю использовать dlib, и мне трудно понять, как реализованы ядра. Я начал с алгоритма k-kmeans, поскольку я знаю этот метод кластеризации. Однако я не могу понять, где вычисляется ядро. Входные данные представляют собой матрицу (а не ядро), и алгоритм никогда не преобразует данные в ядро. Я ожидаю, что класс ядра вернет квадратную матрицу. Но я не видел ничего подобного! Я хочу использовать dlib для реализации алгоритма кластеризации с использованием ядер, а dlib - хорошее решение для этого. Кто-нибудь имеет документацию о том, как она реализована или может объяснить мне, как она работает?Понимание реализации ядра Dlib

благодарит за вашу помощь!

ответ

0

Для набора из N точек данных ядро ​​обычно задается матрицей NxN, чья запись (i, j) th дает значение ядра между точкой данных i и точкой данных j. Это работает для методов ядра, если матрица симметрична и положительно определена, что гарантировано для истинного ядра.

+0

все в порядке, если я понимаю, что вы говорите, в примере, если k-kmeans не используется в качестве ядра, но будет работать так же, если ядро ​​было предоставлено? Итак, как я могу получить ядро ​​из введенных данных? – user1595929

1

Ядро - это в основном просто функция, которая принимает два входных образца и выводит один номер. Итак, да, иногда вы увидите код, который затем вычисляет матрицу N на N всех возможных выходных функций ядра для N выборок. Однако это несколько наивная стратегия реализации, поскольку для этого требуется O (N^2) ОЗУ. Таким образом, большинство программных средств ядра реального мира использует некоторую стратегию отложенной оценки или кэширования, чтобы избежать этой проблемы.

В реализации ядра K-реализация в dlib это делается с помощью объекта kcentroid. Внутри kcentroid вы можете видеть, что он вызывает функцию ядра в нескольких местах и ​​делает все «содержимое ядра». Вы можете прочитать документацию для kcentroid, чтобы понять, что она делает. Хотя, если вы только начинаете с методов ядра, вам действительно нужно получить книгу по этому вопросу. Я настоятельно рекомендую выбрать один из них:

  • Учимся с ядрам: машины опорных векторов, регуляризация, оптимизация и Beyond Бернхард Schlkopf и Александр Дж Smola
  • ядра Методы анализа Узор по Джон Шо-Тейлор и Nello Cristianini
Смежные вопросы