Скажем, я выполнил кластеризацию своего набора данных и получил 10 кластеров. Эти кластеры не пересекаются. Но теперь предположим, что я изменил какую-то функцию во всех своих точках данных и снова выполняю кластеризацию. Теперь у меня есть еще 10 кластеров. Если я повторю это, скажем, еще 3 раза, в конце у меня будет 50 кластеров. С каждым кластером связана оценка, которая рассчитывается на основе точек данных его составляющих.
Эти 50 кластеров теперь имеют перекрывающиеся точки данных. Я хочу выбрать все возможные кластеры из этих 50 кластеров, для которых разрешен определенный порог перекрытия, чтобы получить наивысший общий балл выбранных кластеров.
Один из способов — это жадный метод, при котором я сортирую кластеры на основе оценки от наибольшего к наименьшему. Затем выберите кластер с наивысшей оценкой. Затем оттуда продолжайте выбирать кластеры, которые перекрываются в пределах порога с уже выбранными кластерами. Но это не кажется оптимальным решением, хотя и быстрым.
Пример: скажем, у меня есть 3 кластера со следующими оценками:
C1 = (A,B,C,D,E,F) Оценка = 10
C2 = (A,B,C,D) Оценка = 6
C3 = (D, E, F) Оценка = 6
Допустимое перекрытие составляет 1 элемент или менее 40% размера меньшего кластера.
Жадный подход вернет {C1} с общим счетом 10, в то время как лучшим вариантом является {C2, C3} с общим счетом 6+6=12, с перекрытием элемента 'D', т.е. 1/размер(C3 ) = 1/3 = 33,33% ‹ 40%
Я ищу другой метод, который может дать оптимальное решение или лучшее решение, чем вышеупомянутый жадный подход.