Алгоритм кластеризации с дискретными и непрерывными атрибутами?

StackOverflow https://stackoverflow.com/questions/829644

Вопрос

Кто-нибудь знает хороший алгоритм для выполнения кластеризации на дискретных и непрерывных атрибутах? Я работаю над проблемой идентификации группы схожих клиентов, и у каждого клиента есть как дискретные, так и непрерывные атрибуты (тип клиентов, сумма дохода, полученного этим клиентом, географическое положение и т. Д.)

Традиционно алгоритм, подобный K-means или EM, работает для непрерывных атрибутов, что если у нас есть смесь непрерывных и дискретных атрибутов?

Это было полезно?

Решение

Если я правильно помню, алгоритм COBWEB может работать с дискретными атрибутами.

И вы также можете делать различные «трюки» с дискретными атрибутами для создания значимых метрик расстояния.

Вы можете использовать Google для кластеризации категориальных / дискретных атрибутов, один из первых хитов: ROCK: надежный алгоритм кластеризации для категориальных атрибутов .

Другие советы

R - отличный инструмент для кластеризации. Стандартный подход заключается в вычислении матрицы различий для ваших смешанных данных с использованием daisy , а затем кластеризовать эту матрицу с помощью agnes .

cba в CRAN включает функцию кластеризации на двоичных предикторах на основе ROCK.

Вы также можете посмотреть на распространение сродства в качестве возможного решения. Но чтобы преодолеть непрерывную / дискретную дилемму, вам нужно определить функцию, которая оценивает дискретные состояния.

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

Как насчет преобразования каждого из ваших категориальных атрибутов в серию N-1 атрибутов двоичного индикатора (где N - количество категорий)? Вы не должны бояться высокой размерности, как разреженного представления (например, может использоваться SequentialAccessSparseVector mahout). Как только вы это сделаете, вы можете использовать классические K-средства или любой другой стандартный алгоритм кластеризации только для чисел.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top