Кластеризация 1D данных


16

У меня есть набор данных, я хочу создать кластеры на этих данных на основе только одной переменной (нет пропущенных значений). Я хочу создать 3 кластера на основе этой одной переменной.

Какой алгоритм кластеризации использовать, k-means, EM, DBSCAN и т. Д.?

Мой главный вопрос заключается в том, при каких обстоятельствах я должен использовать k-средние над EM или EM над k-средними?


1
Алгоритм EM - это универсальный инструмент для оценки максимального правдоподобия с отсутствующими данными. Можете ли вы более подробно рассказать о том, как это «алгоритм кластеризации»?
Макрос

Я использую weka в качестве инструмента, и под алгоритмом кластеризации EM указан как алгоритм. Я прошу прощения за неубедительный вопрос, я новичок в области интеллектуального анализа данных.
Али

Я знаю, что EM-алгоритм используется для оценки максимального правдоподобия моделей скрытых переменных (которые можно рассматривать как «отсутствующие данные»), а скрытые переменные часто используются для моделирования кластеризации. Возможно, это то, что имеется в виду.
Макрос

@macro: вы можете посмотреть здесь: stat.washington.edu/mclust для начала.
user603

3
Какова цель кластеризации? Как и в большинстве статистических вопросов, существует множество ответов, и знание цели является важным руководством для выбора подходящих или хороших.
whuber

Ответы:


11

Алгоритм K-средних и алгоритм EM будут очень похожи для одномерной кластеризации.

В K-средних вы начинаете с предположения, где находятся средние значения, и присваиваете каждой точке кластер с ближайшим средним значением, затем заново вычисляете средние значения (и отклонения) на основе текущих назначений точек, затем обновляете назначение точек, затем обновляете значение ...

В EM вы также начинаете с предположения, где находятся средние значения, затем вычисляете ожидаемое значение назначений (по существу, вероятность того, что каждая точка находится в каждом кластере), затем вы обновляете предполагаемые средние (и отклонения), используя ожидаемые значения. в качестве весов, затем вычислить новые ожидаемые значения, а затем вычислить новые средства, ...

Основное отличие состоит в том, что распределение точек для кластеров в K-средних - это все или ничего, где EM дает пропорции / вероятность членства в группе (одна точка может рассматриваться как имеющая 80% вероятности нахождения в группе А, 18% вероятности быть в группе B, и 2% вероятность быть в группе C). Если между группами существует большое разделение, то два метода дадут довольно похожие результаты. Но если существует значительное перекрытие, то EM, вероятно, даст более значимые результаты (даже больше, если интерес представляет дисперсия / стандартное отклонение). Но если все, что вас волнует, это назначить членство в группе, не заботясь о параметрах, то K-means, вероятно, проще.

Почему бы не сделать оба и посмотреть, как разные ответы? если они похожи, то выбирайте более простой, если они отличаются, тогда решите сравнить группирование с данными и внешним знанием.


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

Хм ЭМ, кажется, недостаточно. Вам необходимо предположение о распределении базовых распределений смеси.
Томка

2

EM лучше, чем k-means с точки зрения результатов.

К-значит, однако, имеет более быстрое время выполнения.

Они будут давать аналогичные результаты, если матрицы стандартного отклонения / ковариации приблизительно равны. Если вы подозреваете, что это правда, используйте k-means.

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


0

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

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

выдаст:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

Что указывает на то, что предметы, близкие к определенной точке, в основном находятся в ее группе. Единственное, над чем стоит задуматься в этой технике, это переменная k, которая является фиксированным размером кластера :-).


-2

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

Или я здесь упускаю некоторые моменты?


5
Можете ли вы привести конкретный пример того, как группировать наблюдения на основе распределения переменной?
Али

@ composer314: с гистограммой?
Нико

1
Извините, но я все еще не следую. Как я могу использовать гистограмму для группировки связанных наблюдений? (Я предполагаю, что вопрос, который я могу задать, заключается в том, как на самом деле можно найти комки в гистограмме? Будет ли это похоже на выбор спектральных пиков?)
Али

5
@composer Использование гистограммы или даже сглаживания ядра данных обычно не является «простым» способом кластеризации. Если вы хотите пойти по этому пути, вам нужно подобрать модель конечной смеси . Если вы просто хотите, что может предложить случайный вид гистограммы, используйте K-средства (также известный как метод Дженкса , популярный среди картографов).
whuber
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.