Кластеризация набора данных с дискретными и непрерывными переменными


33

У меня есть набор данных X, который имеет 10 измерений, 4 из которых являются дискретными значениями. Фактически, эти 4 дискретные переменные являются порядковыми, то есть более высокое значение подразумевает более высокую / лучшую семантику.

2 из этих дискретных переменных являются категориальными в том смысле, что для каждой из этих переменных расстояние, например, от 11 до 12, не совпадает с расстоянием от 5 до 6. В то время как более высокое значение переменной подразумевает большее в действительности, масштаб не обязательно линейный (на самом деле, он на самом деле не определен).

Мой вопрос:

  • Является ли хорошей идеей применить общий алгоритм кластеризации (например, K-средние, а затем гауссова смесь (GMM)) к этому набору данных, который содержит как дискретные, так и непрерывные переменные?

Если не:

  • Должен ли я удалить дискретные переменные и сосредоточиться только на непрерывных?
  • Должен ли я лучше дискретизировать непрерывные и использовать алгоритм кластеризации для дискретных данных?

3
Вам нужно найти хорошую меру расстояния (часто наиболее трудную задачу в кластеризации): если вы можете найти меру расстояния, которая правильно и точно описывает, насколько похожи (или нет) ваши элементы данных, то у вас не должно возникнуть никаких проблем.
Андрей

Говоря об этих двух категориальных переменных, вы фактически описали их как порядковые. А как насчет остальных 2 «порядковых» переменных? Чем они отличаются от тех?
ttnphns

Они также дискретны, но оба имеют значимую функцию расстояния, то есть они основаны на интервалах (если я не ошибаюсь в определении интервалов).
ptikobj

Ответы:


14

7

Раньше мне приходилось сталкиваться с такой проблемой, и я думаю, что может быть два интересных подхода:

  • Непрерывность: преобразуйте символьные атрибуты с помощью последовательности целых чисел. Есть несколько способов сделать это, все из которых описаны в этой статье . Вы можете попробовать алгоритмы NBF, VDM и MDV.

  • Дискретность: преобразование непрерывных атрибутов в символические значения. Опять же, много алгоритмов, и хорошей лекцией по этому вопросу была бы эта статья . Я полагаю, что наиболее часто используемый метод - это метод Холте 1R, но лучший способ узнать наверняка - взглянуть на кривые ROC с помощью таких алгоритмов, как EWD, EFD, ID, LD или NDD.

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

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


4

K-означает, очевидно, не имеет никакого смысла, поскольку он вычисляет средства (которые являются бессмысленными). То же самое касается GMM.

Возможно, вы захотите попробовать основанные на расстоянии алгоритмы кластеризации с соответствующими функциями расстояния, например, DBSCAN.

Основная задача - найти функцию расстояния!

Хотя вы можете поместить другую функцию расстояния в k-means, она все равно будет вычислять среднее значение, которое, вероятно, не имеет особого смысла (и, вероятно, портит функцию расстояния для дискретных значений).

Во всяком случае, сначала сосредоточиться на том, чтобы определить, что такое «похожий» . Затем кластер с использованием этого определения аналога!


2

Если вам удобно работать с дистанционной матрицей размера num_of_samples x num_of_samples, вы также можете использовать ее random forests.

Нажмите здесь для справочного документа под названием Unsupervised learning with random forest predictors.

Идея заключается в создании синтетического набора данных по shufflingзначениям в исходном наборе данных и обучении классификатору для разделения обоих. Во время классификации вы получите inter-sample distance matrix, на котором вы можете проверить свой любимый алгоритм кластеризации.


-2

Следует принять смешанный подход: 1) Использовать метод классификации (дерево решений C4.5) для классификации набора данных на 2 класса. 2) Как только это будет сделано, оставьте категориальные переменные и перейдите к непрерывным переменным для кластеризации.


Я не мог последовать вашему предложению. Какие два класса, и как это поможет?
KarthikS

Я думаю, что Swapnil Soni должен сказать, что когда мы используем метод классификации, чтобы классифицировать его на два класса. Затем мы можем использовать метку классификации в качестве двоичной переменной. Таким образом, вместо всех категориальных переменных вы получаете индикативную двоичную переменную, а затем ваш алгоритм кластеризации может продолжить работу с данными (состоящими из всех непрерывных плюс 1 двоичная переменная). Моя интерпретация может быть неправильной, хотя.
Тушаршар

прекрасно!
Swapnil Soni
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.