Algoritma Kohonen

By | January 15, 2021
Print Friendly, PDF & Email
1,769 Views

Sinopsis

Kohonen merupakan salah satu cabang dari jaringan syaraf buatan yang digunakan untuk proses klustering. Jika anda pernah menggunakan Kmean klustering, maka kohonen mempunyai cara kerja yang sama, hanya saja berbeda cara melakukan proses update. Kmeans menggunakan istilah centroid sedangkan kohonen menggunakan istilah bobot. Karena aplikasi menggunakan nilai bobot yang random maka hasil nya pun bisa berbeda-beda. Adapun kode ini ditulis berdasarkan pada Buku Pengolahan Citra Digital – Darma Putra https://www.tokopedia.com/bukantobubiasa/buku-pengolahan-citra-digital-darma-putra

 

DATASET:

Berikut contoh dataset yang kita gunakan, terdiri 2 parameter saja X dan Y

Misalkan kita akan membuat 3 cluster dengan masing-masing cluster mempunyai anggota minimal 2

double[][]  dataInput = new double[][]{
 {7, 8}, 
 {8, 8}, 
 {9, 8}, 
 {8, 7},
 {8, 9},
 {1, 3},
 {3, 1},
 {5, 3},
 {3, 5},
 {2, 13},
 {3, 13},
 {4, 13},
 {3, 12},
 {3, 14}};

Kemudian membuat bobot secara random

//membuat bobot terdiri dari 
// 2 baris atau 2 paramater
// 3 kolom atau 3 kelas group
int jumlahParamater = 2;
int jumlahKluster = 3;
int jumlahMinimalAnggota = 2;
double [][] bobot  = new double[jumlahParamater][jumlahKluster];
for(int i=0;i<bobot.length;i++)
{
 for(int j=0;j<bobot[0].length;j++)
 {
  bobot[i][j]= rand();
 }
}

Sesi pencarian kelas

Kohonen k = new Kohonen(dataInput, bobot,jumlahKluster); //setup
k.setJumlahMinimal(jumlahMinimalAnggota);
double [][]bobotAkhir = k.pelatihan(dataInput,bobot); //proses latih
boolean status = k.pengujian(dataInput,bobotAkhir);
if(status)
{
 int [][]info = k.getInformasiKohonen();
 int []id = k.getIdAnggota();
 System.out.println("Hasil");
 for (int i=0;i<info.length;i++)
 {
    System.out.println("ID : "+info[i][0]+" anggota: "+info[i][1]);
 }
 System.out.println("Bobot Akhir");
 for (int i=0;i<bobotAkhir.length;i++)
 {
    for(int j=0;j<bobotAkhir[0].length;j++)
    {
     System.out.print(bobotAkhir[i][j]+", ");
    }
    System.out.println("");

 }
 System.out.println("Hasil Akhir");
 for(int i=0;i<dataInput.length;i++)
 {
  for(int j=0;j<dataInput[0].length;j++)
  {
   System.out.print(dataInput[i][j]+" ");
  }
  System.out.print("--> "+id[i]+1);
  System.out.println("");
 }
}else
{
 System.out.println("Run lagi!");
}

hasil

Hasil
ID : 1 anggota: 5
ID : 2 anggota: 4
ID : 3 anggota: 5
Bobot Akhir
8.0512, 3.3716, 3.0512, 
8.5243, 4.3443, 13.5243, 
Hasil Akhir
7.0 8.0 --> 1
8.0 8.0 --> 1
9.0 8.0 --> 1
8.0 7.0 --> 1
8.0 9.0 --> 1
1.0 3.0 --> 2
3.0 1.0 --> 2
5.0 3.0 --> 2
3.0 5.0 --> 2
2.0 13.0 --> 3
3.0 13.0 --> 3
4.0 13.0 --> 3
3.0 12.0 --> 3
3.0 14.0 --> 3

Bagi kalian yang tertarik silahkan kesini

Leave a Reply