Измерение различий внутри кластера - Kmodes - PullRequest
0 голосов
/ 26 сентября 2018

Я делал кластеризацию с категориальными данными.Я наткнулся на алгоритм Kmodes и обнаружил, что он идеально подходит для моих требований.Теперь я хочу измерить различия в кластере для всех кластеров.Я думаю измерить различие с кластером и максимально уменьшить его.Есть ли способ сделать это?В качестве альтернативы, есть ли способ проверить, насколько эффективно мои данные были кластеризованы?Поскольку мои данные категоричны, способы, которые рассматривают расстояние как метрику, могут оказаться бесполезными.

1 Ответ

0 голосов
/ 26 сентября 2018

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

d(i, j) = (p - m) / p

, где:

  • p - количество классов / категорий в ваших данных
  • m - это количество совпадений между выборками i и j

Например, если ваши данные имеют 3 категориальных признака и выборки, i и j выглядят следующим образом:

    Feature1  Feature2  Feature3
i    x          y          z
j    x          w          z

Итак, у нас есть 3 категориальных признака, поэтому p=3 и из этих трех два признака имеют одинаковые значения для выборок i и j, значит m=2.Поэтому

d(i,j) = (3 - 2) / 3
d(i,j) = 0.33

Другая альтернатива - преобразовать ваши категориальные переменные в функции с горячим кодированием и затем вычислить jaccard simmilarity .

Таким образом, чтобы измерить различие в кластере, вы можете рассчитать попарно различие между каждым объектом в вашем кластере, а затем взять его среднее значение.

На основе этих показателей вы также можете использовать Silhoutte Score для оценки качества вашей кластеризации (но вам нужно взять его с небольшим количеством соли, иногда оценка может быть хорошей, в то время как кластеризация может не соответствовать вашим ожиданиям).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...