我正在尝试使用Sparklyr中的高斯混合模型对数据进行聚类:
ml_gaussian_mixture(formula= ~ var1 + var2 + var3 + var4 + var5, k = 5)
但是,调用此函数不会像ml_kmeans()
那样返回度量聚类数的度量(此函数返回WSSSE)。
有没有办法在Sparklyr中获得ml_gaussian_mixture()
的Silhouette得分或BIC?
答案 0 :(得分:0)
使用
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