215 похожих чатов

Всем привет, подскажите, как вычислить оптимальное количество кластеров для KMeans,

какая методология у этих расчетов, из чего исходить?

3 ответов

12 просмотров

как минимум можно на elbow method посмотреть а вообще погуглить что-то типа kmeans optimal number of clusters

Silhouette score, например

Используем метод локтя, гэп-статистику и силуэтный коэффициент. В методе локтя мы рисуем график уменьшения внутрикластерной неоднородности по мере увеличения количества кластеров и в итоге выбираем такое количество кластеров, после которого не наблюдается значительного изменения (уменьшения) внутрикластерной неоднородности. Локоть – это точка, где внутрикластерная неоднородность выравнивается после крутого спуска, отсюда и название метода. Что касается гэп-статистики, мы сравниваем общую внутрикластерную дисперсию для различных значений k c ее ожидаемым значением согласно равномерному распределению данных. Оптимальным количеством кластеров будет значение, максимизирующее гэп-статистику. Потом нужна верификация. Идея в следующем – сделали кластеризацию на 5 кластеров и посчитали скор. Как понять хороший это скор в целом или нет? Берете и случайным образом назначаете каждой записи ClusterID от 0 до 4 (тоже 5). Считаете скор. И теперь вы можете сравнить, насколько ваш скор лучше случайного. Сравнение с бейслайном – наше все. Если известны метки, используем вместо правильности скорректированный индекс Рэнда. Правильность требует точного соответствия меток кластеров, присвоенных точкам, фактическим меткам классов (ground truth), но проблема в том, что метки могут быть просто переставлены. Если же очень хочется правильность, делаем ее перестановочный вариант. Тетрадку, как делать, кинул в личку. Потом нужно сравнение средних значений признаков в отдельных кластерах со средними значениями в целом по всей совокупности объектов. Чем больше отличие групповых средних от общего среднего значения, тем качественнее кластеризация. Для проверки существенности различий в средних используют t-критерий Стьюдента. Также проверяем воспроизводимость кластеров. Выполняем кластеризацию на всем наборе, получаем результаты кластеризации на всем наборе. Случайно извлекаем подмножество наблюдений, выполняем кластеризацию на подмножестве, получаем результаты кластеризации на подмножестве. Сравниваем результаты. Как вариант, разбиваем набор на обучающую и тестовую выборки, выполняем кластеризации и сравниваем результаты. Тут есть тонкий момент. Размер подмножества должен составлять 40-50%. При слишком большом размере подмножества (80%) почти всегда воспроизводятся те же самые результаты кластеризации (оптимистичная оценка), а при слишком маленьком размере подмножества (5-10%) очень редко воспроизводятся те же самые результаты кластеризации (оптимистичная оценка), потому что нарушается структура кластеров. Разбиение на обучающую и тестовую выборки обычно составляет 50%/50% или 60%/40%.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта