AIC dan BIC
Untuk menentukan jumlah jumlah cluster yang optimum digunakan AIC (Akaike’s Information Criterion) dan BIC (Bayesian Information Criterion).
AIC dan BIC juga dapat digunakan untuk memilih model yang paling relevant.
AIC dan BIC menggunakan tradeoff antara simplicity dan goodness of fit.
Simplicity menunjukan berapa banyak dimensi yang dimiliki model, yang perlu diperhatikan adalah, model harus se-simple mungkin.
Sementara goodness of fit, seberapa baik model menjelaskan variance dari problem, atau secara teknis, apakah error mereka rendah atau tinggi.
Kita dapat meningkatkan model dengan merendahkan kompleksitas atau meningkatkan goodness of fit. Ketika Anda meningkatkan goodness of fit dan menurunkan kompleksitas, disini terjadi trade off. Disini Anda dapat menggunakan AIC atau BIC untuk menentukannya. Dari perspektif interpretasi, pilih model dengan value terendah.
Keuntungan lain menggunakan AIC dan BIC adalah mencegah model overfitting.
Perbedaan antara BIC dan AIC, BIC lebih ketat masalah overfitting dibandingkan AIC.
Implementasi Python
Setelah pengenalan AIC dan BIC singkat diatas, kita akan implementasikan dalam Python.
#Finding optimal number of clusters
#Prepare
n_components = np.arange(1,10)
#Create GMM model
models = [GaussianMixture(n_components= n,
random_state = 1502).fit(df) for n in n_components]
#Plot
plt.plot(n_components,
[m.bic(df) for m in models],
label = 'BIC')
plt.plot(n_components,
[m.aic(df) for m in models],
label = 'AIC')
plt.legend()
plt.xlabel('Number of Components')

Dari hasil diatas, terdapat dua minimum yaitu pada point 3 dan 8. Kita akan pilih 3 karena alasan simplicity, model yang terlalu komplek akan overfitting. Namun jika 3 cluster tidak menjawab pertanyaan, kita dapat coba menggunakan 8 cluster.
Seperti yang sudah dibahas pada modul sebelumnya, clustering adalah 60% art dan 40% science.