Это реализация алгоритма k-средних на Python, включая метод локтя и метод силуэта для выбора оптимального K.
K-means — популярный алгоритм кластеризации, используемый для разделения данных на K-кластеры. Он работает путем итеративного присвоения каждой точки данных ближайшему центроиду кластера, а затем пересчета центроида каждого кластера на основе назначенных ему точек данных. Процесс повторяется до сходимости.
Целью k-средних является минимизация суммы квадратов расстояний между каждой точкой данных и назначенным ей центроидом кластера. Целевую функцию можно записать как: i-th
точка данных в кластере j
, μj
— центроид кластера j
, а N
— общее количество точек данных.
Метод Elbow — это эвристика, используемая для определения оптимального количества кластеров в кластеризации K-Means. Метод отображает сумму квадратов расстояний между каждым наблюдением и назначенным ему центроидом как функцию количества кластеров. Точка «локоть» на графике указывает количество кластеров, в которых добавление дополнительных кластеров не приводит к значительному уменьшению суммы квадратов расстояний.
Метод локтя можно резюмировать следующими этапами:
Метод Silhouette — еще одна эвристика, используемая для определения оптимального количества кластеров в кластеризации K-Means. Метод измеряет качество назначения кластера каждого наблюдения путем расчета его коэффициента силуэта. Коэффициент силуэта варьируется от -1 до 1, где значение 1 указывает на то, что наблюдение хорошо кластеризовано, а значение -1 указывает на то, что наблюдение неправильно классифицировано. Формула для расчета коэффициента силуэта для точки данных i
: a(i)
— среднее расстояние между i
и всеми другими точками данных в его кластере, а b(i)
— минимальное среднее расстояние между i
и всеми остальными кластерами (т. е. кластером со следующим ближайшим центроидом). Коэффициент силуэта для всей кластеризации представляет собой среднее значение коэффициентов силуэта для всех точек данных.
Метод Silhouette можно резюмировать следующими этапами: