Как настроить / выбрать параметр предпочтения для AffinityPropagation?

Вопрос или проблема

У меня есть большой словарь “матриц парного сходства”, который будет выглядеть следующим образом:

similarity['group1']:

array([[1.        , 0.        , 0.        , 0.        , 0.        ],
       [0.        , 1.        , 0.09      , 0.09      , 0.        ],
       [0.        , 0.09      , 1.        , 0.94535157, 0.        ],
       [0.        , 0.09      , 0.94535157, 1.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 1.        ]])

Короче говоря, каждый элемент предыдущей матрицы — это вероятность того, что record_i и record_j являются похожими (значения от 0 до 1 включительно), при этом 1 означает полностью похожи, а 0 — полностью разные.

Затем я подаю каждую матрицу сходства в алгоритм AffinityPropagation для группировки / кластеризации похожих записей:

sim = similarities['group1']

clusterer = AffinityPropagation(affinity='precomputed', 
                                damping=0.5, 
                                max_iter=25000, 
                                convergence_iter=2500, 
                                preference=????)) # ПРОБЛЕМА здесь

affinity = clusterer.fit(sim)

cluster_centers_indices = affinity.cluster_centers_indices_
labels = affinity.labels_

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

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


Например: когда я играю с параметром предпочтения, вот результаты, которые я получаю из матрицы сходства

  • preference = default # что составляет медиану (значение 0.2) матрицы сходства: (неправильные результаты, мы видим, что запись 18 не должна быть там, потому что схожесть с другими записями очень низка):

     # Индексы элементов в кластере №5: [15, 18, 22, 27]
    
     {'15_18': 0.08,
     '15_22': 0.964546229533378,
     '15_27': 0.6909703138051403,
     '18_22': 0.12,    # Не Ок, схожесть слишком низка
     '18_27': 0.19,    # Не Ок, схожесть слишком низка
     '22_27': 0.6909703138051403}
    
  • preference = 0.2 фактически от 0.11 до 0.26: (правильные результаты, так как записи похожи):

     # Индексы элементов в кластере №5: [15, 22, 27]
    
     {'15_22': 0.964546229533378,
     '15_27': 0.6909703138051403,
     '22_27': 0.6909703138051403}
    

Мой вопрос: Как мне выбрать этот параметр preference таким образом, чтобы он обобщался?

Один из вариантов — систематически пробовать разные значения параметра preference (гиперпараметра) и выяснить, какое значение лучше всего обобщается, измеряя производительность метрики оценки на отложенном наборе данных. Вы упоминаете ложные срабатывания, так что это можно использовать в качестве метрики оценки. Этот процесс обычно называется кросс-валидацией.

Ответ или решение

Чтобы оптимизировать параметр preference в алгоритме кластеризации AffinityPropagation при работе с матрицами парной схожести, необходимо учитывать несколько факторов и методических подходов. Рассмотрим все детали этого процесса:

1. Понимание параметра preference

Параметр preference в AffinityPropagation влияет на численность кластеров: чем выше это значение, тем больше будет количество получаемых кластеров. Это связано с тем, что preference определяет, насколько "агрессивно" алгоритм будет кластеризовать данные. Значение по умолчанию задается как медиана значений матрицы схожести, однако в вашем случае это приводит к множеству ложных срабатываний и недостаточной надежности результатов.

2. Общие рекомендации выбора preference

Для поиска обобщенного значения параметра preference, можно использовать следующие подходы:

a. Эмпирический метод

  1. Экспериментирование с интервалом: Начните с медианы и попробуйте значения в диапазоне, например, между 0.1 и 0.4 с шагом 0.01. Следите за количеством кластеров и их качеством.
  2. Использование средних значений: Вместо медианы рассмотрите возможность использования среднего значения матрицы схожести, а также эксперименты с его вариациями (например, -0.1, 0.1).

b. Кросс-валидация

Систематически тестируйте различные значения preference и оценивайте результат. Для этой задачи полезно использовать метод кросс-валидации:

  1. Разделение данных: Разделите вашу выборку на обучающую и тестовую части.
  2. Выбор метрик: Используйте метрики оценки, такие как количество ложных срабатываний, точность кластеризации или Silhouette Coefficient для оценки качества кластеров.
  3. Оптимизация параметра: Находите те значения preference, которые минимизируют количество ложных срабатываний.

3. Определение оптимального интервала

Вы можете экспериментировать с preference в диапазоне от минимума до максимума значений в вашей матрице. Лучшим подходом будет:

  • Нахождение диапазона: Посмотрите на все значения в вашей матрице и проведите анализ: определите, какие значения схожести наиболее распространены и как они влияют на кластеризацию.
  • Адаптивное изменение: Попробуйте задать preference как процентиль, например, 20-й или 30-й, в зависимости от структуры данных.

4. Автоматизированные методы

Кроме ручного подбора, можно использовать автоматизированные методы:

  • Грид-робот (Grid Search): Реализуйте грид-робот, который систематически протестирует различные значения preference, оценивая результаты на каждом шаге.
  • Байесовская оптимизация: Примените алгоритмы оптимизации для нахождения оптимального значения параметра, используя эффективность как целевую функцию.

Заключение

Настройка параметра preference для алгоритма AffinityPropagation — это важный шаг к повышению точности кластеризации. Рассматривайте как эмпирические, так и автоматизированные методы оптимизации для достижения наилучших результатов. Постоянно анализируя и перерабатывая данные, вы сможете получить надежные кластеры, которые действительно отражают структуру ваших данных. Используйте предложенные методы и придерживайтесь системного подхода к достижению ваших целей в анализе данных.

Оцените материал
Добавить комментарий

Капча загружается...