Kohonen Self Organizing Maps (SOM) dengan R

Halima Tusyakdiah
6 min readJul 18, 2020

Introduce:

Jaringan Kohonen SOM diperkenalkan pada tahun 1982 oleh peneliti Finlandia yaitu Tuevo Kohonen. Kohonen SOM merupakan suatu jaringan yang tidak membutuhkan suatu pengawasan khusus, karenanya diberi nama self organizing. Kata maps berarti bahwa metode ini menggunakan map dalam pembobotan input data. Tiap node dalam jaringan SOM berusaha untuk menjadi seperti input yang telah diberikan pada jaringan tersebut.

Haykin (1999), terdapat empat komponen penting dalam SOM yaitu:

  1. Initialization. Menentukan bobot acak awal secara random.
  2. Competition: Pada tahap ini 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 (winning neuron).
  3. Cooperation: Winning neuron menentukan lokasi spasial dari lingkungan topologi excited neuron untuk memberi dasar kerjasama dalam suatu lingkungan neuron.
  4. Adaption: Excited neuron menurunkan nilai fungsi diskriminan yang berkaitan dengan pola input melalui penyesuaian bobot terkait sehingga respon dari winning neuron ke aplikasi berikutnya dengan pola input yang sama akan meningkat.

SOM dianggap sebagai bentuk spasial dari analisis kelompok K-Means. Analoginya, setiap unit sesuai dengan sebuah cluster dan jumlah cluster ditentukan oleh ukuran grid yang biasanya diatur dalam bentuk persegi atau heksagonal. Grid ini digunakan dalam proses pemetaan. Jadi ketika objek dua dimensi sangat mirip, maka posisinya dalam pemetaan akan sangat berdekatan (Wehrens dan Buydens, 2007).

DATA:

Data yang digunakan adalah data mengenai pendidikan pemuda di indonesia 2019 yang diperoleh dari Badan Pusat Statistik. Data dapat di download di link berikut: https://drive.google.com/drive/folders/13Y6Hn7b6yvBu6U1zWNAp_bz409FOkOhX?usp=sharing

Variabel:

  1. ABH: Persentase Angka Buta Huruf Pemuda
  2. SD: Persentase Pemuda Menurut Pendidikan Tertinggi yang Ditamatkan SD
  3. SMP: Persentase Pemuda Menurut Pendidikan Tertinggi yang Ditamatkan SMP
  4. SM: Persentase Pemuda Menurut Pendidikan Tertinggi yang Ditamatkan SMA/SMK
  5. PT: Persentase Pemuda Menurut Pendidikan Tertinggi yang Ditamatkan Perguruan Tinggi
  6. Menggunakan Komputer: Persentase Pemuda yang Menggunakan Komputer dalam Tiga Bulan Terakhir
  7. Menggunakan Internet: Persentase Pemuda yang Menggunakan Internet dalam Tiga Bulan Terakhir

Kali ini clustering menggunakan bantuan program R. Maka pastikan program sudah terinstall pada laptop kalian ! :)

Langkah 1: Cleaning Data dan Statistika Deskriptif

Pertama masukkan data yang telah di download ke program r dengan menggunakan perintah “read.delim(‘clipboard’)”. Kemudian lihat datanya untuk memastikan.

pemuda <- read.delim('clipboard')
View(pemuda)
dim(pemuda)

diketahui data memiliki 34 baris dan 9 kolom. selanjutnya di lakukan pengecekkan data outlier dari data kolom 2 hingga kolom 8 dengan menggunakan bantuan “library(MVN)”.

library(MVN)
outlier=mvn(pemuda[,2:8],multivariateOutlierMethod = "quan", showNewData = TRUE)

berdasarkan Q-Q plot diketahui ada 7 data outlier, namun dari ke 7 data outlier peneliti hanya akan membuang satu data outlier yaitu observasi ke 34 (provinsi papua) karena jaraknya sangat jauh dari obeservasi lainnya.

pemuda<- pemuda[-34,]

kemudian melihat statistik 5 serangkai dari data yang telah dibuang data pencilan.

summary(pemuda[,2:8])

Langkah 2: Pengujian Asumsi

selanjutnya dilakukan pengujian asumsi multikolinieritas dengan menggunakan asumsi nilai VIF <10 no multikolinieritas. Variabel SUM yang merupakan jumlahan dari seluruh variabel masing-masing provinsi dan dijadikan variabel dependen.

library(car)
(multiko=vif(lm(SUM~.,data = pemuda[2:8])))

Berdasarkan nilai VIF diatas, seluruh nilai VIF lebih kecil dari 10, maka dapat disimpulkan data tidak terdapat multikolinearitas. Selanjutnya melakukan pengelompokan konohen self organizing map (SOM).

Langkah 3: Clustering SOM

Langkah pertama yang dilakukan adalah menentukan jumlah cluster. Pada penelitian ini jumlah cluster ditentukan dari nilai K optimal dengan bantuan package clValid . Peneliti menggunakan tiga metode validasi untuk menentuka K Optimum yaitu Indeks Dunn, Silhouette, dan Connectivity. Penentuan jumlah cluster yang diambil adalah dilihat dari kriteria nilai Connectivity yang paling kecil maka semakin bagus, jumlah cluster dengan Indeks Dunn mendekati 1, dan nilai Silhouette paling besar.

peneliti juga akan menampilkan validasi dengan 3 metode cluster yaitu metode hirarki, kmeans, dan kmedoid.

berikut adalah script validasi clutser dalam penentuan k optimum.

# Compute clValid
library(clValid)
clmethods <- c("hierarchical","kmeans","pam")
intern <- clValid(scale(pemuda), nClust = 2:6,
clMethods = clmethods, validation = "internal")
# Summary
summary(intern)

berdasarkan output diatas diketahui nilai-nilai validasi masing-masing clustering. Dari 3 metode clustering diatas, k Optimum dilihat dari nilai optimal scores yaitu metode hirarki. berdasarkan nilai validasi , peneliti menetapkan cluster yang terbentuk sebanyak 3.

selanjutnya akan dilakukan pengelompokkan data ke 3 cluster. sebelumnya kita aktifkan terlebih dahulu packages konohen. kemudian bentuk dimensi atau grid untuk meletakkan hasil klasifikasi.

library(konohen)

set.seed(123)
grid <- somgrid(xdim=5, ydim=5, topo="hexagonal")

lalu dijalankan algoritma Self Organizing Map (SOM). dengan menggunakan data pemuda yang telah di standarisasi agar ukuran masing-masing data proposional.

som.pemuda <- som(scale(pemuda[,2:7]), grid=somgrid(xdim=5, ydim=5, 
topo="hexagonal"))
summary(som.pemuda)

ukuran jaraknya dapat dilihat dengan perintah

dist(som.pemuda$codes[[1]])

melihat plot algoritma som

plot(som.pemuda)

melihat letak klasifikasi

text(som.wines$grid$pts,labels = som.wines$unit.classif, cex=1.5)
som.pemuda$unit.classif

selanjutnya membuat kluster hirarki dengan cutree nya 3.

#hclust to 3 cluster
hclust(dist(som.pemuda$codes[[1]]))
peta<-cutree(hclust(dist(som.pemuda$codes[[1]])),3)
peta
#menampilkan diagram kipas
plot(som.pemuda,type="codes",bgcol=rainbow(5)[peta], main="Diagram Kipas Aspek Pendidikan Pemuda ")
add.cluster.boundaries(som.pemuda,peta)

didapatkan hasil visualisi diagram kipas sebagai berikut.

Tedapat 3 warna yang menggambarkan hasil dari cluster setiap provinsi berdasarkan variabel aspek didikan di Indonesia. berikut ada perintah untuk memunculkan anggota masing-masing provinsi.

kelompok3 <- data.frame(pemuda[,1],cluster=peta[som.pemuda$unit.classif])
kelompok3

Langkah 4: Menghitung Profilisasi

Kemudian kita akan menghitung profilisi setiap cluster untuk mengetahui karakteristik / ciri khas masing-masing cluster pendidikan pemuda di Indonesia tahun 2019. Pertama menggabungkan anggota cluster pada data “pemuda” dari kolom 2 hingga 8 dan kelompok cluster.

hasil=data.frame(pemuda[,2:7], kelompok3$cluster)

kemudian mengelompokan masing-masing data kluster 1 dan cluster 2.

kluster1=subset(hasil, kelompok3$cluster==1)
kluster2=subset(hasil, kelompok3$cluster==2)
kluster3=subset(hasil, kelompok3$cluster==3)
kluster_1=sapply(kluster1, mean)
kluster_2=sapply(kluster2, mean)
kluster_3=sapply(kluster3, mean)

menghitung rata-rata total masing-masing cluster.

mean_total=rbind(kluster_1,kluster_2,kluster_3)
mean_total

dari profilisasi cluster maka peneliti menetapkan :

cluster 1 : sudah baik

cluster 2 : sedang

cluster 3 : kurang baik

Berdasarkan profilisasi, maka diperoleh kharakteristik masing-masing cluster sebagai berikut:

· Cluster 1 : merupakan wilayah yang tinggi pada persentase ABH, SD, SMP. dan rendah pada persentase PT, SM, Menggunakan Komputer. anggotanya yaitu, Sumatera Selatan, Lampung, Kep. Bangka Belitung, Jawa Barat, Jawa Tengah, Jawa Timur, Nusa Tenggara Barat, Nusa Tenggara Timur, Kalimantan Barat, Kalimantan Tengah, Kalimantan Selatan, Sulawesi Tengah, Gorontalo, Sulawesi Barat, Papua Barat

· Cluster 2 : merupakan wilayah yang sedang pada persentase semua aspek pendidikan . kluster ini terdiri dari provinsi, Aceh, Sumatera Utara, Sumatera Barat, Riau, Jambi, Bengkulu, Kepulauan Riau, Banten, Bali, Kalimantan Timur, Kalimantan Utara, Sulawesi Utara, Sulawesi Selatan, Sulawesi Tenggara, Maluku, Maluku Utara

· Cluster 2 : kluster ini terdiri dari provinsi DKI Jakarta dan DI Yogyakarta

THX :)

--

--

Halima Tusyakdiah

Statistics student at Islamic University of Indonesian