KMeans кластеризирует несбалансированные данные - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть набор данных с 50 функциями (c1, c2, c3 ...), с более чем 80 000 строк.

Каждая строка содержит нормализованные числовые значения (в диапазоне 0-1). Это на самом деле нормализованная фиктивная переменная, в которой некоторые строки имеют только несколько функций, 3-4 (т. Е. 0 присваивается, если значения нет). Большинство строк имеют около 10-20 функций.

Я использовал KMeans для кластеризации данных, всегда получая кластер с большим количеством членов. После анализа я заметил, что строки с менее чем 4 объектами имеют тенденцию объединяться в кластеры, а это не то, чего я хочу.

Есть ли в любом случае сбалансировать кластеры?

1 Ответ

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

Это не является частью цели k-средних для создания сбалансированных кластеров. На самом деле, решения со сбалансированными кластерами могут быть произвольно плохими (просто рассмотрим набор данных с дубликатами). K-means минимизирует сумму квадратов, и размещение этих объектов в одном кластере представляется полезным.

То, что вы видите, является типичным эффектом использования k-средних для разреженных, не непрерывных данных. Закодированные категориальные переменные, двоичные переменные и разреженные данные просто не очень подходят для использования k-средних означает . Кроме того, вам, вероятно, также необходимо тщательно взвешивать переменные.

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

...