Week 8. GMM
Week 8. GMM
Jasman Pardede
Pendahuluan
def main():
X, y_true = make_blobs(n_samples=400, centers=4,
cluster_std=0.60, random_state=0)
X = X[:, ::-1] # flip axes for better plotting
print(X)
kmeans = KMeans(4, random_state=0)
labels = kmeans.fit(X).predict(X)
centroids = kmeans.cluster_centers_
print("Centroid")
print(centroids)
plt.scatter(X[:, 0], X[:, 1], c=labels, s=40,
cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red',
s=50)
plt.show()
Centroid
[[ 2.84849883 -1.61366997] [ 7.75608144 if __name__ == "__main__":
-1.2689694 ] [ 0.83945671 1.95662677] main()
[ 4.36874542 0.95041055]]
Plot circular
circular ~ poor
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
fit)
labels = kmeans.fit_predict(X)
def main():
rng = np.random.RandomState(13)
X_stretched = np.dot(X, rng.randn(2, 2))
print(X)
kmeans = KMeans(4, random_state=0)
labels = kmeans.fit(X).predict(X)
centroids = kmeans.cluster_centers_
print("Centroid")
print(centroids)
plot_kmeans(kmeans, X_stretched)
plt.show()
if __name__ == "__main__":
main()
GMM (Gaussian Mixture Models)
Berusaha untuk mencari model terbaik dari input dataset yang diberikan berdasarkan
sebaran multi-dimensional Gaussian.
Secara sederhana, GMM dapat digunakan untuk mencari cluster yang sama dengan k-
means.
GMM dalam mencari model terbaiknya menggunakan Expectation-Maximization (EM)
Kelebihan EM
Algoritma EM lebih stabil secara numerik, dimana dalam setiap iterasinya loglikelihood-nya naik.
Dibawah kondisi umum, algoritma EM konvergen terhadap suatu nilai reliabel. Yaitu dengan dimulai
suatu nilai sembarang θ(0) akan hampir selalu konvergen terhadap suatu lokal maximizer, terkecuali
salah dalam mengambil nilai awal θ(0).
Algoritma EM cenderung mudah diterapkan, karena bersandarkan pada penghitungan complete data.
Algoritma EM mudah diprogram, karena tidak melibatkan baik integral ataupun turunan dari
likelihood.
Algoritma EM hanya memakan sedikit ruang harddisk dan memori di komputer karena tidak
menggunakan matriks ataupun invers-nya dalam setiap iterasi.
Analisis lebih mudah dibanding metode lain.
Dengan memperhatikan kenaikan monoton likelihood pada iterasi, maka mudah untuk memonitor
konvergensi dan kesalahan program.
Bisa digunakan untuk mengestimasi nilai dari missing data.
Kekurangan EM
https://zhiyzuo.github.io/EM/
Tahapan GMM
def main():
sns.set()
print("Contoh GMM")
X, y_true =
make_blobs(n_samples=400, centers=4,
cluster_std=0.60,
random_state=0)
X = X[:, ::-1] # flip axes for better
plotting
gmm = GMM(n_components=4).fit(X)
labels = gmm.predict(X)
plt.scatter(X[:, 0], X[:, 1], c=labels,
s=40, cmap='viridis');
plt.show()
if __name__ == "__main__":
main()
GMM plot
https://jakevdp.github.io/PythonDataScienceHandbook/05.1
2-gaussian-mixtures.html