Як сказати, чи достатньо "кластеризованих" даних для алгоритмів кластеризації для отримання значущих результатів?


78

Як ви могли б знати, якщо ваші (високомірні) дані демонструють достатню кластеризацію, щоб результати від kmeans або іншого алгоритму кластеризації насправді мали значення?

Зокрема, для алгоритму k-означає, на скільки має бути зменшення дисперсії всередині кластера, щоб фактичні результати кластеризації були значимими (а не помилковими)?

Чи має бути кластеризація очевидною, коли графічно зменшена форма даних будується, і чи є результати від kmeans (або інших методів) безглуздими, якщо кластеризацію неможливо візуалізувати?


1
Рукописні цифри є хорошим тестом для кластеризації: можна було б очікувати 10 добре розділених кластерів, але це зовсім не показує коліна при k = 10, принаймні в евклідовій метриці в 64d.
denis


2
Це питання пов'язане певною мірою з питанням, як перевірити достовірність результатів кластеризації та як вибрати "кращий" метод. Див., Наприклад, stats.stackexchange.com/q/195456/3277 .
ttnphns

Відповіді:


77

Про k-означає конкретно, ви можете використовувати статистику Gap. В основному, ідея полягає в обчисленні корисності міри кластеризації на основі середньої дисперсії порівняно з еталонним розподілом для збільшення кількості кластерів. Більше інформації можна знайти в оригінальному документі:

Тібшірані, Р., Уолтер, Г. та Хасті, Т. (2001). Оцінка кількості кластерів у наборі даних за допомогою статистики розриву . JR Statist. Соц. Б, 63 (2): 411-423.

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

Якщо ви не маєте жодного уявлення про те, що ви очікували б знайти, якщо було б лише шум, хорошим підходом є використання переустановки та вивчення стабільності кластерів. Іншими словами, переупорядкуйте свої дані (за допомогою завантажувальної програми або додавши до неї невеликий шум) та обчисліть "закритість" отриманих розділів, виміряну за подібністю Жакарда . Коротше кажучи, це дозволяє оцінити частоту, з якою подібні кластери були відновлені в даних. Цей метод легко доступний у пакеті fpc R як clusterboot(). Він приймає в якості вихідних даних або матрицю відстані і дозволяє застосовувати широкий спектр методів кластеризації (ієрархічні, k-засоби, нечіткі методи). Спосіб обговорюється в пов'язаних посиланнях:

Hennig, C. (2007) Кластерна оцінка стабільності кластера . Обчислювальна статистика та аналіз даних , 52, 258-271.

Hennig, C. (2008) Точка розчинення та стійкість ізоляції: критерії стійкості для загальних методів кластерного аналізу . Журнал багатоваріантного аналізу , 99, 1154-1176.

Нижче наведена невелика демонстрація з алгоритмом k-засобів.

sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
rnorm(n, mean[2],sd[2]))
xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
            sim.xy(100, c(2.5,0), c(.4,.2)),
            sim.xy(100, c(1.25,.5), c(.3,.2)))
library(fpc)
km.boot <- clusterboot(xy, B=20, bootmethod="boot",
                       clustermethod=kmeansCBI,
                       krange=3, seed=15555)

Результати в цьому штучному (і добре структурованому) наборі даних є досить позитивними, оскільки жоден із трьох кластерів ( krange) не був розведений у зразках, а середня схожість за Жаккардом у кластерній формі> 0,95 для всіх кластерів.

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

введіть тут опис зображення

Звичайно, ви можете поширити цю ідею на будь-який індекс достовірності: виберіть нову серію спостережень за допомогою завантажувальної програми (із заміною), обчисліть свою статистику (наприклад, ширина силуету, кофенетична кореляція, гамма Губерта в межах суми квадратів) для діапазону номери кластерів (наприклад, від 2 до 10), повторіть 100 або 500 разів і подивіться на блокплот вашої статистики як на функцію від кількості кластера.

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

Кофенетична кореляція коливається в межах від 0,6267 до 0,7511 із середнім значенням 0,7031 (500 зразків завантажувальної програми). Ширина силуету виявляється максимальною, якщо врахувати 3 кластери (медіана 0,8408, діапазон 0,7371-0,8769).

введіть тут опис зображення


Дякую за цю ДУЖЕ інформативну відповідь! Звучить як кластерна завантаження - саме те, що я шукаю. Дякую також за включення посилань.
xuexue

1
Деякі магічні числа для інтерпретації значень силуету: stats.stackexchange.com/a/12923/12359
Франк

1
Які команди (команди) ви використовували для створення цих діаграм у gif?
Тревіс Хетер

2
@Travis Зображення були збережені як окремі файли PNG, а потім перетворені в анімований GIF-файл за допомогою ImageMagick . Дивіться також цей пост .
chl

10

Один із способів швидкої візуалізації того, чи достатньо кластеризовані дані демонструють достатню кластеризацію, - це використання стовбурового стохастичного вбудовування сусідів ( t-SNE ). Він проектує дані в деякий низькомірний простір (наприклад, 2D, 3D) і робить досить непогану роботу щодо збереження структури кластерів, якщо такі є.

Наприклад, набір даних MNIST :

введіть тут опис зображення

Olivetti стикається з набором даних:

введіть тут опис зображення


1
Чи є спосіб застосувати грані (або будь-які зображення) в R?
Тревіс Хетер

1
@TravisHeeter Я не знаю
Франк Дернонкурт

3
Не кластеруйте прогнозовані дані tSNE. Дивіться, наприклад, цю відповідь: stats.stackexchange.com/a/264647/7828
-Mousse

9

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

Насправді методи кластеризації мають найбільшу цінність у пошуку кластерів, де людське око / розум не в змозі побачити кластери.

Проста відповідь: зробіть кластеризацію, а потім з’ясуйте, чи працювала вона (з будь-яким із критеріїв, що вас цікавлять, див. Також відповідь @ Jeff).


1
Так, і кластери - це не обов'язково приємні круглі групи точок, що в основному передбачає kmeans.
Уейн

@chl Ви створили це анімоване зображення за допомогою R?
Стефан Лоран

7

Коли результати взагалі значущі ? Зокрема k-означає результати?

Справа в тому, що k-засоби оптимізують певну математичну статистику. З цим немає жодного «змістовного».

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

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

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


@ Anonymous-Mousse І чи використовує випадок для 'рівномірного шуму розділення на k кластери'?
CodeFarmer

Немає жодної. Справа в тому, що k-засоби не дбають, він розподілить єдині дані на "кластери", тобто він виробляє безглузді кластери.
Аноні-Мус

6

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

"Значущий", як я впевнений, ви знаєте, дуже суб'єктивний. Тож чи достатньо хороша кластеризація, повністю залежить від того, чому вам потрібно спершу кластеризувати. Якщо ви намагаєтесь передбачити членство в групі, ймовірно, що будь-яка кластеризація буде краще, ніж випадковість (і не гірше), тому результати повинні бути певною мірою значущими.

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

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

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


3

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

kk

kk

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