Цель K-Means состоит в том, чтобы уменьшить дисперсию внутри кластера, и поскольку он вычисляет центроиды как среднюю точку кластера, необходимо использовать евклидово расстояние , чтобы правильно сходиться. Поэтому, если вы хотите абсолютно использовать K-Means, вам нужно убедиться, что ваши данные хорошо с ним работают.
Представление
K-Means и кластеризация в целом пытаются разделить данные на значимые группы, убедившись, что экземпляры в тех же кластерах похожи друг на друга. Следовательно, вам нужен хороший способ представления ваших данных, чтобы вы могли легко вычислить значимую меру сходства.
Использование горячего кодирования для категориальных переменных - хорошая идея, когда категории равноудалены друг от друга. Например, если у вас есть светло-синий, темно-синий и желтый цвета, использование однократного кодирования может не дать вам наилучших результатов, поскольку темно-синий и светло-синий скорее всего «ближе» друг к другу, чем к желтому.
Если категориальные значения не являются «равноудаленными» и могут быть упорядочены, вы также можете присвоить категориям числовое значение. Например, ребенок, подросток, взрослый, потенциально могут быть представлены как 0, 1 и 2. Это имело бы смысл, потому что подросток "ближе" к тому, чтобы быть ребенком, чем взрослый.
K-Medoids
Более общий подход к K-Means - это K-Medoids. K-Medoids работает аналогично K-Means, но главное отличие состоит в том, что центроид для каждого кластера определяется как точка, которая уменьшает сумму расстояний внутри кластера. Применение этого позволяет вам использовать любую меру расстояния, которую вы хотите, и, следовательно, вы можете создать свою собственную пользовательскую меру, которая будет учитывать, какие категории должны быть близкими или нет.