Thursday, September 4, 2014

Buku Belajar Machine Learning dengan Java - Algoritma Kohonen


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link

UPDATE: 01 FEBRUARI 2019
BAHASA: JAVA
SYSTEM:
a.    Windows 10
b.    NetBeans IDE 8.0.2 (Build 201411181905)
c.    Java: 1.8.0_111; Java HotSpot(TM) 64-Bit Server VM 25.111-b14

PENGANTAR:

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. Agar mempermudah dalam mengoperasikan nya, dilengkapi dengan proses

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!");
}

Output

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

Pustaka


Kode Kohonen tidak memerlukan library tambahan karena ditulis sendiri.

No comments:

Post a Comment