Кластеризация Gaussian Mixture Model в sparklyr

Я пытаюсь сгруппировать свои данные, используя модель смеси Гаусса в sparklyr:

ml_gaussian_mixture(formula= ~ var1 + var2 + var3 + var4 + var5, k = 5)

Однако вызов этой функции не возвращает метрику для оценки количества кластеров, как это делает ml_kmeans() (эта функция возвращает WSSSE). Есть ли способ получить оценку силуэта или BIC для ml_gaussian_mixture() в sparklyr?


person Egodym    schedule 25.10.2019    source источник


Ответы (1)


С

gmm_model <- ml_gaussian_mixture(iris_tbl, Species ~ .)

вы можете получить логарифмическую вероятность как

gmm_model$summary$log_likelihood

Которые затем можно использовать для получения BIC или AIC.

Я уверен, что должен быть способ получить его напрямую. Но если нет, вы можете рассчитать BIC как

log(n) + k-1 + k * p + k * p * (p-1) / 2 - 2 * gmm_model$summary$log_likelihood

Где n — количество выборок, k — количество кластеров, p — количество переменных. Выше k-1 + k * p + k * p * (p-1) / 2 — это количество свободных параметров в смешанной модели Гаусса (с неограниченными ковариационными матрицами).


Пример:

library(sparklyr)
sc <- spark_connect(master = "local")
iris_tbl <- sdf_copy_to(sc, iris, name = "iris_tbl", overwrite = TRUE)
gmm_model <- ml_gaussian_mixture(iris_tbl, Species ~ .)

gmm_model$summary$log_likelihood
#[1] -294.1398
person Suren    schedule 25.10.2019
comment
Кажется, это не работает. Я получаю ноль при вызове gmm_model$summary$log_likelihood. - person Egodym; 26.10.2019
comment
Смотрите пример в редактировании. Вполне возможно, что вы не подходите. - person Suren; 26.10.2019
comment
Мне любопытно узнать, как вы с этим справились. - person Suren; 27.10.2019
comment
Я получаю подгонку, но все еще получаю NULL при вызове gmm_model$summary$log_likelihood. - person Egodym; 29.10.2019
comment
Посмотрите, работает ли приведенный мной пример. Если это так, то, вероятно, проблема связана с вашими данными. - person Suren; 30.10.2019
comment
Со смешанными моделями вы, вероятно, получите некоторые значения параметров модели, даже если они не были хорошо подобраны: трудно вычислить обратную ковариационную матрицу и т. д. Если есть возможность поделиться версией данных, которые вы используете, возможно, рассмотрите вопрос другой вопрос, чтобы решить это. - person Suren; 30.10.2019