Self-Organizing Maps (SOM) dengan Kohonen pada R— Part 2

BAYU GALIH PRIANDA
4 min readJun 28, 2019

--

Berdasarkan pada artikel sebelumnya di Part 1 tentang Self-Organizing Maps, pada part 2 ini Saya akan melanjutkan pada contohnya atau langkah-langkah dalam analisis cluster (pengelompokkan) dengan metode SOM pada R dan menggunakan library kohonen. Di sini saya menggunakan software R Gui versi 3.4.4.

Pertama, Anda harus install dan panggil package kohonen untuk melakukan analisis cluster menggunakan SOM ini.

install.packages(kohonen)
library(kohonen)

Lalu input data iris, dengan sintaks sebagai berikut.

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

Berikut hasil output dari script di atas.

Berdasarkan gambar hasil di atas, str(iris) menampilkan informasi dari data iris tersebut, yakni diketahui bahwa data iris berjumlah 150 observasi dengan 5 variabel (Sepal Length, Sepal Width, Petal Length, Petal Width dan Species (setosa, versicolor, dan virginica)). Sedangkan head(iris) menampilkan 6 data teratas.

Kemudian melakukan standarisasi dengan mengunakan scale, yang bertujuan untuk tidak mengikutsertakan variabel species, karena memiliki perbedaan angka. Berikut script R yan digunakan dan tampilan outputnya.

irisskala<-scale(iris[-5])
irisskala

Lalu, Saya melakukan clustering dari 150 observasi dan 4 variabel yang digunakan tersebut.

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

Script di atas digunakan untuk membuat tempat/peta letak dimana data tersebut berada. Perintah somgrid dengan dimensi x dan y yaitu 5, dengan topologinya hexagonal.

Kemudian melakukan perintah som berdasarkan data iris yang digunakan dalam bentuk matrix.

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

Ketika som iris telah terbentuk, lalu Saya membuat plot dengan perintah berikut.

 plot(som.iris)

Berdasarkan plot di atas, diketahui bahwa terlihat lingkaran sebanyak 25 atau dengan dimensi 5x5, yang menjelaskan 150 observasi dengan 4 variabel dari data iris.Di setiap lingkaran terdapat 4 bagian yang masing-masing membentuk 1/4 lingkaran dengan warna yang berbeda-beda. Warna hijau merupakan Sepal Length, kuning merupakan Sepal Width, merah muda merupaka Petal Length, dan putih merupakan Petal Width.

Untuk membaca gambar plot di atas, Anda juga dapat membandingkannya dengan hasil script berikut.

 som.iris$grid$pts

Dari hasil di atas diketahui x dan y nya, maka dapat dibaca bahwa objek 1 terletak di bagian kiri bawah, objek 2 sampai 5 berjaan ke kanan, sedangkan objek 6 berada di atas objek 1 sebelah kiri, begitu seterusnya dengan urutan jalan ke kanan.

Kemudian membuat codesbook factor hasil dari sum grid.

 som.iris$codes[[1]]

Terdapat 25 nilai dari 4 atribut. Di mana clustering dibuat berasarkan nilai nodes. Lalu membuat Cluster Hierarki dari data som.iris$codes.

 hclust(dist(som.iris$codes[[1]]))

Dari hasil di atas diketahui bahwa metode yang digunakan adalah complete, dengan distance (jarak) euclidean, dan jumlah objeknya 25.

Kemudian saya akan melakukan cluster dengan perintah cutree. Saya akan membuat 3 kelompok sesuai spesiesnya, yaitu iris setosa, iris virginica, dan iris versicolor.

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

Menampilkan batas cluster.

add.cluster.boundaries(som.iris, peta)

Data iris dengan jumah 150 observasi telah dikelompokkan. Hasil gambar di atas akan berbeda-beda setiap melakukan running, tidak harus sama seperti itu.

Prediksi Data Baru

Contoh diketahui data bunga iris dengan sebagai berikut:
Sepal Length = 4.22
Sepal Width = 2.33
Petal Length = 1.05
Petal Width =8.87

Dari data di atas dapat dibangun dengan sintaks berikut:

#input data
uji<-c(4.22, 2.33,1.05,8.87)
uji
#melihat tipe dan dimensi
dim(iris)
dim(uji)
class(iris)
class(uji)
#menyamakan class data iris dan data uji
ujimatrix<-as.matrix(uji)
class(ujimatrix)
dim(ujimatrix)<-c(1,4)
dim(ujimatrix)

Apabila dimensi class data iris dan class data uji telah sama, maka selanjutnya melakukan prediksi data baru dengan sintaks berikut.

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

Berdasarkan hasil di atas, maka diketahui bahwa data baru yang dimasukkan tadi berada di objek lingkaran ke 25 (cluster warna hijau), dengan nilai distances/jarak yaitu 90.38242.

Demikian artikel kali ini, semoga bermanfaat!! Terima kasih

Referensi

You Tube Channel RB Fajriya Hakim : contoh SOM dengan R dan kohonen

--

--