A. Praktikum
1. Buka Google Colaboratory melalui tautan ini.
2. Tulis kode berikut ke dalam setiap cell pada notebook tersebut.
a. Fungsi Training ELM
import numpy as np
def elm_fit(X, target, h, W=None):
if W is None:
W = np.random.uniform(-.5, .5, (h, len(X[0])))
Hinit = X @ W.T
H = 1 / (1 + np.exp(-Hinit))
Ht = H.T
Hp = np.linalg.inv(Ht @ H) @ Ht
beta = Hp @ target
y = H @ beta
mape = sum(abs(y - target) / target) * 100 / len(target)
if round_output:
y = [int(round(x)) for x in y]
return y
B. Screenshot
a. Fungsi Training ELM
Hasil :
C. Analisis
1. Jalankan program beberapa kali dan perhatikan nilai MAPE dan accuracy yang
dihasilkan. Simpulkan hubungan antara MAPE dan nilai akurasi!
Jawab :
Nilai dari variable MAPE menyimpan nilai dari nilai error pada jaringan,
sehingga hubungan dari nilai MAPE dan nilai akurasi adalah semakin kecil nilai
MAPE akan semakin baik dan meyebabkan besarnya nilai akurasi dan begitu
pula sebaliknya.
2. Ubahlah rentang bobot pada kode a dimana awalnya memiliki rentang -0.5
hingga 0.5 menjadi rentang lain (yang lebih besar maupun yang lebih kecil).
Simpulkan berdasarkan apa yang terjadi!
Jawab :
a. Rentang lebih besar (.7)
Hasil :
MAPE: 7.746317179663275
Output: [2, 2, 1, 3, 2, 1, 3, 3, 2, 2, 2, 3, 2, 1, 2, 3,
3, 2, 1, 3, 1, 1, 2, 1, 3, 1, 1, 2, 3, 2, 2, 3, 2, 1, 1,
2, 3, 1, 2, 3, 3, 1, 2, 3, 3]
True : [2 2 1 3 2 1 3 3 2 2 3 3 3 1 2 3 3 2 1 3 1 1 2 1
3 1 1 2 3 2 2 3 2 1 1 2 3
1 2 3 3 1 3 3 3]
Accuracy: 0.9333333333333333
Hasil :
MAPE: 11.29073316846559
Output: [1, 2, 3, 2, 2, 2, 2, 1, 3, 3, 2, 2, 3, 1, 3, 1,
3, 1, 2, 2, 1, 1, 2, 2, 1, 3, 2, 1, 3, 3, 3, 1, 3, 1, 2,
1, 3, 2, 3, 2, 2, 2, 2, 2, 2]
True : [1 2 3 3 3 2 3 1 3 2 2 2 3 1 3 1 3 1 2 2 1 1 2 2
1 3 3 1 3 3 3 1 3 1 2 1 3
2 3 2 2 2 2 2 3]
Accuracy: 0.8666666666666667
Terdapat perbedaan dari jaringan feedforward dengan ELM yaitu ELM dapat
mengatasi kelemahan yang dimiliki oleh jaringan feedforward dalam hal learning
speed yang terjadi, dikarenakan semua parameter pada jaringan ditentukan secara
iterative menggunakan metode pembelajaran satu-persatu untuk setiap data.
ELM dapat menghasilkan akurasi yang baik bahkan pada 1 kali proses
pelatihan karena tidak memerlukan backpropagation yang berbasis gradien.
Namun menggunakan inverse dari Moore-Penrose untuk perubahan bobot, ELM
juga menggunakan model Single Layer Feedforward Neural Network (SLFN).
Pada JST lain pada umumnya memiliki proses sebagai berikut, pertama melakukan
perkalian input dengan bobot, lalu langkah kedua menambahkan bias, dilanjut
dengan langkah ketiga yaitu melakukan fungsi aktivasi, kemudian langkah keempat
mengulangi langkah pertama sampai ketiga sebanyak jumlah layer, lalu langkah
kelima menghitung output, langkah keenam melakukan backpropagation dilanjut
dengan langkah ketujuh mengulangi langkah yang dilakukan sebelumnya. Namun
pada ELM Langkah keempat tak lagi diperlukan karena ELM menggunakan model
SLFN yang mana layer-nya single. Lalu pada langkah keenam, diganti
menggunakan matrix inverse yang hanya perlu dilakukan sekali, yang
menyebabkan langkah ketujuh pun tak perlu dilakukan.