Self-Organizing Map (SOM) dengan Kohonen Menggunakan R
Halo teman-teman!! pada kesempatan kali ini, saya akan membahas tentang Self Organizing Map (SOM) menggunakan software R. Sudah ada yang tau belum apa itu SOM (?). Oke, langsung dibahas aja yahh, biar yang belum tau jadi tauuu!❤❤
Check This Out!!!
Apa yang dimaksud dengan SOM ?
SOM merupakan salah satu bentuk topologi dari Unsupervised Artificial Neural Network (Unsupervised ANN) dimana dalam proses pelatihannya tidak memerlukan pengawasan (target keluaran). SOM digunakan untuk mengelompokkan (clustering) data berdasarkan karakteristik/fitur-fitur data.
Algoritma Self Organizing Map (SOM) merupakan suatu metode Jaringan Saraf Tiruan yang diperkenalkan oleh Professor Teuvo Kohonen pada tahun 1980an.
Pada algoritma SOM, vektor bobot untuk setiap unit cluster berfungsi sebagai contoh dari input pola yang terkait dengan cluster itu. Kemudian setiap output akan bereaksi terhadap pola input tertentu sehingga hasil Kohonen SOM akan menunjukkan adanya kesamaan ciri antar anggota dalamcluster yang sama.
Bagaimana yaa struktur SOM?
SOM merupakan jaringan yang terdiri dari dua lapisan (layer), yaitu lapisan input dan lapisan output. Setiap neuron dalam lapisan input terhubung dengan setiap neuron pada lapisan output.
Dataset yang akan saya gunakan dalam percobaan penggunaan SOM ini yaitu dataset wines. Dataset wines merupakan Dataset anggur berisi hasil analisis kimia anggur yang ditanam di area tertentu di Italia. Tiga jenis anggur terwakili dalam 177 sampel, dengan hasil 13 analisis kimia dicatat untuk setiap sampel.
Langkah-langkah yang harus dilakukan
Langkah 1 : Menginstall dan mengaktifkan package kohonen
install.packages(kohonen)
library(kohonen)
Langkah 2 : Memanggil dan melihat data teratas dari data wines
Tercatat bahwa terdapat 13 analisis kimia (variabel) untuk setiap sampel.
Langkah 3 : Melakukan standarisasi data
Hal ini dilakukan karena ukuran data yang berbeda. Standarisasi dilakukan dengan sintaks berikut.
scale(wines)
head(scale(wines))
Berikut hasil data wines yang telah terstandarisasi
Langkah 4 : Mencoba melihat bagaimanakah dimensi dan struktur data wines
Diketahui bahwa terdapat 177 sampel, dengan hasil 13 analisis kimia dicatat untuk setiap sampel.
Langkah 5 : Membuat kelompok kategorisasi dari data wines yang terdiri dari 177 sampel dan 13 variabel
#Membuat peta letak dimana 177 data sampel berada dengan menggunakan sintaks berikut.
grid=somgrid(xdim = 5,ydim = 5,topo="hexagonal
#Melakukan perintah som atau perintah Self Organizing Maps dari data wines sebanyak 177 tersebut.
som.wines=som(scale(wines),grid=somgrid(xdim = 5,ydim = 5,"hexagonal"))
#Melihat stuktur data som.wines
str(som.wines)
#Membuat plot dari data tersebut untuk melihat peta letak dari data tersebut
plot(som.wines,type="mapping")
Maka hasil peta letak (mapping plot) yang diinginkan pada langkah 5 berhasil terbentuk. Berikut peta letak yang dihasilkan.
Dari mapping plot som.wines dapat dilihat bahwa terdapat 25 lingkaran dimana 25 lingkaran ini menggambarkan letak-letak dari 177 observasi dan 13 variabel tersebut.
Langkah 6 : Melihat nomor berapakah yang masuk lingkaran pertama,kedua,ketiga, dan seterusnya
som.wines$grid$pts
som.wines$unit.classif
Sehingga dihasikan output sebagai berikut.
Dari hasil yang telah dilakukan didapatkan variabel X dan Y. Kemudian melihat plot som.wines secara keseluruhan.
plot(som.wines)
Langkah 7 : Melihat letak masing-masing unit klasifikasi
text(som.wines$grid$pts,labels = som.wines$unit.classif,cex = 1.5)
Langkah 8 : Membuat hasil pengelompokan berdasarkan codes box vektor dan membuat jarak antar codes
som.wines$codes[[1]]
dist(som.wines$codes[[1]])
Terdapat 25 vektor yang berisikan nilai” dari 13 variabel.
Langkah 9 : Melihat hierarki clustering dengan metode complete
hclust(dist(som.wines$codes[[1]]))
Output diatas merupakan cluster hierarki dengan distance euclidean dan objek number sebanyak 25.
Langkah 10 : Membuat berapa banyak kelompok yang akan digunakan yaitu 5 kelompok dalam visualisasi peta
Langkah 11 : Membuat pengelompokkan berdasarkan peta sudah dibuat dan untuk memperjelas peta dengan menambahkan boundaries.
plot(som.wines,type="codes",bgcol = rainbow(5)[peta])
add.cluster.boundaries(som.wines,peta)
Dapat dilihat bahwa 177 data sampel sudah terkelompokkan ke dalam suatu bidang datar. Terbentuk 5 kelompok , dimana lingkaran berwarna merah sebanyak 8, warna kuning sebanyak 2, warna hijau sebanyak 6, warna biru sebanyak 3, dan warna ungu sebanyak 6.
Langkah 12 : Membuat data uji yang berisi nilai skala yang dibentuk dan melihat dimensinya
uji=c(1.03,-0.68,0.92,0.0144,1.08,1.04,1.37,0.302,0.23,0.664,0.755,-0.048,1.220)
uji
dim(wines)
dim(uji)
Langkah 13 : karena dimensinya terbaca NULL maka objek uji diubah kedalam bentuk matrix dan membuat dimensinya
Langkah 14 : Memasukkan data uji matrix kedalam model dengan perintah map untuk memprediksikan masuk kelompok cluster yang mana
map(som.wines,scale(ujimatrix,center=attr(scale(wines),"scaled:center"),scale=attr(scale(wines),"scaled:scale")))
Sehingga dihasilkan output sebagai berikut.
Ternyata untuk data uji tadi masuk kedalam unit klasifikasi 12 atau berada pada lingkaran ke 12.
Oke teman-teman, sampai sini dulu ya….
Kalian bisa mencoba menggunakan metode SOM ini dengan data lain.
Terima kasih dan sampai jumpa di artikel selanjutnya! :)
REFERENSI
Video Pembelajaran by RB Fajriya Hakim