Как я могу оценить кластеризацию? - PullRequest
2 голосов
/ 02 февраля 2012

Я все еще занимаюсь оценкой кластеров, сформированных с помощью кластеризации (обучение без учителя)?

Я пробовал поискать в Google, но меры, которые я получаю, слишком теоретические.Было бы здорово, если бы люди могли поделиться механизмами, которые они используют для оценки сформированных кластеров.Скажем, у меня есть Java Cluster, который будет содержать Java EE, Java ME, RMI, JVM и т. Д., Другой кластер, скажем, NoSQL, и будет иметь что-то вроде Neo4j, OrientDB, CouchDB и т. Д. Это прекрасно, и мой алгоритм кластеризации дал мне больше всеготочные кластеры.

Однако после обучения и тестирования я могу получить, скажем, MySQL, Oracle под кластером NoSQL, поэтому я просто выполняю ручную / визуальную интерпретацию, а затем заново тренирую свой алгоритм или настраиваю его, чтобы улучшить кластеризацию.

Теперь я хочу автоматизировать процесс визуализации кластеров вручную, и у меня есть система, которая дает мне точность сформированных кластеров.Я ищу что-то похожее на Precision, Recall, NDCG, Map и т. Д., Используемые в поиске.Мои кластеры различаются по длине, и может быть n - разные кластеры, поэтому точность / отзыв не будут правильными.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

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

Сейчас я использую библиотеку JavaML , которая имеет несколько встроенных алгоритмов кластеризации (в моем случае я использую K-средства), и эта библиотека также имеет несколько функций для оценки этих алгоритмов.

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

Вы также можете проверить проблему ' Cluster labeling '. Это не тривиально, но намеревается атаковать ту же проблему.

Я думаю, что правильный ответ на ваш вопрос зависит от используемого вами алгоритма кластеризации, и я понимаю некоторые математические теории здесь, потому что это нелегкий вопрос:)

Удачи с этим!

1 голос
/ 02 февраля 2012

Обычно кластеризация используется в качестве неконтролируемого и полуконтролируемого алгоритма обучения. Так как вы упомянули «Однако после обучения, а затем тестирования, я могу получить, скажем, MySQL,… ..». Я предполагаю, что вы используете алгоритм кластеризации под наблюдением для своего приложения.

Вы можете увеличить количество входных объектов (или, возможно, провести несколько экспериментов, увеличив количество входных объектов), чтобы увидеть, как изменяется точность вашей системы с помощью w.r.t. размер вектора объекта.

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

...