Как определить наилучшее количество кластеров для кламирования kamila с помощью R?

У меня есть набор данных смешанного типа, поэтому я хотел попробовать kamila клами. Его легко применить, но я хотел бы, чтобы сюжет определял количество кластеров, подобных колено-сюжету.

data <- read.csv("binarymat.csv",header=FALSE,sep=";")
conInd <- c(9)
conVars <- data[,conInd]
conVars <- data.frame(scale(conVars))
catVarsFac <- data[,c(1,2,3,4,5,6,7,8)]
catVarsFac[] <- lapply(catVarsFac, factor)
catVarsDum <- dummyCodeFactorDf(catVarsFac)
kamRes <- kamila(conVars, catVarsFac, numClust=5, numInit=10,
 calcNumClust = "ps",numPredStrCvRun = 10, predStrThresh = 0.5)
summary(kamRes)

В нем говорится, что наибольшее количество кластеров - 5. Как это решить, и я могу увидеть сюжет, указывающий на это?

1 ответ

В документации пакета kamila

Установка calcNumClust в ps использует метод прогностической силы Tibshirani & Walther (J. of Comp. And Graphical Stats, 14 (3), 2005). Нет идеального метода для оценки количества кластеров; PS имеет тенденцию давать меньшее число, чем, например, методы на основе BIC для больших размеров выборки.

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

Чтобы выбрать количество кластеров, вы должны указать интересующий вас диапазон, например numClust = 2: 7 а также метод выбора количества кластеров.

Если вы также хотите выбрать количество кластеров, может работать что-то вроде следующего.

kamRes <- kamila(conVars, catVarsFac, numClust = 2 : 7, numInit = 10, 
 calcNumClust = "ps", numPredStrCvRun = 10, predStrThresh = 0.5)

Информация о выборе количества кластеров теперь присутствует в kamRes$nClust, и plot(2:7, kamRes$nClust$psValues) может быть тем, что вы после.

licensed under cc by-sa 3.0 with attribution.