Melanjutkan tulisan saya tentang algoritma Learning Vector Quantization yang lalu, kali ini saya akan melanjutkan dengan contoh perhitungan manual. Berikut ini contoh data yang akan kita hitung.
No | X1 | X2 | X3 | X4 | target |
1 | 0 | 1 | 1 | 0 | 0 |
2 | 0 | 0 | 1 | 1 | 1 |
3 | 1 | 1 | 1 | 1 | 0 |
4 | 1 | 0 | 0 | 1 | 1 |
pada contoh di atas, saya menggunakan 4 data sebagai data training beserta target yang bertujuan untuk mendapatkan bobot yang akan digunakan pada proses klasifikasi. Bobot awal adalah { 1, 1, 1, 0} dan { 1, 0, 1, 1} dengan learning rate 0,05 dengan fungsi pembelajaran = 0,1.
Pelatihan
Iterasi ke 1
1. Data ke 1 { 0, 1, 1, 0} dengan target 0, bobot = {{ 1, 1, 1, 0},{ 1, 0, 1, 1}} - menghitung bobot untuk masing masing output :
kelas 0 = sqrt(((0-1)^2)+((1-1)^2)+((1-1)^2)+((0-0)^2)) = 1
kelas 1 = sqrt(((0-1)^2)+((1-0)^2)+((1-1)^2)+((0-1)^2)) = 1.7320508075689
kelas 1 = sqrt(((0-1)^2)+((1-0)^2)+((1-1)^2)+((0-1)^2)) = 1.7320508075689
- menentukan kelas pemenang :
output = min(kelas 0, kelas 1) = kelas 0
- update bobot :
karena target 0 sama dengan output 0, maka update bobot :
W11 = 1 + (0.05*(0 - 1)) = 0.95
W12 = 1 + (0.05*(1 - 1)) = 1
W13 = 1 + (0.05*(1 - 1)) = 1
W14 = 0 + (0.05*(0 - 0)) = 0
W12 = 1 + (0.05*(1 - 1)) = 1
W13 = 1 + (0.05*(1 - 1)) = 1
W14 = 0 + (0.05*(0 - 0)) = 0
maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya
2. Data ke 2 { 0, 0, 1, 1} dengan target 1, bobot = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}}
- menghitung bobot untuk masing masing output :
maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya
3. Data ke 3 { 1, 1, 1, 1} dengan target 0, bobot = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}}
kelas 0 = sqrt(((0-0.95)^2)+((0-1)^2)+((1-1)^2)+((1-0)^2)) = 1.7036725037401
kelas 1 = sqrt(((0-1)^2)+((0-0)^2)+((1-1)^2)+((1-1)^2)) = 1
kelas 1 = sqrt(((0-1)^2)+((0-0)^2)+((1-1)^2)+((1-1)^2)) = 1
output = min(kelas 0, kelas 1) = kelas 1
- update bobot :
karena target 1 sama dengan output 1, maka update bobot :
W21 = 1 + (0.05*(0 - 1)) = 0.95
W22 = 0 + (0.05*(0 - 0)) = 0
W22 = 0 + (0.05*(0 - 0)) = 0
W23 = 1 + (0.05*(1 - 1)) = 1
W24 = 1 + (0.05*(1 - 1)) = 1
W24 = 1 + (0.05*(1 - 1)) = 1
maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya
3. Data ke 3 { 1, 1, 1, 1} dengan target 0, bobot = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}}
- menghitung bobot untuk masing masing output :
kelas 0 = sqrt(((1-0.95)^2)+((1-1)^2)+((1-1)^2)+((1-0)^2)) = 1.001249219725
kelas 1 = sqrt(((1-0.95)^2)+((1-0)^2)+((1-1)^2)+((1-1)^2)) = 1.001249219725
kelas 1 = sqrt(((1-0.95)^2)+((1-0)^2)+((1-1)^2)+((1-1)^2)) = 1.001249219725
- menentukan kelas pemenang :
output = min(kelas 0, kelas 1) = kelas 0,
- karena output antara kedua kelas sama besar, bisa dipilih salah satu sebagai output
- update bobot :
karena target 0 sama dengan output 0, maka update bobot :
W11 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
W12 = 1 + (0.05*(1 - 1)) = 1
W13 = 1 + (0.05*(1 - 1)) = 1
W14 = 0 + (0.05*(1 - 0)) = 0.05
W14 = 0 + (0.05*(1 - 0)) = 0.05
maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya
4. Data ke 4 { 1, 0, 0, 1} dengan target 1, bobot = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}}
- menghitung bobot untuk masing masing output :
kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((0-1)^2)+((1-0.05)^2)) = 1.7043345475581
kelas 1 = sqrt(((1-0.95)^2)+((0-0)^2)+((0-1)^2)+((1-1)^2)) = 1.001249219725
kelas 1 = sqrt(((1-0.95)^2)+((0-0)^2)+((0-1)^2)+((1-1)^2)) = 1.001249219725
- menentukan kelas pemenang :
output = min(kelas 0, kelas 1) = kelas 1
- update bobot :
karena target 1 sama dengan output 1, maka update bobot :
W21 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
W22 = 0 + (0.05*(0 - 0)) = 0
W22 = 0 + (0.05*(0 - 0)) = 0
W23 = 1 + (0.05*(0 - 1)) = 0.95
W24 = 1 + (0.05*(1 - 1)) = 1
maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}} untuk digunakan pada perhitungan data selanjutnyaW24 = 1 + (0.05*(1 - 1)) = 1
- setelah semua data selesai dihitung, update learning rate :
learning rate baru = fungsi pembelajaran * learning rate;
= 0.1 * 0.05 = 0.005
karena dalam satu iterasi semua data sudah diklasifikasikan dengan benar, maka iterasi pelatihan bisa dihentikan dan memakai bobot terakhir untuk digunakan dalam proses klasifikasi / prediksi. Jika dalam satu iterasi ada yang outputnya belum tepat, maka dilanjutkan ke iterasi berikutnya sampai dengan data diklasifikasikan dengan benar atau telah mencapai maksimal iterasi yang telah ditentukan.
Klasifikasi / Prediksi
Setelah didapat bobot hasil pelatihan yaitu {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}}, maka kita coba melakukan uji coba klasifikasi terhadap dua data yaitu { 1, 1, 1, 0} dan { 1, 0, 1, 1}.1. Data ke 1 { 1, 1, 1, 0}
kelas 0 = sqrt(((1-0.9525)^2)+((1-1)^2)+((1-1)^2)+((0-0.05)^2)) = 0.068965571120669kelas 1 = sqrt(((1-0.9525)^2)+((1-0)^2)+((1-0.95)^2)+((0-1)^2)) = 1.4158941521173
output = kelas 0
2. Data ke 2 { 1, 0, 1, 1}
kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((1-1)^2)+((1-0.05)^2)) = 1.3801290700511kelas 1 = sqrt(((1-0.9525)^2)+((0-0)^2)+((1-0.95)^2)+((1-1)^2)) = 0.068965571120669
output = kelas 1
Sekian tulisan saya kali ini, semoga bermanfaat.