Rabu, 06 November 2024

Tugas Besar Machine Learning: Penerapan Penerapan Jaringan Syaraf Tiruan Backpropagation untuk Smart Control Early Warning System (EWS)


Referensi :
Rahardi, G. A. (2023). Penerapan Jaringan Syaraf Tiruan Backpropagation untuk Smart Control Early Warning System (EWS). CYCLOTRON6(1).

Penerapan Jaringan Syaraf Tiruan Backpropagation untuk Smart Control Early Warning System (EWS)


Penelitian ini bertujuan mengembangkan sistem peringatan dini angin puting beliung di Kabupaten Jember, wilayah yang rawan bencana tersebut. Sistem ini menggunakan sensor DHT22 dan anemometer dengan metode Jaringan Syaraf Tiruan Backpropagation dan algoritma Levenberg-Marquardt. Hasilnya menunjukkan bahwa sistem mencapai Mean Squared Error (MSE) terbaik sebesar 3,6588 × 10^-7 dan rata-rata error pembelajaran sekitar ±2,61%, memungkinkan peringatan dini yang efektif bagi masyarakat.


Angin puting beliung, fenomena cuaca akibat ketidakstabilan atmosfer, sering terjadi saat musim pancaroba dan berasal dari awan Cumulonimbus. Walaupun bersifat lokal, angin ini dapat menyebabkan kerusakan signifikan seperti menerbangkan atap rumah dan menumbangkan pohon. Kabupaten Jember dikenal rawan puting beliung, sehingga diperlukan sistem peringatan dini untuk meningkatkan kesiagaan masyarakat. Berdasarkan data BMKG, suhu saat kejadian berkisar 24,2-31,7°C dan kelembaban 63-92%. Penelitian ini bertujuan merancang alat peramalan puting beliung dengan jaringan syaraf tiruan backpropagation, menggunakan data dari sensor anemometer dan DHT22, serta algoritma pembelajaran seperti Levenberg-Marquardt. Alat ini diharapkan membantu masyarakat dan pemerintah mengantisipasi bencana sejak dini.


A. Jaringan Syaraf Tiruan dan Metode Jaringan Syaraf Tiruan Backpropagation

Jaringan Syaraf Tiruan (JST) atau Artificial Neural Network (ANN) adalah metode kecerdasan buatan yang meniru cara kerja otak manusia dalam memproses informasi. JST terdiri dari lapisan input, lapisan tersembunyi, dan lapisan output yang saling terhubung melalui neuron. Neuron memproses data menggunakan fungsi aktivasi, sementara pembelajaran dilakukan dengan algoritma seperti backpropagation untuk menyesuaikan bobot dan bias. JST digunakan dalam pengenalan pola, klasifikasi, pengolahan gambar, pemrosesan bahasa alami, dan prediksi pasar saham. Keunggulannya adalah kemampuan menangani masalah kompleks dan non-linear, namun memiliki kelemahan seperti kebutuhan data besar, pelatihan lama, dan sifat "kotak hitam" yang sulit dipahami.

Metode Jaringan Syaraf Tiruan Backpropagation adalah algoritma pelatihan yang mengoptimalkan jaringan dengan meminimalkan kesalahan antara output prediksi dan yang diharapkan. Prosesnya meliputi feedforward untuk prediksi awal dan backward propagation untuk menyebarkan kesalahan serta memperbarui bobot menggunakan metode seperti gradient descent. Metode ini efektif untuk masalah kompleks namun membutuhkan banyak data dan waktu pelatihan.


B. Pembelajaran Jaringan Syaraf Tiruan

Algoritma Levenberg-Marquardt adalah metode optimasi iteratif untuk menyelesaikan masalah non-linear least squares, menggabungkan pendekatan Gauss-Newton dan gradient descent untuk mencapai keseimbangan antara kecepatan konvergensi dan stabilitas. Algoritma ini digunakan dalam fitting kurva dan pemodelan data dengan meminimalkan perbedaan antara prediksi model dan data aktual. Dengan faktor damping dinamis, algoritma ini dapat beralih antara pendekatan Gauss-Newton saat mendekati solusi optimal dan gradient descent saat masih jauh.

Prosesnya melibatkan inisialisasi parameter, iterasi pembaruan berdasarkan fungsi objektif, dan terminasi saat perubahan parameter atau fungsi objektif kecil. Algoritma ini stabil, efektif untuk optimasi non-linear, dan banyak digunakan dalam machine learning, pemodelan ilmiah, dan computer vision. Namun, kekurangannya meliputi waktu komputasi tinggi untuk model kompleks dan potensi lambat pada dataset besar.

Rumus untuk menghitung nilai eror antara nilai model dengan data aktual:

Dimana:

yi            = nilai data aktual
a + bxi    = model dari nilai y

Mean Sequence Error (MSE) mengukur rata-rata kuadrat perbedaan antara nilai prediksi model dan nilai aktual data. MSE yang lebih rendah menunjukkan performa prediksi yang lebih baik dengan error yang lebih kecil.

Sedangkan rumus untuk m
enghitung jarak antara titik Centroid dengan titik tiap objek:

Dimana:

yi        = nilai aktual dari data pada pengamatan ke - i
y^i      = nilai prediksi dari model pada pengamatan ke - i
n         = jumlah total pengamatan atau data.

C. RapidMiner

RapidMiner adalah perangkat lunak open source untuk analisis data mining, text mining, dan prediksi, ditulis dalam Java sehingga dapat digunakan di semua sistem operasi. Awalnya bernama YALE, RapidMiner dikembangkan pada 2001 oleh Ralf Klinkenberg, Ingo Mierswa, dan Simon Fischer di University of Dortmund. Berlisensi AGPL versi 3, RapidMiner menyediakan GUI untuk merancang pipeline analitis yang menghasilkan file XML, yang kemudian diproses oleh RapidMiner untuk menjalankan analisis secara otomatis.


Pertama, dilakukan kalibrasi sensor DHT 22. Pengujian sensor DHT22 dilakukan dengan membandingkan hasil pembacaan suhu dan kelembaban dengan alat digital, yaitu termometer dan hygrometer merk Taffware tipe HTC-2, yang memiliki akurasi ±1°C untuk suhu dan ±5% untuk kelembaban. Dari perbandingan ini, rata-rata error persen suhu sebesar ±7,28%, dan untuk kelembaban sebesar ±8,65%. Selain itu, uji kelinieran menghasilkan persamaan kalibrasi suhu y = 1,2777x - 6,6329, di mana y adalah suhu hasil kalibrasi, dan x adalah suhu dari sensor DHT22:


Pengujian kelembaban sensor DHT22 dibandingkan dengan hygrometer digital menunjukkan persamaan kalibrasi y = 1,0128x + 4,9318. Setelah kalibrasi, rata-rata error suhu menurun menjadi ±0,38 dan rata-rata error kelembaban menjadi ±3,60%, menunjukkan peningkatan akurasi dibandingkan sebelum kalibrasi.

Kedua, kalibrasi sensor anemometer. Sensor anemometer menggunakan rotary encoder untuk membaca RPM, yang kemudian dikonversi menjadi kecepatan angin dalam m/s. Pengujian dilakukan dengan membandingkan hasil pembacaan sensor dengan anemometer digital.


Pengujian menunjukkan bahwa sensor anemometer cup memiliki error ±1,12% dibandingkan dengan anemometer digital, sehingga hasilnya sudah cukup akurat tanpa memerlukan tambahan rumus pada program Arduino.

Selanjutnya, Dalam jaringan saraf tiruan ini, arsitektur yang digunakan ditunjukkan pada Gambar JST di bab literatur. Proses pembelajaran dilakukan dengan beberapa algoritma, menggunakan parameter learning rate sebesar 0,001 dan 1.000 epoch, dengan target Mean Sequence Error (MSE) < 0,0001. Setelah data input dinormalisasi sesuai Persamaan 1, pembelajaran dimulai. Tabel 1 menunjukkan nilai input dan target yang digunakan untuk pembelajaran.

Pembelajaran pertama menggunakan algoritma Gradient Descent dengan Momentum, yang tidak hanya merespons gradien lokal tetapi juga mempertimbangkan tren yang baru-baru ini terjadi pada permukaan error. Dengan fungsi aktivasi sigmoid bipolar pada layer tersembunyi dan fungsi aktivasi linier pada layer output, MSE terbaik sebesar 0,0065481 dicapai pada epoch ke-25.


Gambar diatas menunjukkan grafik MSE selama pembelajaran, dan Tabel 7 berisi hasil pembelajaran menggunakan algoritma Gradient Descent dengan Momentum. Rata-rata error dari algoritma ini adalah sekitar ±3,78%.

Pembelajaran terakhir menggunakan algoritma Levenberg-Marquardt, yang dirancang dengan pendekatan turunan kedua. Selama pembelajaran, digunakan fungsi aktivasi sigmoid bipolar pada layer tersembunyi dan fungsi aktivasi linier pada layer output. Hasilnya, MSE yang dicapai adalah 3,6588 x 10⁻⁷ pada epoch ke-7. Grafik hasil pembelajaran ditampilkan pada Gambar 6, dan Tabel 8 menunjukkan detail hasil pembelajaran. Rata-rata error untuk setiap kondisi adalah sekitar ±2,61%.


Hasil pembelajaran jaringan saraf tiruan menunjukkan bahwa dengan learning rate 0,001, 1.000 epoch, dan target MSE < 0,0001, algoritma Levenberg-Marquardt memberikan hasil terbaik. Nilai MSE yang dicapai adalah 3,6588 x 10⁻⁷ pada epoch ke-7, dengan rata-rata error pembelajaran sekitar ±2,61%. Oleh karena itu, penelitian ini menggunakan Jaringan Saraf Tiruan Backpropagation dengan algoritma Levenberg-Marquardt.


Untuk pengujian alat, setelah kalibrasi sensor anemometer dan DHT22 serta pembelajaran menggunakan Jaringan Saraf Tiruan Backpropagation (JST-BP), dilakukan pengujian alat untuk menganalisis performanya. Pengujian skala lab menggunakan kipas angin untuk sumber angin buatan, dengan tambahan angin dari kompresor untuk kondisi tertentu. Suhu dan kelembaban dinaikkan menggunakan pemanas dan air. Data dari sensor dirata-rata, dinormalisasi, dan diproses oleh Arduino MEGA menggunakan JST-BP dengan bobot dan bias hasil pembelajaran. Hasil pembacaan sensor ditampilkan di LCD, menunjukkan kondisi terkini, sementara sirine berbunyi sebagai peringatan dini saat kondisi siaga atau waspada.

Penelitian menunjukkan bahwa pembacaan sensor anemometer dan DHT22 setelah kalibrasi memiliki akurasi yang baik, dengan persentase error kurang dari 5% dibandingkan alat digital seperti anemometer, termometer, dan hygrometer. Jaringan saraf tiruan dengan algoritma Levenberg-Marquardt digunakan untuk peramalan, menghasilkan nilai Mean Square Error (MSE) kecil sebesar 3,6588 x 10⁻⁷, yang menunjukkan kemampuan peramalan yang akurat saat diterapkan pada alat.


Untuk memastikan hasil jurnal diatas, maka dilakukanlah pengujian menggunakan aplikasi MATLAB. Disini akan dibagi 2 buah data yang diambil dari jurnal dan disalin ke dalam bentuk Ms Excel. 2 buah kelompok data tersebut yaitu data latih dan data uji dengan kelompok data bagian atas yaitu data latih beserta targetnya dan kelompok data bagian bawah yaitu data uji beserta targetnya.


Lalu, masukkan data tersebut ke dalam MATLAB dalam bentuk array dengan format filenya 'data_uji' dan 'data_latih'. Sertakan juga target latihnya yang disimpan dengan nama 'target_latih'.


Kemudian, buatlah kodingan untuk data latih dan data uji yang mana masing-masing diberi nama 'training' dan 'testing'. Untuk sintaks kodingan data latih sebagai berikut:

% Memuat data latih dan target latih
load('data_latih.mat');
load('target_latih.mat');

% Menentukan jumlah neuron pada hidden layer dan output
hidden_layer = 5;
output = 1;

% Membuat jaringan neural
net = newff(minmax(data_latih), [hidden_layer, output], {'logsig', 'logsig'}, 'traingd');

% Menentukan fungsi performa
net.performFcn = 'mse';

% Menetapkan parameter pelatihan
net.trainParam.epochs = 1000;
net.trainParam.goal = 0.001;
net.trainParam.lr = 0.001;

% Inisialisasi jaringan
net = init(net);

% Melatih jaringan neural
[net, tr] = train(net, data_latih, target_latih);

Sedangkan untuk kodingan data uji sebagai berikut:

% Memuat data uji
load('data_uji.mat');

% Menentukan jumlah data uji
jumlahData = 5;

% Menghitung output jaringan neural menggunakan data uji
y = sim(net, data_uji);

% Inisialisasi array untuk kelas
kelas = zeros(1, jumlahData);

% Menampilkan hasil pengujian
disp('Hasil Pengujian');

% Melakukan iterasi untuk setiap data uji
for a = 1:jumlahData
    if y(a) >= 0 && y(a) < 0.1
        disp('Kelas 1');
    elseif y(a) >= 0.1 && y(a) < 0.2
        disp('Kelas 2');
    elseif y(a) >= 0.2 && y(a) <= 0.3
        disp('Kelas 3');
    else
        disp('Nilai tidak valid');
    end
end

Pada sintaks data latih ini digunakan untuk membuat dan melatih jaringan neural untuk masalah regresi. Data pelatihan dan target dimuat dari file .mat. Jaringan neural dibuat dengan satu lapisan tersembunyi berisi 5 neuron dan satu neuron output, menggunakan fungsi aktivasi logsig. Proses pelatihan dilakukan dengan algoritma Gradient Descent dan fungsi performa Mean Squared Error (MSE). Parameter pelatihan meliputi 1000 epoch, tujuan kesalahan 0.001, dan learning rate 0.001. Setelah inisialisasi, jaringan dilatih untuk meminimalkan kesalahan prediksi, menghasilkan jaringan yang telah dilatih dan informasi pelatihan.

Sedangkan pada sintaks data uji digunakan untuk menguji hasil prediksi jaringan neural menggunakan data uji. Data uji dimuat dari file data_uji.mat, dan output jaringan dihitung dengan fungsi sim(net, data_uji). Hasil prediksi disimpan dalam variabel y. Sebuah loop digunakan untuk memeriksa nilai prediksi dan mengklasifikasikannya ke dalam tiga kelas berdasarkan rentang nilai yang ditentukan: Kelas 1 (0–0.1), Kelas 2 (0.1–0.2), dan Kelas 3 (0.2–0.3). Jika nilai prediksi tidak valid, ditampilkan pesan 'Nilai tidak valid'. Hasil pengujian kemudian ditampilkan ke layar.


Setelah kodingan dan data-data telah diinputkan ke dalam MATLAB, selanjutnya dilakukan eksekusi. Untuk kodingan 'training' di-running sehingga didapatkan hasilnya sebagai berikut:


Pada window tersebut ada opsi 'performance', 'training state', dan 'regression'. Disana bisa di cek apakah model data sudah sesuai dengan yang seharusnya.


Gambar menunjukkan grafik performa pelatihan jaringan neural dengan Mean Squared Error (MSE) selama 1000 epoch. Performa terbaik dicapai pada epoch ke-1000 dengan MSE sebesar 0.041673, tetapi belum memenuhi target kesalahan 0.001. Kurva biru menunjukkan penurunan MSE yang stabil hingga mendatar di akhir, mengindikasikan batas optimal telah tercapai. Kegagalan mencapai target dapat disebabkan oleh arsitektur jaringan, jumlah data, atau parameter pelatihan yang kurang optimal. Untuk meningkatkan performa, diperlukan penyesuaian pada elemen-elemen tersebut. Meskipun pelatihan berhasil, hasil akhirnya belum memenuhi kriteria yang diinginkan.

Gambar ini menunjukkan status pelatihan jaringan neural setelah 1000 epoch, dengan grafik gradien dan validation checks. Grafik gradien menunjukkan penurunan dari 0.14 menjadi 0.10972, menandakan pembelajaran bertahap, namun gradien yang belum mendekati nol mengindikasikan pelatihan belum mencapai konvergensi penuh. Grafik validation checks menunjukkan nilai tetap 0, menandakan tidak ada overfitting, tetapi juga menunjukkan kemungkinan data validasi tidak digunakan. Pelatihan stabil namun belum optimal, dan peningkatan performa dapat dicapai dengan menyesuaikan parameter seperti jumlah epoch, learning rate, atau arsitektur jaringan.


Gambar ini menunjukkan plot regresi hasil pelatihan jaringan neural dengan koefisien korelasi (R) sebesar 0.55069, menandakan hubungan sedang antara output dan target, tetapi jauh dari optimal. Garis biru (Fit) menunjukkan hubungan linear dengan bias dan kemiringan yang belum sempurna, sementara sebagian besar data menyimpang jauh dari garis ideal (Y = T), mencerminkan ketidaktepatan prediksi. Pelatihan yang belum optimal ini kemungkinan disebabkan oleh parameter, arsitektur jaringan, atau data pelatihan yang kurang memadai. Untuk meningkatkan performa, diperlukan penyesuaian pada arsitektur, parameter, atau kualitas data.

Terakhir, eksekusi sintaks 'testing'. Berdasarkan dari 5 buah data uji, didapatkanlah 4 dari 5 data telah sesuai dengan target dari data uji yang ada pada Ms Excel sebelumnya.



Disini digunakan data latih dan data uji yang sama dengan metode JST. Pertama tuliskan 'fuzzy' pada window koding MATLAB lalu eksekusi. Maka munculah window baru sebagai berikut:


Tambahkan data uji yang diinginkan. Karena disini menggunakan 3 buah parameter, maka terdapat 3 blok diagram pada inputnya.


Masukkan data - data tiap - tiap rentang parameter ke dalam blok diagram yang sesuai.




Kemudian, atur output yang diinginkan. Karena disini terdapat 3 output, maka 3 jenis output yang akan ditambahkan ke dalam blok diagram outputnya.


Lalu, masukkan aturan Fuzzy yang mungkin terjadi lalu tambahkan dengan me - klik opsi 'Rules' di kiri pojok atas di tab 'edit'.


Karena hanya terdapat 3 kondisi yang mungkin terjadi, maka didapatkan 3 rules pada model fuzzy ini.


Lalu export rules menjadi workspace yang telah dibuat dengan meng - klik pojok kiri atas di tab 'edit'. View hasil rules dengan meng - klik tab 'view' disebelah tab 'edit'. Berikut untuk views - nya.


Gambar ini menunjukkan tampilan program yang digunakan untuk mempelajari cara kerja sistem logika fuzzy. Program ini memiliki empat variabel, yaitu "Angle", "Device", "Grinderstone", dan "Furnace", yang ditampilkan dalam bentuk grafik. Grafik ini menunjukkan bagaimana setiap variabel berubah tergantung pada nilai input. Misalnya, pada variabel "Angle", area berwarna kuning menunjukkan nilai input yang sedang diproses. Nilai-nilai tersebut dimasukkan dalam bentuk angka (seperti "0.25, 0.25, 0.5") dan kemudian diolah oleh sistem. Setelah proses selesai, hasil akhirnya muncul sebagai garis merah pada variabel "Furnace". Program ini juga memiliki tombol navigasi untuk mempermudah pengguna menyesuaikan atau melihat data. Tujuan utama program ini adalah membantu pengguna memahami bagaimana input diolah menjadi output menggunakan logika fuzzy.




Backpropagation in Neural Networks | Back Propagation Algorithm with Examples


















Tidak ada komentar:

Posting Komentar

Tugas Besar Machine Learning: Penerapan Penerapan Jaringan Syaraf Tiruan Backpropagation untuk Smart Control Early Warning System (EWS)

Referensi : Rahardi, G. A. (2023). Penerapan Jaringan Syaraf Tiruan Backpropagation untuk Smart Control Early Warning System (EWS).  CYCLOTR...