Кластеризация данных смешанного типа с помощью R

19

Интересно, можно ли в R выполнить кластеризацию данных, имеющих смешанные переменные данных? Другими словами, у меня есть набор данных, содержащий как числовые, так и категориальные переменные внутри, и я нахожу лучший способ их кластеризации. В SPSS я бы использовал двухступенчатый кластер. Интересно, смогу ли я найти в R аналогичные методы? Мне сказали о пакете poLCA, но я не уверен ...

Джорджо Спедикато
источник
1
Разве SPSS TwoStep не предназначен для обработки больших наборов данных? (Я предоставляю ответ на связанный с этим вопрос здесь .) В противном случае, будет ли мой ответ на Можно ли применить анализ основных компонентов к наборам данных, содержащим сочетание непрерывных и категориальных переменных? быть какой-либо помощи?
ЧЛ
В кластере пакетов R есть маргаритка, которая создаст матрицу различий для смешанных данных (коэффициент подобия Гауэра). Тогда вы можете использовать ? Agnes или другие функции кластеризации.
Ронда
1
Не путайте метод с реализацией. Сначала ищите алгоритм кластеризации, который имеет смысл. Затем найдите пакет R, который его реализует.
борец с тенью
Gower сходство может быть использовано.
ttnphns
@gung недавно закрыл очень похожий вопрос, который я задал. Мне сказали, что мой вопрос был не по теме, потому что он был преимущественно о программном обеспечении. Это похоже на программное обеспечение. Мне было бы очень интересно узнать, почему правила здесь применяются непоследовательно. Имейте в виду, я думаю, что вопрос является информативным, но правила должны быть правилами.
Вейвен Нг

Ответы:

8

Это может прийти поздно, но попробуйте klaR ( http://cran.r-project.org/web/packages/klaR/index.html )

install.packages("klar")

Он использует неиерархический алгоритм k-режимов, который основан на простом сопоставлении в качестве функции расстояния, поэтому расстояние δ между переменной m двух точек данных x и y определяется как

δ(xm,ym)={1xmym,0otherwise

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

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

victor_v
источник
7

Другим привлекательным способом обработки переменных смешанных типов является использование матрицы проксимити / подобия из Random Forests: http://cogns.northwestern.edu/cbmg/LiawAndWiener2002.pdf . Это облегчает унифицированный способ одинаковой обработки всех переменных (тем не менее, помните о проблеме смещения выбора переменных). С другой стороны, на самом деле не существует золотого универсального способа определения расстояния для переменных смешанных типов. Все зависит от контекста приложения.

ЭТОТ
источник
4

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

сигнальная башня
источник
1
Как бы вы относились к числовым переменным в MCA? Используя дискретность?
ЧЛ
Существуют расширения MCA, которые могут включать непрерывные переменные, см., Например, анализ гомогенности
kjetil b halvorsen
3

Ну, вы, конечно, можете. Делая категориальные переменные искусственно числовыми. Или используя кластеризацию на основе матрицы расстояний (fpc, вероятно, может сделать это). Сначала вы должны попытаться ответить на вопрос: имеет ли это смысл?

Аноним-Мусс-Восстановить Монику
источник
3

jk

SG=i=1nwi,j,ksi,j,ki=1nwi,j,k
i

wi,j,k

si,j,k

  • wi,j,k

  • многозначные символы (номинальные или порядковые): 1 для равенства, 0 для остальных (эквивалент простого коэффициента сопоставления)

  • si,j,k=1|Xi,jXi,k|RiRii

SG

1SG

Энгельберт Буксбаум
источник
Можете ли вы определить, что такое «характер» (и «кардинальный характер») в вашем ответе? Под этим вы подразумеваете переменную / атрибут / функцию? Кроме того, я мог бы добавить, что Gower можно вычислять для порядковых переменных, не рассматривая их как номинальные («мультистатические»), см .
ttnphns
Caracter, переменная, функция - все это синонимы. Кардинал означает интервал или рациональную шкалу.
Энгельберт Буксбаум
Спасибо за разъяснение этого. Я просто спросил, потому что ваша терминология, по-видимому, не очень распространена в статистике или машинном обучении: «символ» необычен, а то, что вы называете «типом» переменной типа, обычно называют «масштабной» переменной, то есть «метрической» переменной, в отличие от категориальной. ,
ttnphns
1

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

Raghvendra
источник
1

Кластеризация k-прототипов могла бы быть более подходящей здесь. Он объединяет k-моды и k-средние и способен кластеризовать смешанные числовые / категориальные данные. Для R используйте пакет 'clustMixType'.

https://cran.r-project.org/web/packages/clustMixType/clustMixType.pdf

Prashanth
источник
0

VarSelLCM пакетные предложения

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

О CRAN , и описано больше в статье .

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

enter image description here

Радек
источник