Self Organizing Maps (SOM) Using R

PUTRI ERMAYANI
6 min readJul 16, 2021

--

Assalamualaikum Warahmatullahi Wabarakatuh

Pada artikel ini saya akan membahas sedikit mengenai Self Organizing Maps (SOM) dan yang paling penting adalah contoh penyelesaian dengan program R. Oke, langsung saja kita bahas!

SOM

Apa itu SOM?

Algoritma SOM adalah salah satu algoritma berbasis jaringan saraf yang dapat digunakan untuk pengambilan keputusan. SOM atau sering disebut topology-preserving map pertama kali diperkenalkan oleh Teuvo Kohonen pada tahun 1996. SOM merupakan salah satu teknik dalam Neural Network yang bertujuan untuk melakukan visualisasi data dengan cara mengurangi dimensi data melalui penggunaan self-organizing neural networks sehingga manusia dapat mengerti high-dimensional data yang dipetakan dalam bentuk low-dimensional data. Metode pembelajaran yang digunakan SOM adalah tanpa bimbingan dari suatu data input-target atau unsupervised learning yang mengasumsikan sebuah topologi yang terstruktur menjadian unit-unit kelas/cluster (Kohonen, 1989 dan Fausett, 1993).

Bagaimana Cara Kerja SOM?

Cara kerja SOM secara umum dapat dilihat pada gambar berikut.

Terdapat titik (x) pada ruang input untuk dipetakan ke titik I(x) pada ruang output. Setiap titik (I) dalam ruang output akan memetakan ke titik yang sesuai dalam ruang input melalui bobot wI(x).

Menurut Haykin (1999) terdapat tiga komponen penting dalam SOM yaitu:

  1. Competition: Untuk setiap pola input, neuron menghitung nilai masing-masing fungsi diskriminan yang memberi dasar untuk kompetisi. Neuron tertentu dengan nilai terkecil dari fungsi diskriminan dinyatakan sebagai pemenang.
  2. Cooperation: Neuron pemenang menentukan lokasi spasial dari lingkungan topologi excited neuron untuk memberi dasar kerjasama dalam suatu lingkungan neuron.
  3. Synaptic Adaption: Excited neuron menurunkan nilai fungsi diskriminan yang berkaitan dengan pola input melalui penyesuaian bobot terkait sehingga respon dari neuron pemenang keaplikasi berikutnya dengan pola input yang sama akan meningkat.

Contoh Studi Kasus

Pada studi kasus kali ini, saya akan kembali menggunakan Iris dataset untuk diselesaikan dengan metode SOM. Seperti yang telah dijelaskan pada artikel sebelumnya bahwa Iris dataset terdiri dari 50 sampel dari masing-masing 3 spesies Iris(Iris setosa, Iris virginica, Iris versicolor) yang terdiri atas pengukuran sepal length, petal length, sepal width, dan petal width.

Seperti biasanya, langkah awal dalam penyelesaian studi kasus kita adalah mengaktifkan package yang akan digunakan. Pada artikel ini kita akan menggunakan package kohonen.

library(kohonen)

Kemudian load dataset yang digunakan yaitu Iris dataset.

data(“iris”)
str(iris)
head(iris)

Selanjutnya dilakukan standarisasi data dengan fungsi scale pada dataset kecuali kolom kelima yaitu kolom species. Hal tersebut dilakukan karena nilai pada kolom 1 hingga 4 memiliki perbedaan yang cukup signifikan.

scale(iris[-5])
head(scale(iris[-5]))

Terlihat bahwa data memiliki nilai yang hampir sama. Data yang berhasil distandarisasi akan mengikuti distribusi normal.

Selanjutnya dilakukan pengelompokan atau cluster dari 150 observasi dan 4 variabel tersebut. Kita akan membuat tempat atau peta letak untuk data tersebut ditempatkan dengan dimensi x dan y masing-masing berjumlah 5.

grid =somgrid(xdim=5, ydim=5, topo=c(“hexagonal”))

Tempat atau peta letak disimpan dengan nama grid. Kemudian digunakan fungsi somgrid yang terdiri dari dimensi x dan y, serta topologinya yang dibuat dalam bentuk hexagonal. Dalam R terdapat 2 macam topologi yang bisa digunakan yaitu hexagonal dan rectangular.

Kemudian lakukan perintah SOM dengan data yang kita gunakan dan dibentuk dalam matrix dengan nama som.iris. Perintah SOM yang digunakan terdiri atas data dan juga tempat data yang sudah kita buat sebelumnya.

som.iris<-som(scale(iris[-5]), grid=somgrid(5,5,”hexagonal”))

Setelah itu kita dapat menyajikan hasil SOM yang terbentuk dalam bentuk plot.

plot(som.iris)

Pada gambar tersebut dapat dilihat lingkaran-lingkaran yang berdimensi 5x5, sehingga total lingkarannya sebanyak 25 lingkaran yang menggambarkan 150 observasi dan 4 variabel dari data iris tersebut. Pada masing-masing lingkaran terdapat diagram kipas yang mewakili variabel. Untuk variabel Sepal Length berwarna Hijau, Petal Length berwarna Cream, Sepal Width berwarna Kuning dan Petal Width berwarna putih.

Untuk membaca plot tersebut lebih jelasnya dapat digunakan sintaks sebagai berikut.

som.iris$grid$pts

Diperoleh bahwa lingkaran 1 berada pada lingkaran pojok kiri bawah dengan dimensi x=1.5 dan y=0.866, lalu lingkaran 2 sampai 5 berjalan ke kanan. Sedangkan pada lingkaran 6 berada pada lingkaran kiri pada baris kedua dari bawah dan seterusnya.~

Setelah terbentuk codes plot, langkah selanjutnya adalah membuat kelompok dengan menggunakan codesbook factor hasil dari sum grid yang digunakan untuk acuan pengelompokan.

som.iris$codes[[1]]

Terdapat sebanyak 25 objek dari 4 atribut. Langkah selanjutnya adalah melakukan pengelompokkan berdasarkan nilai nodes. Pengelompokkan dilakukan dengan metode hirarki clustering dari data som.iris$codes. Selanjutnya dilakukan pengelompokan dengan menggunakan perintah “cutree” yang terdiri atas kelompok sebanyak 3 karena terdapat kelompok spesies iris setosa, iris virginica, dan iris versicolor dan kemudian ditampilkan dalam plot.

Note : Banyaknya kelompok bebas ditentukan oleh peneliti.

hclust(dist(som.iris$codes[[1]]))
peta<-cutree(hclust(dist(som.iris$codes[[1]])), 3)
plot(som.iris, type="codes", bgcol=rainbow(3) [peta])
add.cluster.boundaries(som.iris, peta)

Analisis hierarchical clustering dilakukan dengan metode complete dengan metode perhitungan distance adalah euclidean, serta jumlah objek sebanyak 25 atau dengan jumlah lingkaran sebanyak 25 lingkaran. Dari gambar plot diatas kita sudah bisa mengelompokkan 150 observasi ke dalam suatu bidang datar tanpa menghilangkan atau mengurangi variabel. Selain itu kita sudah mendapatkan model yang kita buat.

Setelah itu dilakukan pengujian terhadap model yang telah terbentuk. Sebagai contoh terdapat data uji dari sebuah data iris yakni Sepal Length =5.5, Sepal Width = 3.8, Petal Length = 1.6, Petal Width = 0.7.

uji<-c(5.5, 3.8,1.6,0.7)

Selanjutnya dilihat dimensi dari iris dataset dan data uji yang digunakan. Untuk dapat digunakan sebagai prediksi maka iris dataset dan data uji harus memiliki dimensi yang sama.

dim(iris)
dim(uji)
class(iris)
class(uji)

Diperoleh bahwa dimensi dari dua dataset tersebut masih berbeda, begitu pula dengan kelasnya. Maka digunakan sintaks berikut untuk mengubah dimensi dan kelas dari data uji.

ujimatrix<-as.matrix(uji)
class(ujimatrix)
dim(ujimatrix)<-c(1,4)
dim(ujimatrix)

Setelah diperoleh dimensi yang sama, maka dilakukan prediksi dengan sintaks berikut.

map(som.iris,scale(ujimatrix,center = attr(scale(iris[,-5]),”scaled:center”),
scale = attr(scale(iris[,-5]),”scaled:scale”)))

Pada perintah tersebut dilakukan standarisasi data untuk menyesuaikan data uji dan iris datase agar data uji tersebut tidak jauh nilainya dari means dan varians dari iris dataset. Selain itu untuk iris dataset dibuat tanpa kolom kelima yang merupakan kolom species iris. Hasil prediksi yang diperoleh adalah sebagai berikut.

Diperoleh bahwa data uji tersebut termasuk dalam object atau lingkaran ke 25, serta data tersebut masuk dalam kelompok object berwarna biru.

Cukup sekian pembahasan analisis SOM untuk iris dataset menggunakan R. Semoga bermanfaat~

--

--

No responses yet