С
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