Я узнал, что при выборе количества кластеров, вы должны искать точку сгиба для разных значений K. Я построил значения Inss для значений k от 1 до 10, но я не вижу четкого локоть. Что вы делаете в таком случае?
Я узнал, что при выборе количества кластеров, вы должны искать точку сгиба для разных значений K. Я построил значения Inss для значений k от 1 до 10, но я не вижу четкого локоть. Что вы делаете в таком случае?
Ответы:
Возможно, вы используете неправильный алгоритм для вашей проблемы.
K-means очень чувствителен к предварительной обработке. Если один атрибут имеет гораздо больший масштаб, чем другие, он будет доминировать в выводе. Ваш вывод будет эффективно одномерным
Что бы вы ни делали, вам нужно проверять свои результаты чем-то другим, не начиная с номера, такого как SSQ. Вместо этого рассмотрите визуализацию .
Визуализация также может сказать вам, что, возможно, в ваших данных есть только один кластер .
Один из способов - вручную проверить членов в ваших кластерах на предмет определенного k, чтобы увидеть, имеют ли смысл группировки (различимы ли они?). Это можно сделать с помощью таблиц сопряженности и условных средств. Сделайте это для множества k, и вы сможете определить, какое значение подходит.
Менее субъективный способ - использовать значение силуэта:
/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function
Это может быть вычислено с вашим любимым программным пакетом. По ссылке:
Этот метод просто сравнивает внутригрупповое сходство с ближайшим сходством группы. Если среднее расстояние какого-либо элемента данных до других членов того же кластера превышает среднее расстояние до некоторых других элементов кластера, это значение будет отрицательным, и кластеризация не будет успешной. С другой стороны, значения silhuette, близкие к 1, указывают на успешную операцию кластеризации. 0.5 не является точной мерой для кластеризации.
contingency tables and conditional means
Это еще мистическое. Что мне с ними делать, "субъективно" прийти к хорошему k?
Как правило, вы можете рассмотреть:
Мы можем использовать пакет NbClust, чтобы найти наиболее оптимальное значение k. Он предоставляет 30 показателей для определения количества кластеров и предлагает лучший результат.
NbClust (data = df, distance = "евклидово", min.nc = 2, max.nc = 15, method = "kmeans", index = "all")