Kmodes VS однократное кодирование + kmeans для категориальных данных?

Я изучаю возможность кластеризации некоторых категориальных данных с помощью python. В настоящее время у меня есть 8 функций, каждая из которых имеет примерно 3-10 уровней.

Как я понял, в этой структуре можно использовать как однократное кодирование с kmeans, так и кммоды, причем kmeans может быть неидеальным с огромными комбинациями функций / уровней из-за проблем с проклятием размерности.

Это правильно?

На данный момент я бы следовал маршруту kmeans, потому что это дало бы мне возможность добавлять некоторые числовые функции, а вычисление статистики силуэта и оценка оптимального количества кластеров кажутся намного проще.

Имеет ли это смысл? Есть ли у вас какие-либо предложения по ситуациям, в которых один подход следует предпочесть другому?

Спасибо

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
0
6 447
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Существуют также варианты, в которых используется подход k-модов для категориальных атрибутов и среднее значение для непрерывных атрибутов.

K-modes имеет большое преимущество перед one-hot+k-means: его можно интерпретировать. Каждый кластер имеет одно явное категориальное значение для прототипа. С k-средними, из-за цели SSQ, однократные переменные имеют наименьшие ошибки, если они находятся между значениями. Это нежелательно.

Обратитесь к этой статье Хуанга (автора Kmodes). http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.83&rep=rep1&type=pdf

  1. Он упоминает, что если мы используем Kmeans + одно горячее кодирование, это значительно увеличит размер набора данных, если категориальные атрибуты имеют большое количество категорий. Это сделает Kmeans вычислительно затратным. Так что да, ваша идея о проклятии размерности верна.

  2. Также кластерные средства не будут иметь смысла, поскольку 0 и 1 не являются реальными значениями данных. Kmodes, с другой стороны, создает режимы кластеров, которые являются реальными данными и, следовательно, делают кластеры интерпретируемыми.

Для ваших требований как к числовым, так и к категориальным атрибутам, посмотрите на метод k-prototypes, который объединяет kmeans и kmodes с использованием балансирующего весового коэффициента. (Опять же объяснено в статье).

Пример кода на питоне

Другие вопросы по теме