Кластеризація 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.