Sparklyr中的高斯混合模型聚类

问题描述 投票:0回答:1

我正在尝试在sparklyr中使用高斯混合模型对数据进行聚类:

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

但是,调用此函数不会像ml_kmeans()那样返回度量聚类数的度量(此函数返回WSSSE)。是否有办法获取Sparklyr中ml_gaussian_mixture()的Silhouette得分或BIC?

r k-means apache-spark-mllib sparklyr gmm
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.