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


16

У мене є набір даних, я хочу створити кластери для цих даних на основі лише однієї змінної (відсутні відсутні значення). Я хочу створити 3 кластери на основі цієї однієї змінної.

Який алгоритм кластеризації використовувати, k-засоби, EM, DBSCAN тощо?

Моє головне питання, в яких обставинах я повинен використовувати k-засоби над ЕМ або ЕМ над k-засобами?


1
Алгоритм ЕМ - це інструмент загального призначення для визначення максимальної ймовірності з відсутніми даними - чи можете ви бути більш конкретними щодо того, як це "алгоритм кластеризації"?
Макрос

Я використовую Weka як інструмент, а в алгоритмі кластеризації ЕМ перераховується як алгоритм. Мені дуже шкода за питання, що кульгає, я новачок у пошуку даних.
Алі

Я знаю, що алгоритм ЕМ використовується для оцінки максимальної вірогідності прихованих змінних моделей (які можна вважати "відсутніми даними"), а латентні змінні часто використовуються для моделювання кластеризації. Можливо, саме це мається на увазі.
Макрос

@macro: ви можете побачити тут: stat.washington.edu/mclust для початку.
user603

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

Відповіді:


11

Алгоритм K-засобів та алгоритм EM будуть досить схожими для 1D кластеризації.

У K-значенні ви починаєте з здогадки, де знаходяться засоби, і присвоюєте кожну точку кластеру з найближчим середнім значенням, потім ви перераховуєте засоби (і відхилення) на основі поточних призначень точок, потім оновлюєте присвоєння балів, потім оновлюєте значення ...

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

Основна відмінність полягає в тому, що присвоєння точок кластерам в K-значенні - це все або нічого, де ЕМ дає пропорції / ймовірність членства в групі (один бал може розглядатися як 80% ймовірність перебування в групі А, 18% ймовірність перебування в групі В, і 2% ймовірність опинитися в групі С). Якщо між групами є багато відокремлення, то два методи дадуть досить схожі результати. Але якщо є достатня кількість перекриття, то ЕМ, ймовірно, дасть більш значущі результати (навіть більше, якщо дисперсія / стандартне відхилення представляє інтерес). Але якщо все, що вам цікаво, це присвоєння членства в групі без піклування про параметри, то K-засоби, ймовірно, простіші.

Чому б не зробити і те, і інше подивитися, наскільки відповіді різні? якщо вони схожі, тоді перейдіть з більш простим, якщо вони різні, то вирішіть порівняти групування з даними та зовнішніми знаннями.


Дякуючи грегу, що ваш пост допоміг, я застосував і те, і здається, що ЕМ генерував кращі кластери, ніж середній k. (Я думаю, що це головним чином тому, що дані, які я маю, є безперервними і немає прогалин). Я мало збентежений, оскільки у мене є лише 1D дані, то, мабуть, я повинен робити binning, щоб класифікувати дані. Що ти думаєш? Що саме ви маєте на увазі під параметрами? Чи це стосується атрибутів екземпляра? Дякую Алі
Алі

Одне лише Е. М. здається недостатнім. Вам потрібно припущення про розподіл базових розподілів суміші.
tomka

2

ЕМ краща за k-означає за результатами.

Однак K-засоби мають більш швидкий час роботи.

Вони дадуть подібні результати, якщо стандартні матриці відхилення / коваріації приблизно рівні. Якщо ви підозрюєте, що це правда, використовуйте k-засоби.

DBSCAN використовується, коли дані не є гауссовими. Якщо ви використовуєте одновимірні дані, це, як правило, не застосовується, оскільки гауссова апроксимація, як правило, діє в 1 вимірі.


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: з гістограмою?
nico

1
Вибачте, але я все ще не слідкую. Як можна використовувати гістограму для групування спостережень? (Я припускаю, що питання, яке я можу задати, це насправді, як можна виявити скупчення в гістограмі? Чи подібне це до спектрального пікового збору?)
Алі,

5
@composer Використання гістограми чи навіть ядра даних даних, як правило, не є "простим" способом кластеризації. Якщо ви хочете піти цією дорогою, вам потрібно підходити до кінцевої моделі суміші . Якщо ви просто хочете, що може запропонувати випадковий вигляд гістограми, використовуйте засоби K (також відомий як метод Дженкса , популярний серед картографів).
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.