Як визначитися з правильною кількістю кластерів?


54

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

Я використовую MATLAB для наукових обчислень, де перегляд сюжетних силуетів подається як спосіб вирішити питання, про яке йде мова . Однак мене більше цікавлять байєсівські підходи. Будь-які пропозиції вдячні.


2
Приємне запитання ...


Під візуалізацією для кластеризації існує (ах) спосіб зобразити k-кластери та побачити ефект різних k в одному кадрі, використовуючи MST.
denis

Я відповів на це питання з півдюжини методів в Rпротягом тут
Бен

1
Визначення "найкращого" числа k кластерів передбачає порівняння кластерних рішень з різними k - яке рішення "краще". Зважаючи на це, завдання виглядає аналогічно порівнянню методів кластеризації - що "краще" для ваших даних. Загальні вказівки тут .
ttnphns

Відповіді:


28

Про це кілька разів запитували про stackoverflow: тут , тут і тут . Ви можете поглянути на те, що думає натовп з цього питання (або невеликий його варіант).

Дозвольте також скопіювати власну відповідь на це запитання на stackoverflow.com:

На жаль, немає способу автоматичного встановлення "правильного" K, а також визначення того, що таке "правильно". Не існує принципового статистичного методу, простого або складного, який може встановити "правильний K". Є евристика, правила, які іноді працюють, іноді не відповідають.

Ситуація є загальнішою, оскільки у багатьох методах кластеризації є такі параметри, і я вважаю, що це велика відкрита проблема в кластерному / непідконтрольному навчальному співтоваристві навчальному закладі.


+1 Прочитавши це - мені здається таким інтуїтивним .... але я мушу сказати, що я ніколи раніше про це не думав. що насправді проблема вибору кількості ПК у PCA рівнозначна проблемі вибору кількості кластерів у K-середньому ...
Dov

2
@Dov ці дві речі не зовсім рівнозначні. Існують конкретні заходи, які можуть бути використані для дослідження якості рішення PCA (найбільш помітна помилка реконструкції, але також і% відхилення дисперсії тощо), і вони, як правило, узгоджуються. Однак у кластеризації часто немає жодної "правильної відповіді" - одна кластеризація може бути кращою за іншу за одним метрикою, а зворотний може бути істинним, використовуючи інший показник. І в деяких ситуаціях два різних кластеризації можуть бути однаково вірогідними за однією метрикою.
tdc

@tdc, але чи не це en.wikipedia.org/wiki/… більш-менш схоже на це вдосконалене результатів.com/ docs/WebSiteDocs/PCA/… ?
Дов.

2
@Dov Так, вони "більш-менш" схожі між собою, але я просто говорив, що проблема вибору кількості кластерів набагато загрожує, ніж вибір кількості ПК - тобто вони не "еквівалентні".
tdc

1
+1 Ви маєте рацію. Ми начебто вводимо якусь іншу модель чи припущення, щоб вирішити кращий k, але тоді виявляється питання, чому саме ця модель чи припущення найкраща ...
petrichor

19

По-перше, застереження. У кластеризації часто немає жодної "правильної відповіді" - одна кластеризація може бути кращою за іншу за одним метрикою, а зворотний може бути істинним, використовуючи інший показник. І в деяких ситуаціях два різних кластеризації можуть бути однаково вірогідними за однією метрикою.

Сказавши це, ви, можливо, захочете ознайомитись з процесами Діріхле . Також дивіться цей підручник .

Якщо ви починаєте з моделі Гауссової суміші, у вас є та сама проблема, що і з k-засобами - що вам потрібно вибрати кількість кластерів. Ви можете використовувати моделі доказів, але це не буде надійним у цьому випадку. Таким чином, фокус полягає у використанні процесу Dirichlet перед компонентами суміші, який потім дозволяє мати потенційно нескінченну кількість компонентів суміші, але модель (як правило) автоматично знайде "правильну" кількість компонентів (під припущеннями модель).

Зауважте, що вам досі потрібно вказати параметр концентрації процесу Діріхле. Для малих значень зразки з ДП, ймовірно, складаються з невеликої кількості атомних заходів з великою вагою. При великих значеннях більшість зразків, ймовірно, будуть виразними (концентрованими). Ви можете використовувати гіпер-пріоритет за параметром концентрації, а потім вивести його значення з даних, і цей гіпер-пріор може бути відповідним розпливчастим, щоб дозволити багато різних можливих значень. Однак, отримавши достатньо даних, параметр концентрації перестане бути таким важливим, і цей гіперпрем може бути знижений.ααα


1
Процес Діріхле за яким параметром концентрації? Це свого роду еквівалент тому самому оригінальному питанню, k - означає, під яким k? Хоча я згоден, що ми краще розуміємо розподіл Direchlet, що поведінка якогось складного алгоритму щодо деяких реальних даних.
carlosdc

@carlosdc Хороший момент, я оновив відповідь, щоб включити трохи дискусій про параметр концентрації
tdc

1
На мій досвід, набагато простіше засвоїти параметр концентрації безперервного значення, наприклад альфа, ніж визначити кількість кластерів у моделі кінцевої суміші. Якщо ви хочете дотримуватися моделі з кінцевою сумішшю і взяти байєсівський хід, відбувається оборотний стрибок MCMC ( onlinelibrary.wiley.com/doi/10.1111/1467-9868.00095/ab Abstract )

1
Чудова відповідь. Я додав би статтю « Перегляд K-засобів: нові алгоритми через байєсівські непараметрики» . Що дає простий "безперервний" підхід до K-Means. Тоді легко, використовуючи оптимізацію, знайти оптимальне значення.
Рой

9

Я використовую метод Лікоть :

  • Почніть з K = 2, і продовжуйте збільшувати його на кожному кроці по 1, обчислюючи свої кластери та вартість, що йде на навчання. При деякому значенні для K вартість різко падає, і після цього вона досягає плато, коли ви збільшуєте її далі. Це значення K, яке ви хочете.

Обґрунтування полягає в тому, що після цього ви збільшуєте кількість кластерів, але новий кластер знаходиться поблизу деяких існуючих.


Це звучить як принцип, який оцінює метод L (див. Мою відповідь).
winwaed

6

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

Якщо вам потрібно його автоматизувати, ви можете додати штраф до збільшення k та обчислити оптимальний кластер таким чином. І тоді ви просто набираєте вагу k залежно від того, чи хочете ви тонну скупчень або дуже мало.



5

Мені вдалося скористатися "Методом L" для визначення кількості кластерів у географічному застосуванні (тобто, по суті, це проблема 2d, хоча технічно не євклідова).

Тут описаний метод L: Визначення кількості кластерів / сегментів в ієрархічній кластеризації / Алгоритми сегментації Стен Сальвадор та Філіп Чан

По суті це оцінює придатність для різних значень k. Графік у формі "L" видно з оптимальним значенням k, представленим коліном на графіку. Для знаходження точки коліна використовується простий підрахунок розміщення міні-квадратів з двома лініями.

Я знайшов метод дуже повільним, тому що ітеративні k-засоби повинні бути обчислені для кожного значення k. Також я виявив, що k-засоби найкраще працювали з декількома запусками та вибирали найкращі в кінці. Хоча кожна точка даних мала лише два виміри, просту піфагорійську відстань не вдалося використати. Тож це дуже багато підрахунків.

Однією думкою є пропустити будь-яке інше значення k (скажімо) до половини обчислень та / або зменшити кількість ітерацій k-значень, а потім трохи згладити отриману криву для отримання більш точного пристосування. Я запитав про це в StackOverflow - IMHO, питання згладжування залишається відкритим дослідницьким питанням.


4

Вам потрібно переглянути, що означає k-означає. Він намагається знайти оптимальний розподіл Вороного даних, встановлених на комірки. Клітини Вороного - це клітини дивної форми, ортогональна структура триангуляції Делоне.k

Але що робити, якщо ваш набір даних насправді не вписується у схему Вороного?

Швидше за все, фактичні кластери будуть не дуже змістовними. Однак вони все одно можуть працювати на те, що ви робите. Навіть розбивши «справжній» кластер на дві частини, оскільки ваш занадто високий, результат може працювати дуже добре, наприклад, для класифікації. Тож я б сказав: найкращий - це найкращий , який найкраще працює для вашої конкретної задачі.kkk

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


3
Хоча опис K-засобів у першому абзаці не є помилковим, це може ввести в оману деяких людей прирівнювати цей метод до поділу Вороного на основі вихідних даних. Це не так: розділ заснований на розташуванні кластерних засобів, які можуть (і зазвичай не будуть) збігатися з будь-якими вихідними даними.
whuber

3

Загалом ви можете вибрати кількість кластерів у двох різних контурах.

  1. на основі знань: ви повинні мати кілька ідей, скільки кластерів вам потрібен з точки зору бізнесу. Наприклад, ви кластеризуєте клієнтів, ви повинні запитати себе, отримавши цих клієнтів, що мені робити далі? Можливо, у вас буде по-різному лікування для різних кластерів? (наприклад, реклама по електронній пошті чи телефону). Тоді скільки можливих методів лікування ви плануєте? У цьому прикладі ви вибираєте, скажімо, 100 кластерів не матиме занадто великого сенсу.

  2. На основі даних: більша кількість кластерів є надмірною і менша кількість кластерів є недостатньою. Ви завжди можете розділити дані навпіл і запустити перехресну перевірку, щоб побачити, скільки кластерів хороші. Зауважте, у кластеризації у вас все ще функція втрат, подібно до контрольованих параметрів.

Нарешті, ви завжди повинні поєднувати в реальному світі керовані знаннями та керованими даними.


2

Оскільки це ще ніхто не вказував, я думав, що поділюсь цим. Існує метод, званий X-засобом ( див. Це посилання ), який оцінює належну кількість кластерів, використовуючи байєсівський критерій інформації (BIC). По суті, це було б як спробувати K засоби з різними Ks, обчислення BIC для кожного K та вибір кращого K. Цей алгоритм робить це ефективно.

Також є реалізація Weka , детальну інформацію про яку можна знайти тут .


0

Інший підхід полягає у використанні еволюційного алгоритму, індивіди якого мають хромосоми різної довжини. Кожна людина - це рішення кандидата: кожен несе координати центроїдів. Кількість центроїдів та їх координати еволюціонують для того, щоб досягти рішення, яке дає найкращу оцінку кластеризації.

У цій роботі пояснюється алгоритм.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.