Anda di halaman 1dari 4

Praktikum 6

Self-Organizing Maps
Tujuan
1. Praktikan mampu memahami algoritma self-organizing maps
2. Praktikan mampu mengimplementasikan algoritma self-organizing maps

Dasar Teori
Self-Organizing Maps
Self-organizing maps (SOM), atau yang disebut juga dengan
topology-preserving maps, adalah sebuah algoritma klasterisasi (clustering)
sehingga termasuk pada algoritma unsupervised learning. Algoritma ini dirancang
oleh Kohonen (1989).
Nilai-nilai bobot pada jaringan ini berfungsi sebagai centroid untuk setiap
cluster. Banyaknya centroid harus ditentukan lebih dulu sebelum proses
clustering dimulai. Selama proses clustering berjalan, centroid dengan posisi
terdekat dengan suatu data input akan dipilih sebagai “pemenang”. Centroid
tersebut, beserta centroid di sekitarnya yang berada pada radius 𝑅, kemudian
akan memperbarui posisinya untuk lebih mendekat ke input tersebut. Jarak
pergeseran tersebut diatur menggunakan suatu parameter learning rate yang
disimbolkan dengan α. Dari satu epoch ke epoch berikutnya, nilai α dan 𝑅 secara
perlahan akan diturunkan.
Centroid-centroid yang akan digunakan juga dapat diatur dalam bentuk
grid dua dimensi yang dapat berbentuk kotak atau heksagon (segi enam) seperti
pada Gambar 6.1. Selama proses berjalan, centroid-centroid pada grid tersebut
akan mengikuti bentuk data sehingga, pada akhir proses, bentuk grid tersebut
akan mewakili bentuk atau topologi dari data.

40
Gambar 6.1 Bentuk grid pada SOM dapat berbentuk kotak atau heksagon

Algoritma SOM
Berikut adalah algoritma self-organizing maps.
1. Inisialisasi nilai bobot 𝑤𝑖𝑗. Set parameter radius ketetanggaan 𝑅 dan
learning rate α.
2. Untuk setiap vektor input 𝑥, lakukan langkah-langkah 3–8.
3. Untuk setiap nilai 𝑗, hitung:
2
(
𝐷(𝐽) = ∑ 𝑤𝑖𝑗 − 𝑥𝑖
𝑖
)
4. Cari indeks 𝐽 yang menghasilkan 𝐷(𝐽) terkecil.
5. Untuk semua neuron 𝑗 yang merupakan tetangga dari 𝐽 dengan radius 𝑅:
(
𝑤'𝑖𝑗 = 𝑤𝑖𝑗 + α 𝑥𝑖 − 𝑤𝑖𝑗 )
6. Ubah nilai learning rate α.
7. Ubah radius ketetanggaan 𝑅.
8. Cek kondisi berhenti.

Praktikum
1. Buka Google Colaboratory melalui tautan ini.
2. Tulis kode berikut ke setiap cell pada notebook tersebut.
a. Fungsi self-organizing maps

import numpy as np

def som(X, lrate, b, max_epoch, n_cluster):


centroids = np.random.uniform(size=(n_cluster, len(X[0])))
epoch = 0

41
labels = []

while epoch < max_epoch:


for x in X:
d = [sum((w - x) ** 2) for w in centroids]
min = np.argmin(d)
centroids[min] += lrate * (x - centroids[min])

lrate *= b
epoch += 1

for x in X:
d = [sum((w - x) ** 2) for w in centroids]
min = np.argmin(d)

labels.append(min)

return centroids, labels

def draw(X, target, centroids):


colors = 'rgbcmyk'

for x, label in zip(X, target):


plt.plot(x[0], x[1], colors[label] + '.')

plt.plot(centroids[:, 0], centroids[:, 1], 'kx')

b. Klasterisasi

from sklearn.datasets import make_blobs


from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt

X, target = make_blobs(n_samples=30, n_features=2, centers=3,


random_state=3)
centroids, labels = som(X, lrate=.5, b=.5, max_epoch=100,
n_cluster=3)
silhouette = silhouette_score(X, labels)

print('Silhouette score:', silhouette)


draw(X, target, centroids)

42
Analisis
1. Ubah parameter pada kode b menjadi learning rate = 0,05 dan epoch
maksimum = 3 lalu jalankan program. Amati gambar hasil klasterisasi dan
nilai silhouette yang didapatkan.

43

Anda mungkin juga menyukai