Алгоритм кластеризации с дискретными и непрерывными атрибутами?
-
06-07-2019 - |
Вопрос
Кто-нибудь знает хороший алгоритм для выполнения кластеризации на дискретных и непрерывных атрибутах? Я работаю над проблемой идентификации группы схожих клиентов, и у каждого клиента есть как дискретные, так и непрерывные атрибуты (тип клиентов, сумма дохода, полученного этим клиентом, географическое положение и т. Д.)
Традиционно алгоритм, подобный K-means или EM, работает для непрерывных атрибутов, что если у нас есть смесь непрерывных и дискретных атрибутов?
Решение
Если я правильно помню, алгоритм COBWEB может работать с дискретными атрибутами.
И вы также можете делать различные «трюки» с дискретными атрибутами для создания значимых метрик расстояния.
Вы можете использовать Google для кластеризации категориальных / дискретных атрибутов, один из первых хитов: ROCK: надежный алгоритм кластеризации для категориальных атрибутов .
Другие советы
R - отличный инструмент для кластеризации. Стандартный подход заключается в вычислении матрицы различий для ваших смешанных данных с использованием daisy
, а затем кластеризовать эту матрицу с помощью agnes
.
cba
в CRAN включает функцию кластеризации на двоичных предикторах на основе ROCK.
Вы также можете посмотреть на распространение сродства в качестве возможного решения. Но чтобы преодолеть непрерывную / дискретную дилемму, вам нужно определить функцию, которая оценивает дискретные состояния.
Я на самом деле представлял бы пары дискретных атрибутов пользователям и просил их определить их близость. Вы бы представили им шкалу, идущую от [синоним..очень иностранный] или похожую. Если многие люди сделают это, вы получите общепринятую функцию близости для нелинейных значений атрибутов.
Как насчет преобразования каждого из ваших категориальных атрибутов в серию N-1 атрибутов двоичного индикатора (где N - количество категорий)?
Вы не должны бояться высокой размерности, как разреженного представления (например, может использоваться SequentialAccessSparseVector
mahout).
Как только вы это сделаете, вы можете использовать классические K-средства или любой другой стандартный алгоритм кластеризации только для чисел.