Кластеризация как метод сокращения измерений, и как выбрать представителей элементов для каждого кластера? - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть некоторый набор данных, в котором некоторые наблюдения сильно коррелированы. Я делаю кластерный анализ на матрице расстояний, полученных из корреляционной матрицы. Некоторые элементы в этих наборах данных являются избыточными, и я хочу выбрать некоторые представители элементов с минимальной взаимной корреляцией. Я думаю, что метод грубой силы состоит в том, чтобы просто выбрать один элемент из каждого кластера. Но я хочу знать, существуют ли более формальные методы для такого уменьшения размерности в R? Например, мы выполняем кластеризацию на наборе данных mtcars следующим образом:

> m=cor(t(mtcars))
> hc=hclust(as.dist(m),"ave")
> plot(hc)

Мы получаем следующую дендрограмму:

enter image description here

Как извлечь из приведенных выше дендрограмм необходимые элементы? Это значит элементы, которые минимально взаимно коррелированы?

1 Ответ

0 голосов
/ 17 ноября 2018

Одним из вариантов будет использование некоторых функций предварительной обработки в пакете caret.

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

library(caret)
m <- cor(t(mtcars))
highlyCor <- findCorrelation(m, cutoff = .95)
t(mtcars)[,-highlyCor]

Приведенный выше код взят из превосходной книги Макса Куна . Обратитесь к ней и caret документации для получения дополнительной информации.

...