Выбор алгоритма кластеризации для набора данных, содержащего как категориальные, так и числовые переменные - PullRequest
0 голосов
/ 26 апреля 2018

Я новичок в машинном обучении и пытаюсь сделать сегментацию с помощью алгоритмов кластеризации. Однако, поскольку в моем наборе данных есть как категориальные переменные (такие как пол, семейное положение, предпочтительная платформа социальных сетей и т. Д.), Так и числовые переменные (средние расходы, возраст, доход и т. Д.), Я не мог решить, на каких алгоритмах стоит сосредоточиться. Какой из них мне следует попробовать: нечеткий c означает, k-medoids или скрытый класс, чтобы сравнить с k-means ++? какие из них дадут лучшие результаты для смешанных наборов данных такого типа?

Бонусный вопрос: я должен попытаться сделать кластеризацию без уменьшения размерности? или я должен использовать PCA или K-PCA в любом случае, чтобы уменьшить размеры? Кроме того, как я могу понять и интерпретировать результаты без визуализации, если набор данных имеет более 3 измерений?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Лучше всего попробовать иерархическую агломерационную кластеризацию с метрикой расстояния, такой как показатель Гауэра.

Смешанные данные с разными шкалами обычно не работают статистически значимым образом. У вас слишком много весов для выбора, поэтому статистически обоснованный результат не будет, но в значительной степени результат вашего веса. Поэтому невозможно утверждать, что какой-то результат является «истинной» кластеризацией. Не ожидайте, что результаты будут очень хорошими.

0 голосов
/ 26 апреля 2018

Обычно, когда у вас есть категориальные данные, вы пытаетесь закодировать их в «числовое» значение. Теперь в вашем случае рассмотрим социальные медиа: твиттер, фейсбук, гугл-плюс. У вас может возникнуть желание закодировать их как твиттер: 0, facebook: 1, google-plus: 2. Но у этой кодировки есть проблема: он подразумевает, что алгоритм машинного обучения google-plus вдвое больше, чем facebook, а это не то, что вам нужно.

Введите одно горячее кодирование : оно преобразует категориальные данные в вектор битов. Таким образом, у вас будет количество бит, равное количеству категорий, присутствующих в ваших данных:

social media  |  binary vector (bits in order: is_twitter, is_facebook, is_google_plus)
twitter       |  1, 0, 0
facebook      |  0, 1, 0
google-plus   |  0, 0, 1

Теперь вы можете применять любой алгоритм ML, поскольку все ваши данные являются числовыми.

Подробнее здесь: Одна горячая кодировка в Scikit

...