Нет конвергенции для жесткой конкурентной кластеризации обучения (пакет flexclust) - PullRequest
0 голосов
/ 13 января 2020

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

Я использую этот алгоритм, потому что я искал метод для выполнения взвешенной кластеризации , давая различные веса группам переменных. Я выбрал сложное конкурентное обучение на основе ответа на предыдущий вопрос ( Weighted Kmeans R ).

Я пытаюсь найти оптимальное количество кластеров, и для этого я использую Функция stepFlexclust со следующим кодом:

new("flexclustControl") ## check the default values

fc_control <- new("flexclustControl")
fc_control@iter.max <- 500 ### 500 iterations
fc_control@verbose <- 1 # this will set the verbose to TRUE
fc_control@tolerance <- 0.01

### I want to give more weight to the first 24 variables of the dataframe
my_weights <-  rep(c(1, 0.064), c(24, 31)) 

set.seed(1908)
hardcl <- stepFlexclust(x=df, k=c(7:20), nrep=100, verbose=TRUE, 
              FUN = cclust, dist = "euclidean", method = "hardcl", weights=my_weights, #Parameters for hard competitive learning
              control = fc_control,
              multicore=TRUE)

Однако алгоритм не сходится даже с 500 итерациями. Буду признателен за любое предложение. Должен ли я увеличить количество итераций? Является ли это индикатором того, что что-то еще идет не так, или я ошибся с командами R?

Заранее спасибо.

1 Ответ

0 голосов
/ 17 января 2020

Две вещи, которые отвечают на мой вопрос (а также комментарий к взвешенным переменным для kmeans, или, точнее, с жестким конкурентным обучением):

  • Вес дан для наблюдений (= строки х), а не переменные (= столбцы х). поэтому использование hardcl для взвешивания переменных является неправильным.

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

...