Pengenalan Pola adalah cabang kecerdasan yang menitik-beratkan pada metode pengklasifikasian objek ke dalam kelas – kelas tertentu untuk menyelesaikan masalah tertentu. Contoh yang dibahas kali ini adalah mengenai penentuan pola angka baru berdasarkan pola angka sebelumnya.
Pada Algoritma Perceptron sebelumnya telah dibahas mengenai prediksi nilai hasil data baru berdasarkan data-data yang sudah ada sebelumnya. Pada kali ini algoritma tersebut akan digunakan dalam pemecahan masalah mengenai pengenalan pola sederhana.
Diasumsikan ada 5 pola angka yang diketahui, yaitu pola angka 1 sampai dengan 5
Diasumsikan 5 pola angka tersebut adalah sebagai berikut:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||||||||||||||
1 | 1 | 1 | 1 | 1 | |||||||||||||||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Contoh data awal adalah sebagai berikut:
Dim contohData As Integer()() = New Integer(4)() {} 'Pola Angka 1 contohData(0) = New Integer() _ {0, 1, 1, 0, 0, _ 1, 0, 1, 0, 0, _ 0, 0, 1, 0, 0, _ 0, 0, 1, 0, 0, _ 1, 1, 1, 1, 1, _ 0} 'Pola Angka 2 contohData(1) = New Integer() _ {0, 1, 1, 1, 0, _ 1, 0, 0, 0, 1, _ 0, 0, 1, 1, 0, _ 0, 1, 0, 0, 0, _ 1, 1, 1, 1, 1, _ 0} 'Pola Angka 3 contohData(2) = New Integer() _ {1, 1, 1, 1, 0, _ 0, 0, 0, 0, 1, _ 1, 1, 1, 1, 0, _ 0, 0, 0, 0, 1, _ 1, 1, 1, 1, 0, _ 0} 'Pola Angka 4 contohData(3) = New Integer() _ {0, 0, 0, 1, 1, _ 0, 0, 1, 0, 1, _ 0, 1, 1, 1, 1, _ 0, 0, 0, 0, 1, _ 0, 0, 0, 0, 1, _ 1} 'Pola Angka 5 contohData(4) = New Integer() _ {1, 1, 1, 1, 1, _ 1, 0, 0, 0, 0, _ 1, 1, 1, 1, 0, _ 0, 0, 0, 0, 1, _ 1, 1, 1, 1, 0, _ 0}
Selanjutnya ada pola baru yang ingin diketahui hasilnya
Maka tentukan pola baru ini cocok dengan pola yang mana saja
Diasumsikan pola baru adalah sebagai berikut:
1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||||
1 | 1 | 1 | |||||||||||||||||||||||||||
1 | 1 | 1 | 1 | ||||||||||||||||||||||||||
1 | 1 | ||||||||||||||||||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Contoh data baru yang akan dihitung adalah sebagai berikut:
Dim dataBaru As Integer()() = New Integer(1)() {} 'Pola Baru 1 dataBaru(0) = New Integer() _ {0, 1, 1, 1, 0, _ 1, 0, 0, 0, 1, _ 0, 0, 1, 1, 0, _ 0, 1, 0, 0, 0, _ 1, 1, 1, 1, 0} 'Pola Baru 2 dataBaru(1) = New Integer() _ {0, 1, 1, 1, 0, _ 0, 0, 0, 0, 1, _ 0, 0, 1, 1, 0, _ 0, 1, 0, 0, 0, _ 1, 1, 1, 1, 0}
Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan jumlah maksimal perulangan / epoch yang digunakan dalam perhitungan
Diasumsikan dalam kasus ini, jumlah maksimal perulangan adalah 100 kali
Const maksEpoch As Integer = 100
* Tentukan nilai alpha sebagai rasio pembelajaran untuk digunakan pada perhitungan matriks bobot
Semakin besar nilainya, maka semakin cepat nilai bobot akan berubah-ubah
Diasumsikan dalam kasus ini, rasio pembelajaran adalah 0.0075
Const alpha As Double = 0.075
* Tentukan batas nilai kesalahan yang paling rendah
Jika nilai kesalahan yang ditemukan sudah kurang dari nilai ini, maka perhitungan akan dihentikan
Diasumsikan dalam kasus ini, batas nilai kesalahan yang paling rendah adalah 0.00001
Const batasnilaiKesalahanMinimal As Double = 0.00001
Langkah-langkah penggunaan algoritma ini adalah
1. Lakukan proses pencarian matriks bobot terbaik untuk masing-masing pola angka
1a. Tentukan nilai bobot dan bias pada masing-masing pola angka
1a1. Hitung nilai delta yaitu selisih perhitungan antara kolom terakhir pola angka dengan hasil perhitungan kolom akhir pola angka tersebut
Dim hasilData As Integer = contohData(j)(contohData(j).Length - 1) Dim hasilPerhitungan As Integer = hitungNilaihasilPerhitungan(contohData(j), bobot, bias) Dim delta As Integer = hasilData - hasilPerhitungan
1a2. Hitung nilai bobot pada masing-masing data dengan rumus:
bobot = alpha * delta * nilai contoh data (0 atau 1)
For k As Integer = 0 To bobot.Length - 1 bobot(k) += (alpha * delta * contohData(j)(k)) Next
1a3. Kemudian tambahkan nilai bias pada nilai bobot tersebut
Nilai bias dihitung dengan rumus:
bias = alpha * delta
bias += (alpha * delta)
1b. Setelah menemukan matriks bobot, maka hitung total nilai kesalahan untuk matriks bobot ini
1b1. Hitung nilai delta yaitu selisih perhitungan antara kolom terakhir pola angka dengan hasil perhitungan kolom akhir pola angka tersebut
Dim hasilData As Integer = contohData(j)(contohData(j).Length - 1) Dim hasilPerhitungan As Integer = hitungNilaihasilPerhitungan(contohData(j), bobot, bias) Dim delta As Integer = hasilData - hasilPerhitungan
1b2. Hitung nilai total, yaitu jumlah dari delta * delta
total += delta * delta
1b3. Total nilai kesalahan adalah nilai total dibagi 2
Apabila total nilai kesalahan sudah kurang dari batas nilai kesalahan minimal, maka hentikan perhitungan
totalNilaiKesalahan = 0.5 * total
2. Untuk masing-masing pola baru,
Lakukan perhitungan prediksi dari data baru menggunakan nilai bobot dan bias terbaik yang sudah ditemukan pada masing-masing pola angka
Dim prediksi As Integer = hitungNilaihasilPerhitungan(dataBaru(i), bobotTerbaik(j), biasTerbaik(j), True)
* Gunakan fungsi ini untuk menghitung prediksi dari data yang tersedia
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini
Public Function hitungNilaihasilPerhitungan(data As Integer(), bobot As Double(), bias As Double, Optional ByVal isPrediksi As Boolean = False) As Integer 'Hitung nilai dp, yaitu jumlah dari perkalian antara masing-masing data baru dengan bobot nya Dim dp As Double = 0.0 For j As Integer = 0 To data.Length - IIf(isPrediksi, 1, 2) dp += (data(j) * bobot(j)) Next 'Kemudian tambahkan nilai bias pada nilai tersebut dp += bias 'Jika dp bernilai lebih dari 0.5, maka nilai prediksi adalah 1 'Jika dp bernilai kurang dari 0.5, maka nilai prediksi adalah 0 If dp > 0.5 Then Return 1 Else Return 0 End If End Function
Hasil akhir adalah: (klik untuk perbesar gambar)
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.