Я дізнався, що, вибираючи декілька кластерів, слід шукати точку ліктя для різних значень K. Я побудував графіки значень inssss для значень k від 1 до 10, але я не бачу чіткого ліктьовий. Що ти робиш у такому випадку?
Я дізнався, що, вибираючи декілька кластерів, слід шукати точку ліктя для різних значень K. Я побудував графіки значень inssss для значень k від 1 до 10, але я не бачу чіткого ліктьовий. Що ти робиш у такому випадку?
Відповіді:
Можливо, ви використовуєте неправильний алгоритм для своєї проблеми.
K-засоби дуже чутливі до попередньої обробки. Якщо один атрибут має значно більший масштаб, ніж інші, він буде домінувати над результатом. Тоді ваш результат буде ефективно одновимірним
Що б ви не робили, вам потрібно перевірити свої результати чимось іншим, ніж починати з числа, наприклад, SSQ. Замість цього розгляньте візуалізацію .
Візуалізація також може сказати вам, що, можливо, у ваших даних є лише один кластер .
Один із способів - це вручну перевірити членів у ваших кластерах на предмет конкретного k, щоб побачити, чи є в групуванні сенс (вони відрізняються?). Це можна зробити за допомогою таблиць на випадок надзвичайних ситуацій та умовних засобів. Зробіть це для різних k і ви можете визначити, яке значення підходить.
Менш суб'єктивним способом є використання значення силуету:
/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function
Це можна обчислити з вашим улюбленим програмним пакетом. За посиланням:
Цей метод просто порівнює внутрішньогрупову подібність з подібністю найближчої групи. Якщо середнє відстань будь-якого члена даних до інших членів того ж кластера вище середнього відстані до деяких інших членів кластера, то це значення негативне і кластеризація не є успішною. З іншого боку, значення силуету, близькі до 1, вказують на успішну операцію кластеризації. 0,5 не є точним показником для кластеризації.
contingency tables and conditional means
Це ще більше містично. Що мені робити з ними, щоб "суб'єктивно" досягти хорошого k?
Як правило, ви можете врахувати:
Ми можемо використовувати пакет NbClust, щоб знайти найбільш оптимальне значення k. Він містить 30 показників для визначення кількості кластерів та пропонує найкращий результат.
NbClust (дані = df, відстань = "евклідовий", min.nc = 2, max.nc = 15, метод = "kmeans", індекс = "всі")