У меня есть корреляционная матрица, в которой указано, как каждый элемент соотносится с другим элементом. Следовательно, для N элементов у меня уже есть N * N корреляционная матрица. Используя эту корреляционную матрицу, как кластеризовать N элементов в M бинах, чтобы я мог сказать, что Nk элементов в k-ом бине ведут себя одинаково. Пожалуйста, помогите мне. Все значения элемента являются категориальными.
Благодарю. Дайте мне знать, если вам нужна дополнительная информация. Мне нужно решение на Python, но любая помощь в продвижении к требованиям будет большой помощью.
clustering
python
k-means
Abhishek093
источник
источник
Ответы:
Похоже, работа для блочного моделирования. Google для "блочного моделирования" и первые несколько хитов полезны.
Скажем, у нас есть ковариационная матрица, где N = 100, и на самом деле есть 5 кластеров:
Моделирование блоков пытается найти порядок строк, чтобы кластеры стали очевидными как «блоки»:
Ниже приведен пример кода, который выполняет простой жадный поиск для достижения этой цели. Вероятно, это слишком медленно для ваших 250-300 переменных, но это только начало. Посмотрите, можете ли вы следовать вместе с комментариями:
источник
Вы смотрели на иерархическую кластеризацию? Он может работать со сходствами, а не только с расстояниями. Вы можете разрезать дендрограмму на высоте, где она разбивается на k кластеров, но обычно лучше визуально осмотреть дендрограмму и выбрать высоту для среза.
Иерархическая кластеризация также часто используется для создания умного переупорядочения для визуализации матрицы сходства, как видно из другого ответа: она размещает больше похожих записей рядом друг с другом. Это также может служить средством проверки для пользователя!
источник
Вы смотрели на корреляционную кластеризацию ? Этот алгоритм кластеризации использует информацию о попарной положительной / отрицательной корреляции, чтобы автоматически предлагать оптимальное число кластеров с четко определенным функционалом и строгой генеративной вероятностной интерпретацией .
источник
Correlation clustering provides a method for clustering a set of objects into the optimum number of clusters without specifying that number in advance
. Это определение метода? Если да, это странно, потому что существуют другие методы для автоматического определения количества кластеров, а также, почему тогда это называется "корреляцией".Я бы отфильтровал на некотором значимом (статистически значимом) пороге, а затем использовал бы разложение dulmage-mendelsohn, чтобы получить связанные компоненты. Может быть, прежде чем вы сможете попытаться устранить некоторые проблемы, такие как транзитивные корреляции (A сильно коррелирует с B, B к C, C к D, поэтому есть компонент, содержащий все из них, но на самом деле D к A является низким). Вы можете использовать некоторый алгоритм, основанный на промежуточности. Это не бикластеризованная проблема, как кто-то предложил, так как матрица корреляции симметрична, и, следовательно, нет двусмысленности.
источник