2016-10-16 16 views
1

Я использую ELKI для кластеризации DBSCAN и его ClusteringVectorDumper для вывода идентификаторов кластера в текстовый файл.ELKI ClusteringVectorDumper - какие из них являются выбросами?

Какой идентификатор вы получаете? Я предположил, что это «0», но это, похоже, не так.

+0

Шум - это не то же самое, что и выбросы. Номера кластеров бессмысленны, как случайные числа. И посмотрели ли вы на исходный код для своей реальной проблемы? –

+0

Это не отвечает на мой вопрос ... вы хотите сказать мне, что выбросы получают один случайный идентификатор? или у каждого выброса есть свой собственный идентификатор? –

+0

Это комментарий, а не ответ. Я говорю, что у кластеров нет «естественного» целого числа, поэтому трудно предсказать, какое целое назначено. Я использовал ELKI (но не этот самосвал); поэтому я знаю, что он не использует один кластер на каждый шум, но для всех шумов будет назначен один и тот же кластер. Но в иерархической кластеризации точка может быть в нескольких кластерах. В Java кластеры будут иметь метод 'isNoise()' в кластере. Не знаю, что делает самосвал - вы проверили источник? –

ответ

0

Вы можете найти исходный код ClusteringVectorDumper.

Специальной обработки шумовых кластеров нет, но они будут обработаны как возвращено Clustering.getAllClusters(). Чтобы обеспечить некоторую стабильность, этот метод в настоящее время сортирует по имя. DBSCAN не предоставляет дополнительных имен кластеров (некоторые алгоритмы присваивают имена интервалов или имена подпространств), поэтому, если я правильно помню, все кластеры будут называться либо "Cluster", либо "Noise". Потому что "Noise" сортирует после "Cluster", индекс наибольший должен быть кластером шума.

Не стесняйтесь присылать запрос на растяжение, чтобы улучшить или именование, или выход. Я рассматривал возможность использования отрицательных чисел для кластеров шума, но это увеличило бы сложность кода; и люди, скорее всего, не ожидали увидеть кластер -1.

Это не работает, чтобы злоупотреблять DBSCAN для обнаружения обнаружения. Он будет пропускать выбросы, потому что они достижимы, и он назначит кластеры с низкой плотностью как выбросы, которые другие методы легко распознают правильно. Он также не обеспечивает рейтинг, поэтому вы не можете контролировать количество выходов. Если вы измените DBSCAN для обеспечения такого ранжирования, вы, скорее всего, изобретете один из старейших методов обнаружения выбросов, обнаружение out-out kNN. (DB-Outlier также очень тесно связан с DBSCAN).

+0

Не удается подтвердить это. Многократно тестировали набор данных mouse.csv с помощью DBSCAN, задавали параметры так, чтобы большинство точек были помехами, а затем проверял выходной вектор кластеризации, а индекс самого большого кластера (= шум) часто не был равен 0 или последнему индексу. Я должен добавить, что я работаю над старым фиксатором с 13 апреля (03fbea9028ceda5839b61b65cae647e029eb8f70), поэтому может быть возможно, что это поведение изменилось. –

+0

Тогда вам придется придумать логику, которая вам нравится, и изменить код по своему усмотрению. –

+0

Как уродливый взлом, вы можете добавить точку данных, которая находится на бесконечности к вашему набору данных. Это будет шум; а затем первая запись в файле данных будет указывать класс шума. (Непроверенный, я просто сделаю обработчик результата точно так, как мне это нужно.) –

 Смежные вопросы

  • Нет связанных вопросов^_^