Про 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).