Если алгоритм DBSCAN работает правильно, возможно ли создать кластер с менее чем minPoints членами?

Я новичок в использовании алгоритма DBSCAN.

Краткое резюме; имеет два параметра:

  1. epsilon - указать допустимое расстояние между двумя точками, при котором их можно считать достаточно близкими для кластера.
  2. minPoints — указать минимальное количество точек, которые должны попасть на расстояние epsilon, чтобы составить кластер. Если точек недостаточно, это просто помечается как шум.

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

Я указал значение 6 для minPoints, и все же в моих результатах я получил кластер только с 2 точками.

Из отладки, думаю, я вижу, что происходит. Похоже, что когда точка исследуется, у нее есть 16 соседей на расстоянии меньше epsilon, поэтому ее следует квалифицировать как кластер. Позже алгоритм видит, что 14 из этих соседей уже были отнесены к другому кластеру, поэтому в этом кластере остается только 2 точки.

Должен ли minPoints строго соблюдаться?

Так должен работать исправный алгоритм DBSCAN или это ошибка, которую мне нужно исправить, прежде чем продолжить?


person benjamin    schedule 25.04.2021    source источник
comment
И если это ошибка... что должен сделать DBSCAN с этой точкой данных? Поместить его в тот же кластер, что и большинство его соседей?   -  person benjamin    schedule 25.04.2021


Ответы (1)


Для любого, кто найдет этот вопрос через Google, правильный ответ - Да. Правильно функционирующая реализация DBSCAN может создать кластер с менее чем minPoints элементами. Более подробно это объясняется в другом вопросе о переполнении стека:

Может ли алгоритм DBSCAN создать кластер с менее минПц?

person benjamin    schedule 29.04.2021