Algoritma ART (Adaptive Resonance Theory)


Algoritma ART (Adaptive Resonance Theory) adalah salah satu algoritma yang digunakan untuk klasifikasi atau pengelompokan data. Contoh yang dibahas kali ini adalah mengenai penentuan rekomendasi barang yang sebaiknya dibeli.



Diasumsikan ada 12 data barang yang dijual, dengan data sebagai berikut:

Barang
Pensil Pensil 2B Pensil 3B Pensil 4B
Pena Pena Merah Pena Biru Pena Hitam
Penggaris Penggaris 15cm Penggaris 20cm Penggaris 30cm
Buku Buku Tulis Buku Gambar Komik

Contoh data barang adalah sebagai berikut:

Kemudian diketahui terdapat 10 pelanggan yang sudah membeli barang-barang tersebut dengan jumlah tertentu
Diasumsikan 10 data transaksi pelanggan tersebut adalah sebagai berikut:
Akan terdapat 12 kolom angka dengan urutan barang sesuai dengan urutan barang diatas
Angka 0 berarti tidak pernah membeli barang, selain itu berarti membeli barang dengan jumlah tersebut

Nama Pelanggan
Pelanggan A 3 3 1 10 3 3 4 10 2 8 0 3
Pelanggan B 8 10 3 3 3 8 2 5 2 3 10 5
Pelanggan C 8 5 4 2 4 4 9 0 9 2 10 5
Pelanggan D 0 5 4 0 1 3 4 4 6 4 9 2
Pelanggan E 3 9 6 2 1 1 1 3 8 7 9 3
Pelanggan F 7 10 7 6 5 0 3 2 4 0 7 3
Pelanggan G 5 0 4 9 5 4 9 0 5 1 0 8
Pelanggan H 1 2 4 4 4 2 10 6 10 0 4 10
Pelanggan I 2 9 4 4 0 1 4 6 1 0 7 7
Pelanggan J 9 0 9 10 6 10 3 0 5 7 9 9

Contoh data pelanggan adalah sebagai berikut:

Maka tentukan rekomendasi untuk pelanggan tertentu untuk membeli barang tertentu yang banyak dibeli pelanggan lain



Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan konstanta beta untuk digunakan dalam perhitungan nilai kedekatan
Diasumsikan dalam kasus ini, nilai beta adalah 2.0

* Tentukan probabilitas nilai cluster pada sebuah data agar masuk ke dalam cluster yang sama
Diasumsikan dalam kasus ini, nilai cluster adalah 0.6

* Tentukan probabilitas nilai hyper cluster pada sebuah data agar masuk ke dalam hyper cluster yang sama
Hyper cluster adalah pengelompokan cluster-cluster yang sudah ditemukan sebelumnya
Diasumsikan dalam kasus ini, nilai hyper cluster adalah 0.3

* Tentukan batas atas jumlah transaksi yang diperbolehkan
Nominalnya diperoleh dari semua data transaksi dengan jumlah terbanyak
Diasumsikan dalam kasus ini, batas atas jumlah transaksi adalah 10 buah

* Tentukan epsilon, yaitu nilai pembeda antara cluster 1 dengan yang lain, sehingga tidak ada 2 cluster dengan nilai cluster yang sama
Diasumsikan dalam kasus ini, nilai epsilon adalah 0.001
Sehingga untuk cluster dengan nilai sama, cluster tersebut akan dikurangi dengan nilai ini sampai tidak ada lagi nilai cluster yang sama

* Tentukan jumlah maksimal iterasi yang diperbolehkan
Hal ini untuk mencegah sebuah data hanya berpindah antara 2 cluster secara terus menerus tanpa henti
Diasumsikan dalam kasus ini, jumlah maksimal iterasi adalah 50 kali


Langkah-langkah penggunaan algoritma ini adalah

* Lakukan proses perhitungan dengan menggunakan algoritma ini
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 1 dan 2)

Memasuki perhitungan pada fungsi ART

1. Lakukan perhitungan untuk mengelompokan semua pelanggan ke dalam beberapa cluster

1a. Lakukan perhitungan selama masih ada data yang belum masuk cluster (poin 1a1 – 1a2)

1a1. Lakukan perhitungan pada masing-masing Pelanggan (poin 1a1a – 1a1e)

1a1a. Lakukan perhitungan pada masing-masing cluster yang ada (poin 1a1a1 – 1a1a2)

1a1a1. Hitung nilai kedekatan pada masing-masing cluster
dengan rumus (jumlah data irisan vektor pada cluster / beta + jumlah data vektor pada cluster)

* Gunakan fungsi ini untuk menghitung jumlah data dari nilai irisan 2 vektor input
nilai irisan adalah nilai minimal dari masing-masing barang pada 2 vektor input

* Gunakan fungsi ini untuk menjumlahkan semua elemen dalam sebuah vektor

1a1a2. Apabila nilai kedekatan pada cluster sekarang sama dengan nilai yang dihitung sebelumnya,
Maka turunkan nilainya dengan angka yang sangat kecil,
sehingga tidak ada cluster yang bernilai sama

1a1a3. Catat nilai kedekatan pada masing-masing cluster

1a1b. Hitung jumlah semua data pada vektor terpilih
Fungsi JumlahDataVektorTerpilih sudah dijelaskan pada perhitungan sebelumnya

1a1c. Hitung batas minimal kedekatan dengan rumus jumlah data vektor terpilih / (beta + batas nilai survei * jumlah barang)

1a1d. Lakukan perulangan pada masing-masing nilai kedekatan
Lakukan perhitungan berikutnya apabila nilai kedekatan pada sebuah cluster lebih dari batas nilai minimal kedekatan (poin 1a1d1 – 1a1d2)

1a1d1. Hitung nilai vigilance menggunakan nilai kedekatan pada masing-masing cluster

1a1d2. Jika nilai vigilance melebihi nilai cluster,
maka tambahkan Pelanggan terpilih pada cluster ini (poin 1a1d2a – 1a1d2b)

1a1d2a. Sebelumnya hapus Pelanggan ini dari cluster sebelumnya

1a1d2a1. Jika Pelanggan ini sudah ada di cluster tujuan,
maka lanjutkan perhitungan untuk Pelanggan berikutnya

1a1d2a2. Lakukan penghapusan Pelanggan dari cluster yang lama
Jika pada cluster tersebut sudah tidak ada lagi Pelanggan lain, maka hapus juga clusternya

* Gunakan fungsi ini untuk menghapus seorang pelanggan dari dalam cluster
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

1a1d2b. Tambahkan Pelanggan terpilih ke dalam cluster yang baru

* Gunakan fungsi ini untuk menambahkan pelanggan baru ke dalam cluster
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

* Gunakan fungsi ini untuk menghitung nilai irisan 2 vektor input
nilai irisan adalah nilai minimal dari masing-masing barang pada 2 vektor input

* Gunakan fungsi ini untuk menghitung jumlah dari 2 vektor input
nilai pengembalian adalah vektor dengan kolom-kolom yang berisi penjumlahan nilai 2 buah vektor input

1a1e. Jika Pelanggan terpilih tidak termasuk dalam cluster manapun,
maka buat cluster baru dan masukkan Pelanggan terpilih dalam cluster tersebut

1a2. Jika perulangan sudah melebihi batas maksimal iterasi, maka hentikan perulangan ini

2. Setelah masing-masing Pelanggan sudah mendapatkan cluster,
Maka lakukan perhitungan sekali lagi untuk mengelompokan cluster tersebut ke dalam hyper cluster

2a. Lakukan perhitungan selama masih ada data yang belum masuk hyper cluster (poin 2a1 – 2a2)

2a1. Lakukan perhitungan pada masing-masing cluster (poin 2a1a – 2a1e)

2a1a. Lakukan perhitungan pada masing-masing hyper cluster yang ada (poin 2a1a1 – 2a1a3)

2a1a1. Hitung nilai kedekatan pada masing-masing byper cluster
dengan rumus (jumlah data irisan vektor cluster pada hyper cluster / beta + jumlah data vektor pada hyper cluster)

2a1a2. Apabila nilai kedekatan pada hyper cluster sekarang sama dengan nilai yang dihitung sebelumnya,
Maka turunkan nilainya dengan angka yang sangat kecil,
sehingga tidak ada hyper cluster yang bernilai sama

2a1a3. Catat nilai kedekatan cluster pada masing-masing hyper cluster

2a1b. Hitung jumlah semua data pada vektor terpilih

2a1c. Hitung batas minimal kedekatan dengan rumus jumlah data vektor terpilih / (beta + batas nilai survei * jumlah barang)

2a1d. Lakukan perulangan pada masing-masing nilai kedekatan
Lakukan perhitungan apabila nilai kedekatan cluster pada sebuah hyper cluster lebih dari batas nilai minimal kedekatan (poin 2a1d1 – 2a1d2)

2a1d1. Hitung nilai vigilance menggunakan nilai kedekatan cluster pada masing-masing hyper cluster

2a1d2. Jika nilai vigilance melebihi nilai hyper cluster,
maka tambahkan cluster terpilih pada hyper cluster ini (poin 2a1d2a – 2a1d2b)

2a1d2a. Sebelumnya hapus cluster ini dari hyper cluster sebelumnya

2a1d2a1. Jika cluster ini sudah ada di hyper cluster tujuan,
maka lanjutkan perhitungan untuk hyper cluster berikutnya

2a1d2a2. Lakukan penghapusan cluster dari hyper cluster yang lama
Jika pada hyper cluster tersebut sudah tidak ada lagi cluster lain, maka hapus juga hyper clusternya

* Gunakan fungsi ini untuk menghapus sebuah cluster dari dalam hyper cluster
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

2a1d2b. Tambahkan cluster terpilih ke dalam hyper cluster yang baru

* Gunakan fungsi ini untuk menambahkan cluster baru ke dalam hyper cluster
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini
Fungsi IrisanVektor dan JumlahVektor sudah dijelaskan pada poin diatas

2a1e. Jika cluster terpilih tidak termasuk dalam hyper cluster manapun,
maka buat hyper cluster baru dan masukkan cluster terpilih dalam hyper cluster tersebut

2a2. Jika perulangan sudah melebihi batas maksimal iterasi, maka hentikan perulangan ini

3. Tentukan pelanggan yang akan dicari rekomendasinya

4. Cari rekomendasi untuk pelanggan tersebut
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

Memasuki perhitungan pada fungsi CariRekomendasi

4a. Hitung rekomendasi dari cluster pelanggan tersebut

4a1. Lakukan perhitungan pada setiap barang (poin 4a1a – 4a1b)

4a1a. Jika data transaksi pada awal mula adalah 0 dan hasil perhitungan bukan 0,
maka barang ini termasuk dalam kesimpulan barang yang tidak pernah dibeli dan sebaiknya dibeli
Kemudian catat selisih minimal untuk barang-barang yang termasuk dalam kesimpulan ini

4a1b. Jika data transaksi pada awal mula kurang dari hasil perhitungan, dan data transaksi pada awal mula kurang dari batas minimal rekomendasi
maka barang ini termasuk dalam kesimpulan barang yang sudah pernah dibeli sedikit dan sebaiknya dibeli lagi
Kemudian catat selisih minimal untuk barang-barang yang termasuk dalam kesimpulan ini

4a2. Catat rekomendasi barang-barang yang termasuk dalam kesimpulan barang yang tidak pernah dibeli dan sebaiknya dibeli

4a3. Catat rekomendasi barang-barang yang termasuk dalam kesimpulan barang yang sudah pernah dibeli sedikit dan sebaiknya dibeli lagi

4b. Hitung rekomendasi dari hyper cluster pelanggan tersebut

4b1. Lakukan perhitungan pada setiap barang (poin 4b1a – 4b1b)

4b1a. Jika data transaksi pada awal mula adalah 0 dan hasil perhitungan bukan 0 dan belum tercatat pada perhitungan rekomendasi cluster,
maka barang ini termasuk dalam kesimpulan barang yang tidak pernah dibeli dan sebaiknya dibeli
Kemudian catat selisih minimal untuk barang-barang yang termasuk dalam kesimpulan ini

4b1b. Jika data transaksi pada awal mula kurang dari hasil perhitungan, dan data transaksi pada awal mula kurang dari batas minimal rekomendasi, dan belum tercatat pada perhitungan rekomendasi cluster,
maka barang ini termasuk dalam kesimpulan barang yang sudah pernah dibeli sedikit dan sebaiknya dibeli lagi
Kemudian catat selisih minimal untuk barang-barang yang termasuk dalam kesimpulan ini

4b2. Catat rekomendasi barang-barang yang termasuk dalam kesimpulan barang yang tidak pernah dibeli dan sebaiknya dibeli dan belum tercatat pada perhitungan rekomendasi cluster

4b3. Catat rekomendasi barang-barang yang termasuk dalam kesimpulan barang yang sudah pernah dibeli sedikit dan sebaiknya dibeli lagi dan belum tercatat pada perhitungan rekomendasi cluster

4c. Jika tidak ada satupun barang yang memenuhi kesimpulan diatas, maka tampilkan pesan peringatan di layar

* Agar dapat menjalankan skrip diatas, maka diperlukan 3 buah Class
Class Cluster digunakan untuk menampung data vektor cluster, data pelanggan dan vektor jumlah
Class HyperCluster digunakan untuk menampung data vektor hyper cluster, data cluster, data pelanggan, dan data vektor jumlah
Class Pelanggan digunakan untuk menampung data nama dan data transaksi yang ada.
Deklarasi masing-masing class tersebut adalah sebagai berikut:


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd71


Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.

Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *