Anda di halaman 1dari 119

TUGAS AKHIR – IF184802

PENERAPAN ALGORITMA MULTI-HEAD 1-DIMENSIONAL


CONVOLUTIONAL NEURAL NETWORK UNTUK
PENGENALAN AKTIVITAS MANUSIA

MUHAMMAD FIKRI SANDI PRATAMA


NRP 05111940000195

Dosen Pembimbing I
Dwi Sunaryono, S.Kom., M.Kom.
NIP 197205281997021001

Dosen Pembimbing II
Dr. Yudhi Purwananto, S.Kom., M.Kom.
NIP 197007141997031002

Program Studi S1 Teknik Informatika


Departemen Teknik Informatika
Fakultas Teknologi Elektro dan Informatika Cerdas
Institut Teknologi Sepuluh Nopember
Surabaya
2023
1
(Halaman ini sengaja dikosongkan)

2
TUGAS AKHIR – IF184802

PENERAPAN ALGORITMA MULTI-HEAD 1-


DIMENSIONAL CONVOLUTIONAL NEURAL
NETWORK UNTUK PENGENALAN AKTIVITAS
MANUSIA

MUHAMMAD FIKRI SANDI PRATAMA


NRP 05111940000195

Dosen Pembimbing I
Dwi Sunaryono, S.Kom., M.Kom.
NIP 197205281997021001

Dosen Pembimbing II
Dr. Yudhi Purwananto, S.Kom., M.Kom.
NIP 197007141997031002

Program Studi S1 Teknik Informatika


Departemen Teknik Informatika
Fakultas Teknologi Elektro dan Informatika Cerdas
Institut Teknologi Sepuluh Nopember
Surabaya
2023

i
(Halaman ini sengaja dikosongkan)

ii
FINAL PROJECT – IF184802

IMPLEMENTATION OF MULTI-HEAD 1-DIMENSIONAL


CONVOLUTIONAL NEURAL NETWORK ALGORITHM
FOR HUMAN ACTIVITY RECOGNITION

MUHAMMAD FIKRI SANDI PRATAMA


NRP 05111940000195

Advisor I
Dwi Sunaryono, S.Kom., M.Kom.
NIP 197205281997021001

Advisor II
Dr. Yudhi Purwananto, S.Kom., M.Kom.
NIP 197007141997031002

Study Program Bachelor of Informatics


Department of Informatics
Faculty of Intelligent Electrical and Informatics Technology
Institut Teknologi Sepuluh Nopember
Surabaya
2023
iii
(Halaman ini sengaja dikosongkan)

iv
LEMBAR PENGESAHAN

PENERAPAN ALGORITMA MULTI-HEAD 1-DIMENSIONAL CONVOLUTIONAL


NEURAL NETWORK UNTUK PENGENALAN AKTIVITAS MANUSIA

TUGAS AKHIR
Diajukan untuk memenuhi salah satu syarat
Memperoleh gelar Sarjana Komputer pada
Program Studi S-1 Teknik Informatika
Departemen Teknik Informatika
Fakultas Teknologi Elektro dan Informatika Cerdas
Institut Teknologi Sepuluh Nopember

Oleh : Muhammad Fikri Sandi Pratama


NRP. 05111940000195

Disetujui oleh Tim Penguji Tugas Akhir:


1. Dwi Sunaryono, S.Kom., M.Kom. Pembimbing
NIP. 197205281997021001

2. Dr. Yudhi Purwananto, S.Kom., M.Kom. Ko-pembimbing


NIP. 197007141997031002

3. Dr. Agus Budi Raharjo, S.Kom., M.Kom. Penguji


NIP. 1990202011022

4. Ridho Rahman Hariadi, S.Kom, M.Sc Penguji


NIP. 198702132014041001

SURABAYA
Juli, 2023

v
(Halaman ini sengaja dikosongkan)

vi
APPROVAL SHEET

IMPLEMENTATION OF MULTI-HEAD 1-DIMENSIONAL CONVOLUTIONAL


NEURAL NETWORK ALGORITHM FOR HUMAN ACTIVITY RECOGNITION

FINAL PROJECT
Submitted to fulfill one of the requirements
for obtaining a degree Bachelor of Informatics at
Undergraduate Study Program of Bachelor of Informatics
Department of Informatics
Faculty of Intelligent Electrical and Informatics Technology
Institut Teknologi Sepuluh Nopember

By: Muhammad Fikri Sandi Pratama


NRP. 05111940000195

Approved by Final Project Examiner Team:


1. Dwi Sunaryono, S.Kom., M.Kom. Advisor
NIP. 197205281997021001

2. Dr. Yudhi Purwananto, S.Kom., M.Kom. Co-Advisor


NIP. 197007141997031002

3. Dr. Agus Budi Raharjo, S.Kom., M.Kom. Examiner


NIP. 1990202011022

4. Ridho Rahman Hariadi, S.Kom, M.Sc Examiner


NIP. 198702132014041001

SURABAYA
July, 2023

vii
(Halaman ini sengaja dikosongkan)

viii
PERNYATAAN ORISINALITAS

Yang bertanda tangan di bawah ini:


Nama mahasiswa / NRP : Muhammad Fikri Sandi Pratama / 05111940000195
Departemen : Teknik Informatika
Dosen Pembimbing I / NIP : Dwi Sunaryono, S.Kom., M.Kom. /
197205281997021001
Dosen Pembimbing II / NIP : Dr. Yudhi Purwananto, S.Kom., M.Kom. /
197007141997031002

Dengan ini menyatakan bahwa Tugas Akhir dengan judul “Penerapan Algoritma Multi-head 1-
Dimensional Convolutional Neural Network Untuk Pengenalan Aktivitas Manusia” adalah
hasil karya sendiri, bersifat orisinal, dan ditulis dengan mengikuti kaidah penulisan ilmiah.
Bilamana di kemudian hari ditemukan ketidaksesuaian dengan pernyataan ini, maka saya
bersedia menerima sanksi sesuai dengan ketentuan yang berlaku di Institut Teknologi Sepuluh
Nopember.
Surabaya, 31 Juli 2023
Mahasiswa

Muhammad Fikri Sandi Pratama


NRP. 05111940000195
Mengetahui,
Dosen Pembimbing I Dosen Pembimbing II

Dwi Sunaryono, S.Kom., M.Kom. Dr. Yudhi Purwananto, S.Kom., M.Kom.


NIP. 197205281997021001 NIP. 197007141997031002

ix
(Halaman ini sengaja dikosongkan)

x
STATEMENT OF ORIGINALITY

The undersigned below:

Name of student / NRP : Muhammad Fikri Sandi Pratama / 05111940000195


Department : Informatics Engineering
Advisor I / NIP : Dwi Sunaryono, S.Kom., M.Kom. /
197205281997021001
Advisor II / NIP : Dr. Yudhi Purwananto, S.Kom., M.Kom. /
197007141997031002

Hereby declare that Final Project with the title of “Implementation of Multi-head 1-
Dimensional Convolutional Neural Network Algorithm for Recognition of Human Activities”
is the result of my own work, is original, and is written by following the rules of scientific
writing.
If in the future there is a discrepancy with this statement, then I am willing to accept sanctions
in accordance with the provisions that apply at Institut Teknologi Sepuluh Nopember.

Surabaya, 31 July 2023


Student

Muhammad Fikri Sandi Pratama


NRP. 05111940000195
Acknowledge,
Advisor I Advisor II

Dwi Sunaryono, S.Kom., M.Kom. Dr. Yudhi Purwananto, S.Kom., M.Kom.


NIP. 197205281997021001 NIP. 197007141997031002

xi
(Halaman ini sengaja dikosongkan)

xii
PENERAPAN ALGORITMA MULTI-HEAD 1-DIMENSIONAL CONVOLUTIONAL
NEURAL NETWORK UNTUK PENGENALAN AKTIVITAS MANUSIA

Nama Mahasiswa / NRP : Muhammad Fikri Sandi Pratama / 05111940000195


Departemen : Teknik Informatika FTEIC – ITS
Dosen Pembimbing I : Dwi Sunaryono, S.Kom., M.Kom.
Dosen Pembimbing I I : Dr. Yudhi Purwananto, S.Kom., M.Kom.

Abstrak

Pengenalan aktivitas manusia adalah suatu bidang penelitian yang bertujuan untuk
mengenali dan mengklasifikasikan aktivitas yang dilakukan oleh manusia berdasarkan data
sensor yang dikumpulkan. Dataset yang digunakan dalam penelitian ini adalah UCI HAR
(Human Activity Recognition), yang merupakan kumpulan data yang terdiri dari pengukuran
sensor menggunakan accelerometer dan gyroscope. Aktivitas pada dataset sudah dilakukan
pelabelan diantaranya: walking, walking Upstairs, walking Downstairs, sitting, standing, dan
laying. Metode yang digunakan dalam penelitian ini adalah Multi-head 1-Dimensional
Convolutional Neural Network (CNN). Metode ini memanfaatkan konvolusi 1 dimensi dan
arsitektur jaringan saraf dengan beberapa kepala (Multi-head) untuk memproses data urutan
dan mengekstraksi fitur yang relevan. Arsitektur ini memungkinkan pengenalan aktivitas
manusia yang akurat dan efisien. Sebelum proses pelatihan, dilakukan pra-pemrosesan data
yang mencakup pembersihan data, segmentasi data, one-hot encoding untuk mengubah label
aktivitas menjadi representasi biner, dan skalasi dan normalisasi data untuk mengoptimalkan
performa model. Langkah-langkah ini penting untuk memastikan kualitas data yang masuk dan
mengurangi bias dalam proses pembelajaran. Hasil eksperimen yang diperoleh menunjukkan
bahwa penggunaan Multi-head 1-Dimensional Convolutional Neural Network (1D-CNN) pada
dataset UCI HAR dan penerapan metode pra-pemrosesan data yang mencakup pembersihan
data, segmentasi data, one-hot encoding, serta skalasi dan normalisasi data, berhasil mencapai
tingkat akurasi yang tinggi sebesar 98,12% dan F1-Skor 98,49%. Hasil ini menunjukkan
keefektifan dan kehandalan metode yang digunakan dalam pengenalan aktivitas manusia, serta
memberikan kontribusi yang signifikan dalam meningkatkan klasifikasi aktivitas manusia
secara otomatis. Dengan demikian, penelitian ini memiliki potensi untuk mendukung berbagai
aplikasi yang membutuhkan pemahaman dan pengenalan aktivitas manusia.

Kata kunci: Akurasi, Multi-head 1D-CNN, Pengenalan aktivitas manusia, UCI HAR.

xiii
(Halaman ini sengaja dikosongkan)

xiv
IMPLEMENTATION OF MULTI-HEAD 1-DIMENSIONAL CONVOLUTIONAL
NEURAL NETWORK ALGORITHM FOR RECOGNITION OF HUMAN
ACTIVITIES

Student Name / NRP : Muhammad Fikri Sandi Pratama / 05111940000195


Department : Informatics FTEIC - ITS
Advisor I : Dwi Sunaryono, S.Kom., M.Kom.
Advisor II : Dr. Yudhi Purwananto, S.Kom., M.Kom.

Abstract

Based on gathered sensor data, the field of research known as "human activity
identification" aims to identify and categorize human activities. The data set used in this study
is UCI HAR (Human Activity Recognition), which is a collection of data consisting of sensor
measurements using accelerometers and gyroscopes. Activities on the dataset have already been
labeled, such as walking, walking upstairs, walking downstairs, sitting, standing, and
laying.The method used in this study is the Multi-head 1-Dimensional Convolutional Neural
Network. (CNN). This method uses Multi-head 1-Dimensional Convolutions Neural Network
(1D-CNN) architectures to process sequence data and extract relevant features. This
architecture enables accurate and efficient identification of human activity. Before the Training
process, data pre-processing is carried out, which includes data cleaning, data segmentation,
one-hot encoding to convert activity labels into binary representations, and data scaling and
normalization to optimize model performance. These steps are important to ensure the quality
of the incoming data and reduce bias in the learning process The results of the experiment
showed that the use of a Multi-head 1-Dimensional Convolutional Neural Network (1D-CNN)
on the UCI HAR data set and the application of data pre-processing methods that include data
cleaning, data segmentation, one-hot encoding, as well as data scaling and normalization,
managed to achieve a high accuracy of 98,12% and an f1-score of 98,49%. These results show
the effectiveness and reliability of the methods used in the identification of human activity, as
well as make a significant contribution to improving the automatic classification of human
activities. Thus, this research has the potential to support a range of applications that require
understanding and recognition of human activity.

Kata kunci: Accuracy, Human Activity Recognition, Multi-head 1D-CNN, UCI HAR
datasets.

xv
(Halaman ini sengaja dikosongkan)

xvi
KATA PENGANTAR
Bismillahirrahmanirrahim
Puji syukur kepada Allah Yang Maha Esa atas segala karunia dan rahmat-Nya sehingga
penulis dapat menyelesaikan Tugas Akhir yang berjudu
“PENERAPAN ALGORITMA MULTI-HEAD 1-DIMENSIONAL
CONVOLUTIONAL NEURAL NETWORK UNTUK PENGENALAN AKTIVITAS
MANUSIA”
Harapan dari penulis, semoga apa yang tertulis di dalam buku Tugas Akhir ini dapat
bermanfaat bagi pengembangan ilmu pengetahuan saat ini dan ke depannya, serta dapat
memberikan kontribusi yang nyata.
Dalam pelaksanaan dan pembuatan Tugas Akhir ini tentunya sangat banyak bantuan yang
penulis terima dari berbagai pihak, tanpa mengurangi rasa hormat penulis ingin mengucapkan
terima kasih sebesar-besarnya kepada:
1. Allah SWT. Dan Nabi Muhammad SAW. yang telah membimbing penulis selama hidup
2. Keluaga penulis (Ayah, Ibu, Adik, dan Saudara) yang selalu memberikan dukungan
emotional, spiritual, dan material yang tak terhingga kepada penulis, sehingga penulis
dapat menyelesaikan Tugas Akhir ini.
3. Ibu Prof. Dr. Eng. Chastine Fatichah, S.Kom., M.Kom. sebagai Kepala Departemen
Teknik Informatika ITS.
4. Bapak Dwi Sunaryono, S.Kom., M.Kom. sebagai dosen pembimbing utama dan Bapak
Dr. Yudhi Purwananto, S.Kom., M.Kom. sebagai dosen pembimbing pendamping yang
telah meluangkan waktu memberikan dukungan, bimbingan dan motivasi dalam
menyelesaikan Tugas Akhir ini.
5. Seluruh dosen dan karyawan yang telah memberikan ilmunya selama penulis berkuliah
di Teknik Informatika ITS
6. Teman-teman organisasi, kepanitiaan, dan kontrakan yang telah berbagi banyak
pengalaman berharga dengan penulis.
7. Teman-teman TC Angkatan 2019 Enigmatics yang sudah menjadi saksi hidup perjalanan
akademik penulis selama berkuliah di Teknik Informatika ITS.
8. Teman-teman GermaTech yang selalu memberikan wawasan dan pengetahuan kepada
penulis
9. Semua pihak yang telah membantu dan tidak dapat disebutkan satu persatu.
Penulis berharap semoga Allah SWT. mengaruniakan rahmat dan hidayah-Nya kepada
mereka semua. Semoga skripsi ini dapat bermanfaat bagi kita semua, Aamiin.
Surabaya, 13 Juli 2023

M. Fikri Sandi Pratama

xvii
(Halaman ini sengaja dikosongkan)

xviii
DAFTAR ISI

LEMBAR PENGESAHAN ................................................................................................. v


PERNYATAAN ORISINALITAS ..................................................................................... ix
STATEMENT OF ORIGINALITY .................................................................................... xi
ABSTRAK ........................................................................................................................xiii
KATA PENGANTAR ..................................................................................................... xvii
DAFTAR ISI ..................................................................................................................... xix
DAFTAR GAMBAR/GRAFIK/DIAGRAM .................................................................... xxi
DAFTAR TABEL ............................................................................................................ xxii
DAFTAR KODE SUMBER ............................................................................................ xxv
BAB I PENDAHULUAN .................................................................................................... 1
1.1 Latar belakang ..................................................................................................... 1
1.2 Rumusan Permasalahan ...................................................................................... 2
1.3 Batasan Masalah ................................................................................................. 2
1.4 Tujuan ................................................................................................................. 2
1.5 Manfaat ............................................................................................................... 2
BAB II TINJAUAN PUSTAKA.......................................................................................... 3
2.1 Penelitian Terkait ................................................................................................ 3
2.2 Pengenalan Aktivitas Manusia............................................................................ 6
2.3 Supervised Learning ........................................................................................... 7
2.4 Python Library .................................................................................................... 7
2.4.1 Keras ....................................................................................................... 7
2.4.2 NumPy .................................................................................................... 7
2.4.3 Pandas ..................................................................................................... 7
2.4.4 Scikit-learn .............................................................................................. 8
2.4.5 Matplotlib ................................................................................................ 8
2.5 Deep Learning ..................................................................................................... 8
2.6 Convolutional Neural Network (CNN) ............................................................... 9
2.6.1 Convolution Layer ................................................................................ 10
2.6.2 Pooling Layer ........................................................................................ 11
2.6.3 Fungsi Aktivasi ..................................................................................... 11
2.6.4 Dropout Layer ....................................................................................... 12
2.6.5 Dense Layer .......................................................................................... 12
2.6.6 Flatten Layer ......................................................................................... 13
xix
2.6.7 Batch Normalization ............................................................................. 14
2.6.8 Layer Normalization ............................................................................. 14
2.7 Cross Entropy.................................................................................................... 14
2.8 Early Stopping .................................................................................................. 15
2.9 Multi-head ......................................................................................................... 15
2.10 Evaluasi Kinerja ................................................................................................ 15
BAB III METODOLOGI ................................................................................................... 19
3.1 Metode yang dirancang ..................................................................................... 19
3.2 Peralatan pendukung ......................................................................................... 20
3.3 Implementasi ..................................................................................................... 21
3.3.1 Dataset ................................................................................................... 21
3.3.2 Pra-pemrosesan data.............................................................................. 23
3.3.3 Implementasi Training Model ............................................................... 29
3.3.4 Implementasi Evaluasi Model ............................................................... 43
BAB IV HASIL DAN PEMBAHASAN ........................................................................... 45
4.1 Hasil eksperimen ............................................................................................... 45
4.1.1 Hasil Implementasi Prepocessing Data ................................................. 45
4.1.2 Hasil Implementasi Model Training ..................................................... 51
4.2 Pembahasan....................................................................................................... 61
4.2.1 Evaluasi Kinerja Model......................................................................... 61
4.2.2 Perbandingan Tiap Eksperimen ............................................................ 65
BAB V KESIMPULAN DAN SARAN............................................................................. 67
5.1 Kesimpulan ....................................................................................................... 67
5.2 Saran ................................................................................................................. 67
DAFTAR PUSTAKA ........................................................................................................ 69
LAMPIRAN-LAMPIRAN................................................................................................. 73
BIODATA PENULIS ........................................................................................................ 91

xx
DAFTAR GAMBAR/GRAFIK/DIAGRAM
Gambar 2.1 Struktur umum sistem HAR ................................................................................... 6
Gambar 2.2 Ruang lingkup deep learning (Goodfellow et al., 2016) ........................................ 8
Gambar 2.3 Perkembangan dataset untuk pengolahan data (Goodfellow et al., 2016) .............. 9
Gambar 2.4 Arsitektur menggunakan deep learning (Goodfellow et al., 2016) ........................ 9
Gambar 2.5 Arsitektur CNN(Khairandish et al., 2021) ............................................................ 10
Gambar 2.6 Ilustrasi cara kerja convolutional .......................................................................... 10
Gambar 2.7 Ilustrasi cara kerja pooling layer dengan pooling-size 2x2 .................................. 11
Gambar 2.8 Ilustrasi cara kerja dense layer dengan dropout .................................................... 13
Gambar 2.9 Ilustrasi cara kerja flatten...................................................................................... 13
Gambar 3.1 Rancangan Sistem................................................................................................. 19
Gambar 3.2 Visualisasi sampel dataset UCI HAR tiap aktivitas ............................................. 21
Gambar 3.3 Ilustrasi aktivtas manusia pada dataset HAR........................................................ 22
Gambar 3.4 Ilustrasi Segmentasi Data ..................................................................................... 24
Gambar 3.5 Ilustrasi One-hot Encoding ................................................................................... 27
Gambar 3.6 Arsitektur Model Eksperimen ke-1 ...................................................................... 33
Gambar 3.7 Arstitektur model eksperimen ke-2 ...................................................................... 34
Gambar 3.8 Arstitektur model eksperimen ke-3 ...................................................................... 36
Gambar 3.9 Arsitektur model eksperimen ke-4........................................................................ 38
Gambar 3.10 Arsitektur model eksperimen ke-5 ..................................................................... 40
Gambar 4.1 Informasi Dataset .................................................................................................. 45
Gambar 4.3 Dataset Setelah Cleaning Data.............................................................................. 46
Gambar 4.4 Data Setiap Aktivitas Setelah Segmentasi (a) Accelerometer (b) Gyroscope ...... 47
Gambar 4.5 Dataset Setelah Segmentasi .................................................................................. 48
Gambar 4.6 Jumlah Sampel Data ............................................................................................. 48
Gambar 4.7 Visualisasi Data Testing ....................................................................................... 50
Gambar 4.8 Visualisasi Data (a) Validation (b) Training ........................................................ 50
Gambar 4.9 Hasil Training dan Validation Eksperimen ke-1 (a) Accuracy (b) Loss .............. 52
Gambar 4.10 Hasil Training dan Validation Eksperimen ke-2 (a) Accuracy, (b) Loss ........... 53
Gambar 4.11 Hasil Training dan Validation Eksperimen ke-3 (a) Accuracy, (b) Loss ........... 54
Gambar 4.12 Hasil Training dan Validation Eksperimen ke-4 (a) Accuracy, (b) Loss ........... 55
Gambar 4.13 Hasil Training dan Validation Eksperimen ke-5 (a) Accuracy, (b) Loss ........... 56
Gambar 4.14 Hasil Training dan Validation Eksperimen ke-6 (a) Accuracy, (b) Loss ........... 57
Gambar 4.15 Hasil Training dan Validation Eksperimen ke-7 (a) Accuracy, (b) Loss ........... 58
Gambar 4.16 Hasil Training dan Validation Eksperimen ke-8 (a) Accuracy, (b) Loss ........... 59
Gambar 4.17 Hasil Training dan Validation Eksperimen ke-9 (a) Accuracy, (b) Loss ........... 59
Gambar 4.18 Hasil Training dan Validation Eksperimen ke-10 (a) Accuracy, (b) Loss ......... 60

xxi
(Halaman ini sengaja dikosongkan)

xxii
DAFTAR TABEL

Tabel 2.1 Penelitian Terkait........................................................................................................ 3


Tabel 2.2 Confusion Matrix...................................................................................................... 16
Tabel 3. 1 Tabel eksperimen..................................................................................................... 32
Tabel 4.1 Label One-Hot Encoding .......................................................................................... 49
Tabel 4.2 Hasil Scale and Normalization ................................................................................. 51
Tabel 4.3 Tabel Prediksi Eksperimen ke-1 ............................................................................... 61
Tabel 4.4 Prediksi Eksperimen ke-2 ......................................................................................... 61
Tabel 4.5 Prediksi Eksperimen ke-3 ......................................................................................... 62
Tabel 4.6 Prediksi Eksperimen ke-4 ......................................................................................... 62
Tabel 4.7 Prediksi Eksperimen ke-5 ......................................................................................... 63
Tabel 4.8 Prediksi Eksperimen ke-6 ......................................................................................... 63
Tabel 4.9 Prediksi Eksperimen ke-7 ......................................................................................... 64
Tabel 4.10 Prediksi Eksperimen ke-8 ....................................................................................... 64
Tabel 4.11 Prediksi Eksperimen ke-9 ....................................................................................... 65
Tabel 4.12 Prediksi eksperimen ke-10 ..................................................................................... 65
Tabel 4.13 Perbandingan Pada Setiap Eksperimen .................................................................. 66

xxiii
(Halaman ini sengaja dikosongkan)

xxiv
DAFTAR KODE SUMBER
Kode sumber 3.1 Kode sumber untuk load data ....................................................................... 23
Kode sumber 3.2 Cleaning data ................................................................................................ 24
Kode sumber 3.3 Segmentasi data ............................................................................................ 25
Kode sumber 3.4 Load dan save pickle .................................................................................... 26
Kode sumber 3.5 Fungsi removenull() ..................................................................................... 27
Kode sumber 3.6 One-hot encoding ......................................................................................... 27
Kode sumber 3.7 Scale and Normalization .............................................................................. 28
Kode sumber 3.8 Membuat model ........................................................................................... 30
Kode sumber 3. 9 Fungsi Earlystopping .................................................................................. 31
Kode sumber 3.10 Arsitektur model multi-head 1D-CNN eksperimen ke-1 ........................... 34
Kode sumber 3.11 Arsitektur model multi-head 1D-CNN eksperimen ke-2 ........................... 36
Kode sumber 3.12 Arsitektur model multi-head 1D-CNN eksperimen ke-3 ........................... 38
Kode sumber 3.13 Arsitektur model multi-head 1D-CNN eksperimen ke-4 ........................... 40
Kode sumber 3.14 Arsitektur model multi-head 1D-CNN eksperimen ke-5 ........................... 42
Kode sumber 3. 15 Evaluasi model .......................................................................................... 44

xxv
(Halaman ini sengaja dikosongkan)

xxvi
BAB I PENDAHULUAN
1.1 Latar belakang
Algoritma merupakan urutan aktivitas yang bertujuan untuk menyelesaikan masalah
dengan cara sistematis dan logis (Isroqmi, 2017). Algoritma yang baik dapat menghasilkan
keluaran yang mendekati kebenaran dan tidak membutuhkan waktu yang lama. Menurut
Barakbah algoritma identik dengan logika yang merupakan kemampuan manusia
menyelesaikan masalah dengan menggunakan akal dan biasanya dibantu dengan kecerdasan
agar menghasilkan kebenaran (Barakbah et al., 2013).
Dalam beberapa tahun terakhir penggunaan algoritma deep learning dalam domain citra
mengalami perkembangan yang signifikan. Deep learning memiliki kemampuan untuk
mempelajari feature learning secara otomatis sehingga membuat deep learning memiliki
kemampuan yang baik dalam proses klasifikasi citra (Ilahiyah & Nilogiri, 2018). Algoritma
deep learning yang populer untuk pengenalan aktivitas manusia yaitu Convolutional Neural
Network (CNN). CNN populer karena komputasinya yang kuat, teknik untuk melatih jaringan
lebih dalam, dan berbagai parameter lainnya (J. Wang et al., 2017). Penerapan algoritma CNN
untuk pengenalan aktivitas manusia diantaranya CNN (Münzner et al., 2017; Zeng et al., 2015),
Deep Convolutional Neural Network (Ronao & Cho, 2016), 1-Dimensional CNN (Lee et al.,
2017; Ragab et al., 2020).
Penggunaan algoritma CNN dalam masalah ekstraksi fitur pada data deret waktu dan
informasi temporal tidak selalu memberikan hasil yang optimal. Sebagai alternatif yang lebih
baik, dapat digunakan model 1-Dimensional Convolutional Neural Network (1D-CNN). 1D-
CNN dirancang khusus untuk menangani data dalam domain waktu dan memiliki keunggulan
dalam mengekstraksi pola temporal yang kompleks. Dalam data deret waktu, informasi
temporal sangat penting, dan 1D-CNN dapat secara efektif menangkap pola yang terkait dengan
urutan waktu. Dengan menggunakan jendela geser (sliding window), 1D-CNN mampu
mengidentifikasi pola yang berulang dan menciptakan representasi fitur yang lebih baik (Ragab
et al., 2020). Hal ini memungkinkan 1D-CNN untuk mengambil keputusan yang lebih baik
berdasarkan informasi waktu yang terkandung dalam data deret waktu. Oleh karena itu, dalam
konteks ekstraksi fitur, penggunaan 1D-CNN seringkali lebih unggul daripada CNN biasa
dalam memahami dan memanfaatkan informasi temporal yang ada dalam data deret waktu (Ince
et al., 2016).
Multi-head merupakan pendekatan yang kuat dalam meningkatkan kinerja model CNN
untuk data sekuensial. Kombinasi Multi-head dalam algoritma CNN memberikan keuntungan
berupa pemrosesan paralel dan kemampuan eksplorasi. Dengan pemrosesan paralel, setiap head
memiliki kemampuan untuk bekerja pada data input yang sama secara bersamaan, yang
memungkinkan ekstraksi fitur menjadi lebih cepat (Arik et al., 2019). Setiap head
memungkinkan untuk mengeksplorasi dan menangkap informasi yang berbeda dalam data,
sehingga dapat meningkatkan kemampuan model dalam menemukan pola dan fitur-fitur yang
tidak terlihat oleh head lainnya (Feng & Cheng, 2021). Dengan menggabungkan hasil dari
semua head, pendekatan multi-head mampu meningkatkan accuracy prediksi dalam tugas-
tugas data sekuensial yang kompleks.
Dalam tugas akhir ini mengusulkan algoritma multi-head 1D-CNN untuk pengenalan
aktivitas manusia. Dataset yang digunakan pada tugas akhir ini yaitu dataset Human Activity
Recognition (HAR) Using Smartphones dataset atau biasa disebut dengan dataset UCI HAR.
Dataset tersebut sudah memiliki enam label yaitu walking, walking Upstairs, walking
Downstairs, sitting, standing, dan laying. Tugas akhir ini diharapkan dapat meningkatkan
accuracy dari penelitian pengenalan aktivitas manusia dan dapat menjadi rujukan untuk

1
penelitian selanjutnya sehingga mampu diimplementasikan untuk kebutuhan aktivitas manusia
sehari-hari nantinya.
1.2 Rumusan Permasalahan
Perumusan masalah yang terdapat pada tugas akhir ini antara lain:

1. Bagaimana implementasi multi-head 1D-CNN untuk pengenalan aktivitas manusia?

2. Bagaimana cara melakukan pra-pemrosesan data pada dataset pengenalan aktivitas


manusia?

3. Bagaimana cara mengevaluasi kinerja model pengenalan aktivitas manusia


menggunakan algoritma multi-head 1D-CNN?

1.3 Batasan Masalah


Pembatasan masalah bertujuan untuk lebih efektif, efisien, terarah dan dapat dikaji lebih
mendalam untuk proses tugas akhir, adapun pembatasan masalah yang dikaji dalam tugas akhir
ini yaitu:

1. Bahasa pemrograman yang digunakan pada tugas akhir ini yaitu python.

2. Menggunakan dataset yang berasal dari UCI machine learning repository dengan nama
Human Activity Recognition Using Smartphones Data Set atau biasanya disebut
dengan UCI HAR.

3. Terdapat 6 aktivitas Manusia yang akan dikenali diantaranya walking, walking


Upstairs, walking Downstairs, sitting, standing, dan laying.

1.4 Tujuan
Tujuan dari pembuatan Tugas Akhir ini, sebagai berikut:

1. Untuk mengetahui implementasi pengenalan secara otomatis terhadap aktivitas


manusia menggunakan metode multi-head 1D-CNN.

2. Untuk mengetahui pra-pemrosesan data secara efektif untuk pelatihan model pada
dataset pengenalan aktivitas manusia.

3. Menentukan model terbaik yang dapat digunakan untuk pengenalan aktivitas manusia
menggunakan metode multi-head 1D-CNN.

1.5 Manfaat
Manfaat yang dapat diambil dari Tugas Akhir ini yaitu agar dapat memudahkan
pengenalan aktivitas manusia seperti digunakan dalam pembuatan aplikasi dan Tugas Akhir ini
dapat dijadikan rujukan penelitian selanjutnya untuk dapat dikembangkan lebih lanjut.

2
BAB II TINJAUAN PUSTAKA
Tinjauan pustaka menjelaskan terkait berbagai teori yang digunakan sebagai dasar dalam
pembuatan tugas akhir ini. Terdapat penjelasan mengenai gambaran umum tentang algoritma
yang akan diimplementasikan.

2.1 Penelitian Terkait


Tabel 2.1 Penelitian Terkait

No Tahun, Penulis Pembahasan


Human Activity Recognition With Convolutional And Multi-head Attention
1
Layer Based Neural Network Deniz Adali Atlihan
Penelitian ini menggunakan multi-head dengan
pendekatan CNN namun dengan dataset yang berbeda yaitu
dataset HANDY dataset dengan 8 aktivitas yang berbeda.
Multi-head memiliki peran penting untuk efisiensi komputasi
(Atlihan, 2022) pada penelitian ini. Dengan menggunakan multi-head
penggunaan CNN mendapatkan akurasi yang cukup besar
yaitu 93,50%, namun pada penelitian ini tidak terdapat proses
prediksi dengan data testing, karena data yang digunakan
hanya dalam proses training dan validasi.
Attention Induced Multi-head Convolutional Neural Network For Human
2
Activity Recognition
Penelitian ini memfokuskan menggunakan multi-head
dengan pendekatan 1D Convolutional Neural Network (1D-
CNN) dengan tambahan Batch Normalization telah berhasil
meningkatkan performa pada dataset UCI HAR. Dengan
memanfaatkan multi-head, model mampu mengekstrak fitur-
fitur yang kompleks dari data aktivitas manusia yang terekam
dalam dataset tersebut. Penerapan Batch Normalization
membantu dalam mempercepat proses pelatihan serta
mencegah masalah gradien yang meledak atau menghilang.
Hasil pengujian menunjukkan hasil yang sangat
mengesankan, di mana model berhasil mencapai akurasi
(Khan & sebesar 95,37%, yang berarti kemampuannya dalam
Ahmad, 2021) mengklasifikasikan aktivitas manusia dari data yang
dihadapkan sudah sangat tinggi. Selain itu, nilai f1-score
sebesar 94,87% menunjukkan model mampu mencapai
keseimbangan yang baik antara presisi dan recall dalam proses
klasifikasi. Penggunaan teknik multi-head pada 1D-CNN dan
tambahan Batch Normalization ini membuktikan
keefektifannya dalam meningkatkan kinerja model pada
dataset UCI HAR, memberikan harapan bahwa model serupa
dapat diterapkan dalam berbagai aplikasi kecerdasan buatan
dan pemrosesan sinyal yang memerlukan pemahaman yang
mendalam atas pola-pola dalam data.

3 Random Search One Dimensional CNN for Human Activity Recognition

3
No Tahun, Penulis Pembahasan
Penelitian ini memfokuskan penggunaan algoritma 1-
Dimensional CNN (1D-CNN) untuk pengenalan aktivitas
manusia pada dataset UCI HAR. Peneliti menambahkan
lapisan Batch Normalization (BN) dan Average Pooling pada
algoritma 1D-CNN untuk meningkatkan performa model.
Hasil penelitian menunjukkan bahwa penggunaan 1D-CNN
sangat efektif dalam mengolah data deret waktu seperti yang
terdapat pada dataset UCI HAR. Selain itu, penambahan
lapisan BN dan Average Pooling juga memberikan pengaruh
yang signifikan dalam pembentukan model, sehingga
(Ragab et al.,
menghasilkan accuracy sebesar 95.40%.
2020)
Hasil accuracy yang cukup tinggi, menunjukkan bahwa
metode ini memiliki kinerja yang baik dalam
mengklasifikasikan aktivitas manusia berdasarkan data deret
waktu. Dengan menggunakan dataset UCI HAR sebagai dasar
penelitian, hasil ini dapat menjadi landasan penting untuk
pengembangan lebih lanjut dalam bidang pengenalan aktivitas
manusia. Selain itu, penelitian ini juga memberikan
penjelasan tentang pentingnya penambahan lapisan BN dan
Average Pooling dalam algoritma 1D-CNN untuk
meningkatkan performa model.
1 Human Activity Recognition using Multi-head CNN followed by LSTM
Penelitian ini menggunakan pendekatan CNN dengan
tambahan lapisan LSTM untuk mengontrol memori pada data,
serta menerapkan multi-head dalam perbandingan dengan
single-head. Hasil eksperimen menunjukkan bahwa
penggunaan multi-head berhasil mencapai akurasi sebesar
95,76%, sedangkan single-head hanya mencapai 94,10%
(Ahmad et al.,
dalam pengenalan aktivitas manusia menggunakan dataset
2019)
UCI HAR. Penemuan ini mengindikasikan bahwa multi-head
memberikan efektivitas yang lebih baik dalam tugas
pengenalan aktivitas manusia. Meskipun demikian, penelitian
ini menyiratkan bahwa kinerja model masih dapat
ditingkatkan dengan menambahkan lapisan normalisasi pada
arsitektur yang digunakan.
Human activity recognition from accelerometer data using Convolutional
4
Neural Network
Pada paper ini peneliti menggunakan pendekatan
algoritma 1D-CNN yang sederhana, namun perlu dicatat
bahwa keberhasilan model sangat dipengaruhi oleh sejumlah
faktor, termasuk kompleksitas dataset yang digunakan. Dalam
penelitian ini, peneliti menggunakan beberapa dataset seperti
(Lee et al., 2017)
Opportunity, PAMAP2, dan dataset Daphnet Gait. Hasil dari
penelitian ini menunjukkan bahwa menggunakan pendekatan
1D-CNN mencapai tingkat accuracy sebesar 92,71%.
Dalam menyimpulkan hasil penelitian ini, terdapat potensi
untuk meningkatkan kinerja model dengan

4
No Tahun, Penulis Pembahasan
mempertimbangkan lebih banyak faktor seperti lapisan dan
parameter yang digunakan. Penelitian ini memberikan
penjelasan yang baik tentang penggunaan 1D-CNN dalam
pengenalan aktivitas manusia, namun penelitian ini dapat
dikembangkan lagi karena arsitektur yang masih sederhana
CNN-based Sensor Fusion Techniques for Multimodal Human Activity
5
Recognition
Dalam penelitian ini, peneliti memfokuskan eksplorasi
algoritma CNN dengan mencoba berbagai konfigurasi layer
CNN yang berbeda. Dataset yang digunakan dalam penelitian
ini adalah PAMAP2. Hasil dari eksperimen ini menunjukkan
bahwa dengan fokus pada eksplorasi CNN, peneliti berhasil
mencapai accuracy sebesar 86.00%. Meskipun hasil ini dapat
dianggap cukup baik, perlu diingat bahwa pemilihan dataset
memainkan peran penting dalam evaluasi performa model.
PAMAP2 memiliki karakteristik unik dan tingkat
kompleksitas data yang berbeda dengan dataset UCI HAR
(Münzner et al.,
yang digunakan dalam tugas akhir ini.
2017)
Eksplorasi algoritma CNN memberikan pengalaman yang
berharga tentang bagaimana konfigurasi layer CNN dapat
mempengaruhi kinerja model dalam tugas pengenalan
aktivitas manusia. Selain itu, perbedaan hasil accuracy antara
penelitian ini menunjukkan bahwa setiap dataset memerlukan
pendekatan yang sesuai dan tidak selalu ada satu model yang
cocok untuk semua dataset. Oleh karena itu, penelitian ini
memberikan kontribusi penting dalam pemahaman tentang
penggunaan CNN dalam pengenalan aktivitas manusia dan
memberikan landasan untuk penelitian lebih lanjut.
Human Activity Recognition With Smartphone Sensors Using Deep Learning
6
Neural Networks
Pada paper ini, peneliti menggunakan pendekatan Deep
CNN untuk pengenalan aktivitas manusia dengan
menggunakan dataset UCI HAR. Arsitektur CNN yang
(Ronao & Cho, diterapkan mendapatkan hasil accuracy sebesar 94.79%,
2016) menunjukkan hasil yang baik dalam menggunakan CNN
untuk pengenalan aktivitas manusia. Peneliti juga
memberikan saran untuk melakukan penelitian lebih lanjut
terkait penggunaan CNN dalam pengenalan aktivitas manusia.
Convolutional Neural Networks for Human Activity Recognition using Mobile
7
Sensors
Pada penelitian ini bertujuan untuk melakukan eksplorasi
pada algoritma Convolutional Neural Network (CNN)
khususnya untuk pengenalan aktivitas manusia. Dalam
(Zeng et al., eksplorasinya, peneliti menggunakan tiga dataset yang
2015) berbeda, yaitu Opportunity, Skoda, dan Actitracker. Ketiga
dataset tersebut dipilih karena memiliki ukuran yang cukup
besar, sehingga memberikan kesempatan untuk melakukan
analisis yang lebih mendalam dan menguji performa CNN

5
No Tahun, Penulis Pembahasan
pada berbagai situasi dan variasi data yang beragam.
Meskipun hasil accuracy tidak ditampilkan secara
signifikan dalam bentuk nilai numerik, namun dari tabel yang
disajikan dapat diamati bahwa model CNN yang dieksplorasi
berhasil mencapai accuracy sekitar 90% ke atas. Hal ini
menunjukkan potensi yang menjanjikan dari penggunaan
CNN dalam pengenalan aktivitas manusia, terutama ketika
diterapkan pada dataset yang berukuran besar dan kompleks.
Penelitian ini memberikan informasi penting bagi
pengembangan lebih lanjut dalam bidang pengenalan aktivitas
manusia menggunakan teknik deep learning.

2.2 Pengenalan Aktivitas Manusia


Dalam beberapa dekade terakhir, pengenalan aktivitas manusia, juga dikenal sebagai
Human Activity Recognition (HAR), telah meningkat di kalangan akademisi (J. Wang et al.,
2019). HAR sangat penting dalam kehidupan sehari-hari karena memiliki kemampuan untuk
menganalisis data sensor mentah untuk mendapatkan pemahaman yang lebih baik tentang pola
perilaku manusia (Jobanputra et al., 2019). Teknologi HAR memungkinkan manusia untuk
secara mandiri mengidentifikasi dan mengklasifikasikan berbagai jenis gerakan manusia dan
memperoleh informasi penting tentang kondisi tubuh manusia melalui pengembangan aplikasi
interaksi manusia-komputer. Pada gambar 2.1 terdapat visualisasi struktur umum sistem HAR.
Pada akhirnya, ini akan berfungsi sebagai dasar untuk pembuatan aplikasi cerdas lainnya. Saat
ini, teknologi HAR telah digunakan dalam berbagai disiplin ilmu, seperti kesehatan. (Y. Wang
et al., 2019), analisis perilaku rumah (Bianchi et al., 2019), pengawasan video (Babiker et al.,
2018), dan banyak lagi.

Gambar 2.1 Struktur umum sistem HAR

Human Activity Recognition (HAR) dapat diimplementasikan sebagai supervised


learning atau unsupervised learning. Pada pendekatan supervised learning, HAR memerlukan
proses training terlebih dahulu dengan dataset khusus yang sudah dilakukan pelabelan aktivitas
manusia. Dalam hal ini, model belajar dari data yang sudah diketahui labelnya untuk melakukan
klasifikasi aktivitas di kemudian hari. Sebaliknya, dalam unsupervised learning, HAR

6
dikonfigurasikan dengan aturan pengembangan tanpa memerlukan informasi label sebelumnya.
Model harus mampu mengidentifikasi pola dan struktur dalam data aktivitas manusia tanpa
bantuan label, sehingga penemuan klasifikasi aktivitas bersifat lebih mandiri dan eksploratif.

2.3 Supervised Learning


Supervised learning merupakan metode machine learning dan deep learning untuk
melatih data yang diberi label. Data tersebut digunakan untuk mengontrol proses agar mencapai
tingkat accuracy dan presisi tertentu, yang artinya terdapat data yang jawabannya benar dan
machine learning akan membuat model dengan hasil yang mendekati benar atau benar jika
diberikan data yang baru. Contoh dari metode supervised learning yaitu Teknik regresi dan
klasifikasi (Brownlee, 2016).

2.4 Python Library


Python merupakan bahasa pemrograman tingkat tinggi yang bersifat interpretatif,
berorientasi objek, dan dinamis. Didesain oleh Guido Van Rossum, bahasa pemrograman ini
memiliki sintaksis kode yang mudah dipahami dan sederhana, sehingga sering digunakan dalam
pengembangan berbagai aplikasi seperti machine learning, Internet of Things, website, game,
dan aplikasi smartphone. Python juga tersedia secara gratis sebagai open source, dan memiliki
banyak modul (library) yang memudahkan pembuatan program tanpa perlu menulis kode dari
awal. Beberapa library yang sering digunakan dalam tugas akhir ini antara lain Keras, NumPy,
Pandas, Scikit-Learn, dan Matplotlib. Untuk memudahkan pengunduhan library Python, dapat
menggunakan package pip (Bommarito & Bommarito, 2019).

2.4.1 Keras
Keras adalah library Python yang populer yang memiliki antarmuka tingkat tinggi yang
memungkinkan pengguna dengan mudah merancang arsitektur jaringan saraf menggunakan
modul-modul yang dapat digabungkan secara fleksibel. Dengan Keras, pengguna dapat
membuat model jaringan saraf, menentukan lapisan, fungsi aktivasi, dan fungsi kerugian, serta
melatih model dengan dataset. Keras juga menyediakan berbagai fungsi utilitas dan metode
evaluasi untuk membantu dalam pengembangan, evaluasi, dan pengoptimalan jaringan saraf
dengan mudah (Chollet & others, 2015).

2.4.2 NumPy
Dalam konteks neural network, library Python Numerical Python (NumPy) sangat
penting. NumPy menawarkan struktur data array multidimensi yang efektif dan berbagai fungsi
matematika yang dapat digunakan untuk operasi vektorisasi yang cepat. Dalam preprocessing
data untuk neural network, NumPy memungkinkan manipulasi dan transformasi data yang
mudah, seperti mengubah ukuran array, melakukan normalisasi, dan memotong data. Sebelum
pelatihan model neural network, NumPy juga dapat digunakan untuk mengatur data dalam
bentuk matriks input dan label yang dibutuhkan neural network. Ini memungkinkan
penggunaan yang lebih baik dan kinerja pemrosesan data (Harris et al., 2020).

2.4.3 Pandas
Pandas merupakan library Python yang digunakan dalam pengembangan neural network
untuk memanipulasi, menganalisis, dan memproses data secara efisien. Dengan fitur-fiturnya
yang kuat, seperti struktur data berlabel, fungsi agregasi, dan kemampuan untuk memanipulasi
data tabular dengan mudah, Pandas adalah alat yang sangat berguna dalam mempersiapkan dan
membersihkan data sebelum digunakan dalam neural network, serta dalam eksplorasi dan
pemrosesan data yang diperlukan dalam tahap pra-pemrosesan serta evaluasi model (Nagpal &
Gabrani, 2019).

7
2.4.4 Scikit-learn
Scikit-learn, sebuah library yang populer dalam bahasa pemrograman Python,
menyediakan berbagai alat dan fungsi untuk machine learning. Kemampuan untuk membangun
dan melatih neural network adalah salah satu karakteristiknya. Pengkodean kategori,
normalisasi, dan confusion matrix adalah beberapa fungsi pra-pemrosesan (preprocessing)
scikit-learn yang dapat digunakan untuk mempersiapkan data sebelum digunakan dalam neural
network. Selain itu, dalam salah satu fungsinya, confusion matrix, scikit-learn memungkinkan
kita untuk menghasilkan confusion matrix berdasarkan prediksi model dan label yang
sebenarnya, sehingga kita dapat mengevaluasi performa model dengan lebih baik
(VaroquauxG. et al., 2015).

2.4.5 Matplotlib
Matplotlib merupakan library Python yang populer yang digunakan untuk menampilkan
data. Matplotlib sangat berguna dalam konteks neural network khususunya dalam membuat
grafik dan plot yang menunjukkan berbagai aspek neural network, termasuk performa model,
fungsi aktivasi, arsitektur jaringan, dan hasil prediksi. Matplotlib memungkinkan pengguna
untuk membuat grafik yang menarik dan mudah dipahami yang membantu mereka
menganalisis, memahami, dan mengoptimalkan neural network (Nagpal & Gabrani, 2019).

2.5 Deep Learning


Kecerdasan buatan mengalami perkembangan yang sangat pesat dalam beberapa tahun
ini. Permasalahan yang belum terpecahkan oleh manusia satu demi satu telah ditemukan
solusinya dengan bantuan kecerdasan buatan. Dalam kecerdasan buatan terdapat bagian yang
sistem kerjanya terinspirasi dari struktur otak manusia yaitu deep learning, lebih detailnya dapat
dilihat pada gambar 2.2. Deep learning merupakan pengembangan dari neural network
multilayer untuk ketetapan tugas yang akurat seperti pengenalan objek, pengenalan ucapan,
terjemahan bahasa, dan lainnya. Deep learning berbeda dari teknik pembelajaran mesin
tradisional karena pembelajaran mendalam secara otomatis merepresentasikan data seperti
gambar, video, atau teks tanpa aturan pengkodean atau pengetahuan domain manusia (Avci et
al., 2021). Salah satu algoritma deep learning yang populer yaitu CNN.

Gambar 2.2 Ruang lingkup deep learning

Deep learning dapat dikatakan sukses untuk digunakan secara umum dimulai pada tahun

8
1990. Algoritma yang digunakan untuk menyelesaikan permasalahan sekarang hampir sama
yang digunakan untuk menyelesaikan masalah permainan pada tahun 1980-an, hanya saja
model algoritma yang digunakan menjadi Training yang sederhana dari arsitektur deep
learning. Pengembangan dataset dapat dilihat pada gambar 2.3 yang mengalami peningkatan
dari tahun 1900 - 2015.

Gambar 2.3 Perkembangan dataset untuk pengolahan data (Goodfellow et al., 2016)

Deep learning memiliki jaringan yang dapat belajar tanpa adanya pengawasan dari data
yang tidak terstruktur. Deep learning termasuk dalam representation learning yang mampu
mengekstrak representasi input optimal langsung dari data mentah tanpa campur tangan
pengguna dan membentuk represntasi menjadi sederhana. Meskipun dibantun dengan konsep
yang sederhana deep learning dapat dibangun secara kompleks seperti gambar 2.4. Model deep
learning akan terus berkembang seiring dengan berkembangnya teknologi.

Gambar 2.4 Arsitektur menggunakan deep learning (Goodfellow et al., 2016)

2.6 Convolutional Neural Network (CNN)


Convolutional Neural Network (CNN) adalah jenis arsitektur jaringan saraf tiruan yang
telah banyak digunakan dalam bidang pengolahan citra dan pengenalan pola. CNN dirancang
untuk meniru cara otak manusia menganalisis dan memahami informasi visual (Wu, 2017).
Arsitektur CNN terinspirasi dari cara sistem visual manusia bekerja seperti yang bisa dilihat
pada gambar 2.5, dimana neuron-neuron dalam lapisan yang berbeda bertanggung jawab untuk
menangkap fitur-fitur berbeda dari data citra (N. Sharma et al., 2018).

9
Gambar 2.5 Arsitektur CNN(Khairandish et al., 2021)

Arsitektur ini meliputi lapisan input, lapisan konvolusi, lapisan pooling, lapisan
terhubung penuh, dan lapisan output. Proses dimulai dengan data masukan yang melalui lapisan
konvolusi untuk mengekstrak fitur-fitur penting melalui filter. Setelah itu, lapisan pooling
menyusutkan ukuran data dan mempertahankan fitur penting. Data yang telah diproses
kemudian melewati lapisan terhubung penuh yang berfungsi untuk menghubungkan fitur-fitur
yang ditemukan ke dalam kelas klasifikasi atau nilai regresi. Akhirnya, hasil akhir diperoleh
melalui lapisan output, untuk persamaan CNN secara umum dapat dilihat pada persamaan 2.1.
Dengan dilatih dengan benar, arsitektur CNN mampu mengenali objek, menerjemahkan teks,
atau menjalankan tugas-tugas berbasis citra lainnya secara akurat dan efisien (Ilahiyah &
Nilogiri, 2018).

𝑦[𝑖]𝑗,𝑘 = ∑ ∑ 𝑊[𝑗−𝑚,𝑘−𝑛] 𝑋[𝑚,𝑛] + 𝑏 (1)


𝑚 𝑛

Dimana 𝑦[𝑖] matriks feature map ke-i, 𝑊 didefinisikan berat matriks convolusional kernel, 𝑋
didefinisikan sebagai filter konvolusi, [𝑚, 𝑛] posisi piksel pada matriks filter konvolusi, [𝑗, 𝑘]
posisi piksel berat matriks convolutional kernel, dan 𝑏 nilai bias pada filter.

2.6.1 Convolution Layer

Gambar 2.6 Ilustrasi cara kerja convolutional

Dalam lapisan konvolusional, setiap filter yang ada akan bergerak atau bergeser pada
seluruh data input. Pada setiap posisi, filter akan melakukan operasi konvolusi antara elemen

10
filter dan data input yang sesuai, dapat dilihat pada gambar 2.6. Hal ini menghasilkan tumpang
tindih (overlap) antara filter dan data input, yang memungkinkan jaringan saraf untuk
mempelajari fitur-fitur yang relevan dari data selama proses pelatihan. Proses ini mirip dengan
cara manusia melihat dunia di sekitarnya, di mana kita secara bertahap memindahkan fokus
pandangan kita dari satu area ke area lainnya untuk mengenali objek dan pola yang berbeda.
Dalam konteks CNN, filter-filter ini berperan sebagai pembelajaran parameter yang dapat
diubah selama proses pelatihan. Selama pelatihan, CNN akan menyesuaikan nilai-nilai filter
secara otomatis berdasarkan respons dari data input yang diberikan. Dengan demikian, CNN
dapat secara efektif mempelajari fitur-fitur penting atau karakteristik yang relevan untuk tugas
pengenalan atau klasifikasi yang spesifik. Proses ini memungkinkan CNN untuk mengenali
pola-pola kompleks dan abstrak dalam data, yang pada akhirnya mempengaruhi kemampuan
jaringan untuk mengambil keputusan atau melakukan prediksi dengan tingkat accuracy yang
tinggi. (Wu, 2017).
Pada tugas akhir ini menggunakan 1D-CNN maka lapisan konvolusi yang digunakan
adalah Lapisan konvolusi satu dimensi (1D Convolutional Layer). Lapisan ini memiliki
keunggulan dalam mengidentifikasi pola dan fitur dalam data urutan, seperti deret waktu atau
urutan teks, dengan menggunakan operasi konvolusi yang efisien secara komputasional. Hal ini
memungkinkan pengambilan keputusan yang akurat dalam analisis dan pemrosesan data urutan
(Ragab et al., 2020).
2.6.2 Pooling Layer
Pooling layer adalah salah satu komponen penting dalam arsitektur CNN yang digunakan
untuk mengurangi kompleksitas model, mencegah overfitting, dan memperkenalkan invariansi
terhadap translasi atau pergeseran input data (Ilahiyah & Nilogiri, 2018). Pooling layer
memiliki 2 pendekatan yaitu max pooling dan average pooling. Pada tugas akhir ini
menggunakan max pooling di mana setiap wilayah dari input data akan dipilih nilai
maksimalnya sebagai representasi yang diambil.
Pendekatan ini membantu mengurangi dimensi representasi data, menjaga fitur penting,
dan menghasilkan abstraksi yang lebih kuat untuk langkah-langkah berikutnya dalam jaringan
saraf tiruan (Lee et al., 2017). Pada tugas akhir ini menggunakan lapisan 1-dimensi pooling (1-
Dimensional Pooling Layer), namun untuk fungsinya sama saja dengan pooling layer biasa.
Untuk visualisasinya dapat dilihat pada gambar 2.7.

Gambar 2.7 Ilustrasi cara kerja pooling layer dengan pooling-size 2x2

2.6.3 Fungsi Aktivasi


Untuk memperkenalkan sifat non-linearitas ke dalam model CNN, fungsi aktivasi

11
diterapkan pada output setiap neuron. Ini penting karena kebanyakan masalah dunia nyata tidak
dapat diselesaikan secara linier. Fungsi aktivasi memungkinkan jaringan saraf untuk
mengkomunikasikan representasi-fitur yang lebih tingkat tinggi dan mempelajari hubungan
yang kompleks antara input dan output (Ding et al., 2018). Beberapa fungsi aktivasi yang paling
umum digunakan termasuk ReLU (Rectified Linear Unit), sigmoid, tanh (hyperbolic tangent),
dan softmax (S. Sharma et al., 2020).
Dua fungsi aktivasi yang paling umum digunakan dalam konteks ini adalah ReLU
(Rectified Linear Unit) dan Softmax. ReLU adalah fungsi non-linear yang sangat populer dalam
neural network dan memiliki keunggulan seperti mengatasi masalah gradien yang menghilang
dan mempercepat waktu pelatihan karena mudah dihitung (Rasamoelina et al., 2020).
Persamaan dari aktivasi ReLu dapat dilihat pada persamaan 2.7.4.1.
Disisi lain, lapisan output jaringan saraf klasifikasi multikelas adalah tempat fungsi
Softmax biasanya digunakan. Keunggulan Softmax adalah membuat distribusi probabilitas
yang menggambarkan keyakinan relatif terhadap berbagai kelas, yang memudahkan
interpretasi dan pengambilan keputusan (S. Sharma et al., 2020). Kedua fungsi aktivasi ini
sangat penting untuk memberikan sifat non-linearitas pada neural network sifat-sifat ini sangat
penting untuk memodelkan hubungan yang kompleks dalam data dan melakukan tugas-tugas
seperti klasifikasi, regresi, dan segmentasi dengan baik.

𝑓(𝑥) = 𝑚𝑎𝑥⁡(0, 𝑥) (2)

Dimana x adalah nilai masukan dan f(x) adalah nilai keluaran yang dihasilkan oleh fungsi
ReLU.

2.6.4 Dropout Layer


Penggunaan neural network rentan mengamali permasalahan yang mendasar yaitu
adanya masalah overfitting. Overfitting terjadi karena tidak memiliki data sampel yang cukup
dan ukuran data pelatihan kecil sehingga dalam proses eksperimen data tidak dapat
memprediksi dengan tepat karena terlalu fokus pada Training (Ying, 2019). Banyak solusi
untuk mencegah terjadinya overfitting salah satunya yaitu menggunakan dropout layer.
Secara umum proses dropout layer yaitu menghilangkan neuron pada setiap iterasi dari
jaringan probabilitas selama pelatihan, neuron-neuron akan terputus secara acak dan kontribusi
mereka dihilangkan dari perhitungan selanjutnya sehingga dapat mengurangi terjadinya
overfitting. Dropout layer memiliki kemampuan yang efektif untuk mengatasi overfitting pada
jaringan neural network meskipun dilatih dengan jangka waktu yang lama dan menghasilkan
accuracy eksperimen lebih baik (Labach et al., 2019). Untuk ilustrasi dropout layer bisa dilihat
pada gambar 2.8.

2.6.5 Dense Layer


Salah satu jenis lapisan yang paling umum digunakan dalam arsitektur CNN adalah
lapisan dense yang biasanya disebut fully connected layer. Setiap neuron pada lapisan dense
terhubung dengan neuron di lapisan sebelumnya dan berikutnya.Dalam skenario ini, setiap
input dari lapisan sebelumnya dikalikan dengan bobot yang sesuai, kemudian dijumlahkan dan
ditambahkan dengan bias. Setelah ini, fungsi aktivasi menambahkan non-linearitas ke output
lapisan.
Lapisan dense sangat penting untuk memodelkan representasi fitur yang lebih kompleks
dan untuk mempelajari hubungan yang lebih kompleks dalam berbagai tugas, seperti
klasifikasi, regresi, atau segmentasi. Ini juga memungkinkan model untuk mengekstraksi dan
mempelajari pola-pola yang lebih abstrak dalam data. Lapisan dense sangat penting dalam

12
memodelkan representasi-fitur yang lebih tingkat tinggi dan dalam mempelajari hubungan yang
lebih kompleks dalam berbagai tugas, seperti klasifikasi, regresi, atau segmentasi (Bashar et al.,
2020). Ilustrasi dapat dilihat pada gambar 2.8.

Gambar 2.8 Ilustrasi cara kerja dense layer dengan dropout

2.6.6 Flatten Layer


Dalam neural network, lapisan flatten berfungsi untuk mengubah input multidimensional
menjadi vektor satu dimensi seperti pada gambar 2.9. Lapisan ini juga menghubungkan lapisan
konvolusi atau pooling dengan lapisan-lapisan berikutnya, seperti lapisan terhubung penuh.
Neural network dapat memperlakukan input data sebagai serangkaian fitur terpisah tanpa
mempertahankan informasi spasial karena setiap elemen input multidimensional disusun secara
berturut-turut menjadi vektor tunggal ketika data melewati lapisan flatten. Karena banyak
lapisan jaringan saraf mengharapkan input dalam bentuk vektor, seperti lapisan terhubung
penuh yang menerima input satu dimensi, lapisan terbuka membantu jaringan saraf mengelola
input multidimensional seperti gambar atau data spasial dalam bentuk vektor yang dapat
diproses oleh lapisan berikutnya dalam arsitektur jaringan (Jin et al., n.d.).

Gambar 2.9 Ilustrasi cara kerja flatten.

13
2.6.7 Batch Normalization
Batch normalization digunakan untuk menjaga stabilitas distribusi input yang diteruskan
ke setiap lapisan. Normalisasi dilakukan untuk setiap data dalam batch dengan menggunakan
mean dan varians untuk meningkatkan kecepatan dan accuracy penelitian (Ioffe & Szegedy,
2015), bisa dilihat pada persamaan 3 dan 4.
𝐵
1
𝜇 = ∑ 𝑎𝑖𝑙
𝑙 (3)
𝐵
𝑖=1

𝐵
1 2
𝜎 = √ ∑(𝑎𝑖𝑙 − 𝜇𝑙 )
𝑙 (4)
𝐵
𝑖=1

Variabel 𝐵 didefinisikan sebagai bacth pada suatu lapisan, 𝜇 didefinisikan sebagai keluaran dari
mean dan 𝜎 didefinisikan sebagai keluaran standard deviasi.

2.6.8 Layer Normalization


Layer normalization dibuat untuk mengatasi kelemahan dari BN dengan memperbaiki
rata-rata dan varian data input yang dijumlahkan pada setiap lapisan (Ren et al., 2016). Layer
normalization adalah metode yang efektif untuk memproses data sequence seperti HAR dengan
panjang yang bervariasi dalam jaringan saraf, karena normalisasi dilakukan pada setiap data
individual dalam lapisan independen dari ukuran batch, menjaga relasi urutan dan temporal
antar data (Ba et al., 2016). Persamaan layer normalization sama dengan BN hanya berbeda
fungsi yang didalamnya saat memproses, dapat dilihat pada persamaan 5 dan 6.
𝐻
1
𝜇 = ∑ 𝑎𝑖𝑙
𝑙 (5)
𝐻
𝑖=1

𝐻
1 2
𝜎 = √ ∑(𝑎𝑖𝑙 − 𝜇𝑙 )
𝑙 (6)
𝐻
𝑖=1

Variabel 𝐻 didefinisikan sebagai jumlah dari unit tersembunyi pada suatu lapisan. 𝜇
didefinisikan sebagai keluaran dari mean dan didefinisikan sebagai standard deviasi. Perbedaan
persamaan 3 dan 4 dengan 5 dan 6 layer normalization tidak membatasi Batasan pada ukuran
batch.

2.7 Cross Entropy


Dalam neural network, cross entropy adalah fungsi loss atau fungsi kerugian yang umum
digunakan untuk mengukur perbedaan atau kesalahan antara distribusi probabilitas prediksi
model dan distribusi probabilitas target, juga dikenal sebagai kebenaran tanah, pada tugas
klasifikasi. Cross-entropy adalah teknik yang sangat baik untuk mempelajari dan menyesuaikan
bias dan bobot model dalam neural network.
Nilai kerugian dari setiap prediksi model dihitung dan parameter jaringan diperbarui
dengan nilai ini untuk mengurangi kesalahan. Dengan menggunakan cross entropy sebagai
fungsi kehilangan, neural network dapat melakukan tugas klasifikasi yang lebih baik dan

14
mempelajari representasi-fitur yang lebih baik dari data pelatihan. Cross entropy juga dapat
menekankan perbedaan antara prediksi dan target, mendorong model untuk menghasilkan
distribusi probabilitas yang semakin mendekati distribusi probabilitas target (Zadeh & Schmid,
2021).

2.8 Early Stopping


Early stopping adalah teknik pelatihan neural network yang digunakan untuk
menghindari overfitting dan mengoptimalkan kinerja model. Dalam implementasinya, early
stopping menggunakan fungsi callback, yaitu suatu fungsi yang dipanggil selama proses
pelatihan untuk melacak metrik tertentu, seperti kehilangan (loss) atau akurasi (accuracy) pada
data validasi. Tujuan dari early stopping adalah untuk terus memantau perubahan performa
model pada set data validasi selama pelatihan dan memberhentikan pelatihan ketika performa
mulai menurun atau tidak lagi meningkat secara signifikan. Dengan demikian, teknik ini
membantu model untuk mencapai titik optimal dalam proses pelatihan dan menghindari
overfitting.
Untuk mencegah overfitting dan menjaga model dalam kondisi terbaik, pelatihan dapat
dihentikan lebih awal jika kinerja model tidak meningkat atau bahkan mulai menurun dalam
beberapa periode berurutan. Kita dapat mengatur parameter seperti kesabaran (patience), yaitu
jumlah epoch yang diizinkan tanpa meningkatkan kinerja sebelum pelatihan dihentikan, dengan
memanggil fungsi callback yang sesuai, seperti "EarlyStopping" pada Keras. Hentikan dini
mempercepat proses pelatihan dan menghasilkan model yang lebih optimal dan generalisasi
yang lebih baik (Fischer et al., 2022).

2.9 Multi-head
Multi-head dalam konteks kecerdasan buatan (artificial intelligence), adalah sebuah
pendekatan di mana model atau arsitektur menggunakan lebih dari satu kepala (head) atau
output layer untuk memproses dan menghasilkan prediksi pada suatu tugas tertentu. Setiap head
atau output layer berfungsi secara independen untuk mempelajari representasi data yang
berbeda, sehingga memungkinkan model untuk menangani beberapa aspek atau sub-tugas dari
masalah yang kompleks secara simultan. di mana setiap kepala mungkin bertanggung jawab
untuk tugas-tugas seperti klasifikasi teks dalam bahasa yang berbeda, analisis sentimen,
kategorisasi topik, dan sebagainya. Dalam komputer vision, setiap kepala dapat
mengidentifikasi objek, mendeteksi pose, dan memperkirakan kecepatan bergerak dari suatu
gambar (Atlihan, 2022; Khan & Ahmad, 2021).
Keuntungan dari pendekatan multi-head termasuk kemampuan model untuk menangani
banyak tugas sekaligus, meningkatkan kapabilitas dan kinerja model secara keseluruhan, serta
memungkinkan pembagian tugas yang lebih terfokus dan efisien. Namun, perlu diingat bahwa
pendekatan multi-head juga membutuhkan lebih banyak komputasi dan parameter, sehingga
mempengaruhi kebutuhan sumber daya komputasi dan waktu pelatihan model. Selain itu,
penggunaan pendekatan multi-head dapat membantu dalam memperkuat kemampuan model
untuk menangkap hubungan dan pola yang lebih kompleks dalam data, terutama pada tugas-
tugas yang melibatkan masalah yang lebih rumit. (Ahmad et al., 2019).

2.10 Evaluasi Kinerja


Dalam membangun sebuah model klasifikasi, terdapat beberapa ukuran kinerja yang
digunakan untuk mengukur seberapa baik kualitas model yang telah dibuat. Evaluasi model
klasifikasi dilakukan dengan cara memeriksa prediksi yang dihasilkan oleh model, dan
beberapa hal yang diperhatikan adalah akurasi (accuracy) yang dapat dihitung menggunakan
persamaan 7, presisi (precision) yang dihitung menggunakan persamaan 8, recall yang dihitung

15
menggunakan persamaan 9, dan F1-score yang dihitung menggunakan persamaan 9 juga.
Untuk informasi lebih lanjut mengenai matriks kebingungan dan perhitungan metrik evaluasi,
dapat dilihat pada Tabel 2.2.

Tabel 2.2 Confusion Matrix

Kelas Prediksi
Benar Salah
Benar True Positive (TP) False Negative (FN)
Kelas sebenarnya
Salah False Positive (FP) True Negative (TN)

Keterangan:
• True Positive (TP) jumlah sampel yang benar diprediksi sebagai positif (aktivitas
manusia) oleh model, ketika sebenarnya mereka memang positif.

• True Negative (TN) jumlah sampel yang benar diprediksi sebagai negatif (bukan aktivitas
manusia) oleh model, ketika sebenarnya mereka memang negatif.

• False Positive (FP) jumlah sampel yang salah diprediksi sebagai positif oleh model,
ketika sebenarnya mereka sebenarnya negatif. Dalam konteks klasifikasi aktivitas
manusia, ini berarti model salah mengklasifikasikan aktivitas yang sebenarnya bukan
aktivitas manusia sebagai aktivitas manusia.

• False Negative (FN) jumlah sampel yang salah diprediksi sebagai negatif oleh model,
ketika sebenarnya mereka sebenarnya positif. Dalam konteks klasifikasi aktivitas
manusia, ini berarti model salah mengklasifikasikan aktivitas manusia sebagai bukan
aktivitas manusia.

Matriks TP, TN, FP, dan FN digunakan untuk menghitung metrik evaluasi seperti accuracy,
precision, recall, dan f1-score.
Accuracy mengukur sejauh mana model benar dalam memprediksi aktivitas manusia
secara keseluruhan.
𝑇𝑃 + 𝑇𝑁
𝑎𝑐𝑐𝑢𝑟𝑎𝑐𝑦 = ⁡ (7)
𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁

Precision mengukur sejauh mana prediksi positif model adalah benar.


𝑇𝑃
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = ⁡ (8)
𝑇𝑃 + 𝐹𝑃

Recall (juga dikenal sebagai sensitivitas) mengukur sejauh mana model dapat
mengidentifikasi secara akurat aktivitas manusia.
𝑇𝑃
𝑟𝑒𝑐𝑎𝑙𝑙 = ⁡ (9)
𝑇𝑃 + 𝐹𝑁

F1-score adalah metrik yang menggabungkan presisi dan recall untuk memberikan
ukuran yang seimbang dari kinerja model secara keseluruhan.

16
2⁡𝑥⁡p𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛⁡𝑥⁡r𝑒𝑐𝑎𝑙𝑙
f1 − s𝑐𝑜𝑟𝑒 = ⁡ (10)
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + r𝑒𝑐𝑎𝑙𝑙

17
(Halaman ini sengaja dikosongkan)

18
BAB III METODOLOGI
Pada bab ini, akan dijelaskan tentang langkah-langkah yang dilakukan dalam penyusunan
Tugas Akhir, yang meliputi tahap perancangan sistem dan implementasi.

3.1 Metode yang dirancang


Pada Tugas Akhir ini, akan dilakukan pembuatan model deep learning dengan
pendekatan multi-head 1-Dimensional Convolutional Neural Network untuk pengenalan
aktivitas manusia. Data yang digunakan dalam penelitian ini yaitu Human Activity Recognition
(HAR) Using Smartphones atau biasa disebut dengan UCI HAR yang berasal dari website data
open-source UCI Machine Learning dengan. Dengan menggunakan data UCI HAR model deep
learning akan dilatih untuk pengenalan aktivitas manusia.

Gambar 3.1 Rancangan Sistem

Metode rancangan sistem yang digunakan untuk pengenalan aktivitas manusia dapat
dilihat pada gambar 3.1, dimulai dengan melakukan pemahaman konteks dataset yang tersedia
dengan cara memuat dataset, persiapan dataset dengan melakukan pra-pemrosesan dataset,
pembagian dataset menjadi training, validation, dan testing data, pelatihan model deep learning
multi-head 1D-CNN, model yang sudah melalui pelatihan dikonversi menjadi model prediksi,
kemudian model prediksi digunakan untuk pengujian menggunakan data testing, selanjutnya
evaluasi kinerja model deep learning multi-head 1D-CNN dan melakukan penyimpanan model.
Sebelum melakukan perancangan model deep learning multi-head 1D-CNN, dilakukan studi
literatur mengenai pengenalan aktivitas manusia, deep learning, convolutional neural network
beserta lapisan-lapisannya seperti 1D convolutional, 1D pooling, dropout, flatten, batch
normalization, layer normalization, dan beberapa fungsi seperti earlystopping dan cross
entropy,
Untuk memulai penelitian, langkah awal adalah mempersiapkan lingkungan kerja yang
memungkinkan pembacaan dan penulisan data dalam basis data, baik lokal maupun non-lokal.

19
Persiapan lingkungan kerja melibatkan dua aspek utama, yaitu perangkat keras dan perangkat
lunak. Pada sisi perangkat keras, perlu memastikan ketersediaan komputer atau server yang
memadai, dengan spesifikasi yang sesuai untuk menangani kebutuhan pengolahan data.
Sedangkan pada sisi perangkat lunak, langkah ini melibatkan instalasi dan konfigurasi
perangkat lunak seperti sistem operasi, basis data, serta perangkat lunak pendukung lainnya
yang diperlukan untuk pengolahan dan analisis data. Dengan persiapan lingkungan kerja yang
tepat, penelitian dapat dilakukan secara efisien dan efektif dalam mengelola data penelitian
dengan menggunakan basis data baik lokal maupun non-lokal.
Setelah menyelesaikan persiapan lingkungan kerja, langkah selanjutnya adalah
merancang sistem yang akan dibangun. Secara keseluruhan, sistem tersebut merupakan sebuah
model CNN yang akan dikembangkan menjadi multi-head 1D-CNN. Sistem ini akan
menggunakan input data untuk memuat dataset yang akan digunakan dalam penelitian. Setelah
data diinput, langkah selanjutnya adalah membaginya menjadi tiga bagian, yaitu training,
validasi, dan testing. Pada tahap training, model akan dilakukan training menggunakan
algoritma multi-head 1D-CNN yang telah dibangun. Setelah proses training, model akan diuji
validitasnya dengan menggunakan data validasi. Kemudian, model yang telah melalui training
akan diterapkan pada dataset testing untuk melakukan prediksi, dan hasil prediksi tersebut akan
dievaluasi untuk melihat sejauh mana kinerja model tersebut.
Pada penelitian ini, dilakukan 10 eksperimen yang menerapkan model algoritma multi-
head 1D-CNN dengan tujuan menganalisis dan mengevaluasi kinerja model yang telah
dikembangkan. Setiap eksperimen dirancang dengan pendekatan yang berbeda dalam
penggunaan model algoritma. Eksperimen-eksperimen ini mengikuti suatu kerangka kerja
terstruktur, yang memungkinkan pemahaman terhadap kontribusi faktor-faktor tertentu
terhadap kinerja model.

3.2 Peralatan pendukung


Pada tahap ini dilakukan pengumpulan alat dan bahan yang dibutuhkan untuk menunjang
Tugas Akhir agar proses penelitian dapat berjalan dengan lancar. Terdapat dua kategori untuk
perangkatnya yaitu perangkat keras dan perangkat lunak. Berikut perangkat yang dibutuhkan:

1. Perangkat Lunak:
a. Integrated Development Environment (IDE) atau Text Editor dalam tugas akhir
ini menggunakan Spyder dan Google Colab

b. Interpreter Python untuk menjalankan kode secara langusung di perangkat


keras, dan PIP package installer untuk python.

c. Library python diantaranya NumPy, Sklearn, Keras, Matplotlib, dan Pandas

d. Google Drive dan Onedrive untuk penyimpanan online file yang dibutuhkan
dalam tugas akhir ini.

e. Menggunakan Nvidia CUDNN (GPU) untuk melakukan training data menjadi


lebih cepat saat melakukan pemrosesan.

2. Perangkat Keras:
a. Processor: Intel core i7 generasi 8th

b. RAM: 8GB

20
c. Graphics Card: Nvidia Geforce GTX 1050

d. Sistem Operasi: Windows

Perangkat keras keras digunakan untuk menjalankan perangkat lunak seperti


membuat dan menguji model, mengolah data, mencatat dan menyimpan data
penelitian.

3.3 Implementasi
Tahap implementasi akan dijelaskan ke dalam beberapa sub-bab yakni: dataset yang
digunakan, tahap pra-pemrosesan data, implementasi Training model Multi-head 1D-CNN, dan
implementasi evaluasi model.

3.3.1 Dataset
Dalam Tugas Akhir ini menggunakan dataset dari UCI machine learning repository
dengan judul HAR atau bisa disebut dengan UCI-HAR. Dataset memiliki jumlah sampel yang
besar, yaitu sebanyak 1.122.772. Data tersebut dikumpulkan dari 30 sukarelawan dengan
rentang usia yang cukup bervariasi, mulai dari 19 hingga 48 tahun. Pengambilan data dilakukan
menggunakan sensor akselerometer linear triaksial dan gyroscope triasial yang terpasang pada
smartphone Samsung Galaxy S II. Tingkat sampel data yang konsisten sebesar 50 Hz
memastikan keakuratan dan kekonsistenan pengukuran dalam setiap aktivitas (Reyes-Ortiz et
al., 2012).

Gambar 3.2 Visualisasi sampel dataset UCI HAR tiap aktivitas

Dataset yang digunakan dimuat terlebih dahulu dengan menggunakan kode sumber 3.1.
Dalam memuat dataset UCI HAR dengan jenis data sinyal, Tugas Akhir ini merujuk pada
website (Ataspinar, 2018). Pada baris ke-20, dimana data dimuat terlebih dahulu. Kemudian
pada baris ke-10 dan ke-11 melakukan inisialisasi untuk data berisi sinyal accelerometer dan

21
gyroscope. Pada baris ke-14 dilakukan inisialisasi variabel untuk pengisian pada kolom seperti
id, user, exp, activity, start, dan end. Dimana kolom start digunakan untuk menandakan awal
dari aktivitas sinyal sedangkan end menandakan akhir dari aktivitas yang dilabeli. Kemudian
pada baris ke-23 sampai ke-29 data akan dipanggil satu persatu untuk dimasukkan ke dalam
kolom yang telah diinisialisasi dari awal dengan bantuan fungsi readFile pada baris ke-1 sampai
ke-7. Setelah data sudah dimuat dan dilabeli sesuai dengan isi datanya, data sinyal
accelerometer dan gyroscope dimasukkan sesuai dengan kolom-kolomnya.
Pada gambar 3.2, terdapat 13 aktivitas yang terekam dalam data menggunakan
accelerometer dan gyroscope. Setiap aktivitas diberi label numerik dari 0 hingga 12. Selain
keenam aktivitas utama yang telah disebutkan sebelumnya (walking, walking Upstairs, walking
Downstairs, sitting, standing, dan laying), dataset juga mencatat perubahan postural antara
posisi statis, seperti perubahan dari standing to sitting, sitting to standing, laying to sitting, dan
laying to standing. Label-label untuk perubahan postural ini adalah 0, 7, 8, 9, 10, 11, dan 12,
yang juga termasuk dalam kategori aktivitas yang tidak terdefinisi atau tidak dapat dikenali.
Ilustrasi aktivitas yang terdapat dalam dataset dapat dilihat pada gambar 3.3, memberikan
gambaran visual tentang berbagai aktivitas yang direkam.

Gambar 3.3 Ilustrasi aktivtas manusia pada dataset HAR

1. function readFile(file, col)


2. df = read_csv(file, sep=' ', names=col, header=None)
3. df['exp'] = int(findall(r'exp\d+', file)[0].replace('exp', ''))
4. df['user'] = int(findall(r'user\d+', file)[0].replace('user', ''))
5. df['no'] = df.index.values
6. df['activity'] = 0
7. return df
8.
9. # Inisialisasi variabel untuk menyimpan data accelerometer dan giroskop
10. ll_acc = list()
11. ll_gyro = list()
12.
13. # Inisialisasi kolom untuk data label
14. col = ['ID', 'user', 'activity', 'start', 'end']
15.
16. # Menginisialisasi variabel untuk menyimpan data label
17. labels = None
18.
19. # Mendapatkan daftar path file raw data
20. Raw_data_paths = sorted(glob("/content/drive/MyDrive/Tugas
Akhir/Paper/all_HAR/RawData/*"))
21.

22
22. # Loop untuk mengolah data
23. for file in Raw_data_paths do
24. if 'labels' in file then
25. labels = readFile(file, col)
26. else if 'acc' in file then
27. ll_acc.append(readFile(file, ['X_acc', 'Y_acc', 'Z_acc']))
28. else
29. ll_gyro.append(readFile(file, ['X_gyro', 'Y_gyro', 'Z_gyro']))
30.
31. # Menggabungkan data accelerometer dan giroskop berdasarkan kolom ['exp',
'user', 'no', 'activity']
32. df = merge(concat(ll_acc, ignore_index=True), concat(ll_gyro,
ignore_index=True), on=['exp', 'user', 'no', 'activity'])
33.

Kode sumber 3.1 Kode sumber untuk load data

3.3.2 Pra-pemrosesan data


Setelah data sudah dipersiapkan agar mendapatkan informasi dan diolah seperti
dijelaskan pada kode sumber 3.1, kemudian tahapan selanjutnya adalah pra-pemrosesan data.
Pada Tugas Akhir ini, dilakukan beberapa pra-pemrosesan diantaranya segmentation data,
cleaning data, one-hot encoding, dan scale and normalization.
Pada kode sumber 3.2, menunjukkan proses cleaning data data pada label aktivitas yang
mengandung nilai 0 atau label 0 dan label 7, 8, 9, 10, 11, dan 12 karena menurut deskripsi
dataset, label-label tersebut merupakan label yang tidak terdefinisi dan tidak dikenali. Hal itu
disebabkan oleh adanya persentase perubahan postural yang rendah dalam dataset. Oleh karena
itu, fokus utama dalam pengambilan sampel input adalah pada enam aktivitas utama yang
memiliki pengaruh dominan dalam pengenalan aktivitas manusia.

1. function drop_activity_zeros(df):
2. # Mencari indeks baris yang memiliki nilai activity 0
3. index_to_drop = find_activity_zeros(df)
4. # Menghapus baris dengan indeks yang ditemukan
5. df.drop(index_to_drop, inplace=True)
6.
7. function drop_special_Activities(df):
8. # Daftar aktivitas khusus yang akan dihapus
9. special_Activities = [7, 8, 9, 10, 11, 12]
10. # Mencari indeks baris yang memiliki aktivitas khusus
11. index_to_drop = find_special_Activities(df, special_Activities)
12. # Menghapus baris dengan indeks yang ditemukan
13. df.drop(index_to_drop, inplace=True)
14.
15. function find_activity_zeros(df):
16. # Inisialisasi daftar indeks yang akan dihapus
17. index_to_drop = create_empty_list()
18. # Iterasi melalui setiap baris dataframe
19. for row in df:
20. # Jika nilai activity pada baris adalah 0
21. if row['activity'] == 0:
22. # Menambahkan indeks baris ke dalam daftar indeks yang akan dihapus
23. add row.index to index_to_drop
24. return index_to_drop
25.
26. function find_special_Activities(df, special_Activities):
27. # Inisialisasi daftar indeks yang akan dihapus

23
28. index_to_drop = create_empty_list()
29. # Iterasi melalui setiap baris dataframe
30. for row in df:
31. # Jika nilai activity pada baris termasuk dalam aktivitas khusus
32. if row['activity'] in special_Activities:
33. # Menambahkan indeks baris ke dalam daftar indeks yang akan dihapus
34. add row.index to index_to_drop
35. return index_to_drop

Kode sumber 3.2 Cleaning data

Setelah proses cleaning data, tahap selanjutnya adalah melakukan segmentasi data pada
dataset UCI HAR. Tujuan untuk melakukan segmentasi data accelerometer dan gyroscope
untuk mengidentifikasi dan memahami pola perilaku manusia dalam berbagai aktivitas
berdasarkan data sensor yang tercatat karena dataset UCI HAR memiliki sifat data yang
temporal. Segmentasi data memungkinkan kita untuk mengelompokkan data sensor menjadi
segmen-segmen yang merepresentasikan aktivitas tertentu, seperti berjalan, berlari, duduk,
berdiri, dan lain sebagainya. Hal ini membantu dalam membangun model yang dapat mengenali
aktivitas manusia berdasarkan data sensor (Atalaa et al., 2020). Proses segmentasi data merujuk
pada program dari internet namun dilakukan perbaiki pada proses segmentasinya dan dataset
yang digunakan berbeda dengan Tugas Akhir ini (Nabriya, 2021). Langkah-langkah proses
segmentasi dapat dilihat lebih jelas pada Kode sumber 3.3. Pertama, variabel segments_acc,
segments_gyro, dan labels diinisialisasi sebagai list kosong. Pada proses segmentation data
akan dilakukan pemotongan menjadi kecil-kecil. Data yang dipotong adalah waktu data selama
perekaman aktivitas.
Dataset UCI HAR memiliki laju tetap sebesar 50Hz dan waktu 2,56 sec. Dalam menjaga
hubungan antara titik temporal data dalam suatu aktivitas diperlukan sliding window dengan
overlap presentase sebesar 50% untuk pengelompokan data sensor gerak. Sliding window
adalah teknik yang digunakan untuk memisahkan data menjadi segmen-segmen dengan ukuran
yang sama, di mana jendela atau jangka waktu tertentu digeser sepanjang data. Dalam hal ini,
segmen-segmen data diperoleh dengan membagi data accelerometer dan gyroscope menjadi
jendela waktu yang memiliki panjang 128. Ilustrasi dapat dilihat pada gambar 3.4.

Gambar 3.4 Ilustrasi Segmentasi Data

Pada kode sumber 3.3 dimulai dari baris ke-9, nilai accelerometer, gyroscope, dan labels
yang diperoleh pada setiap iterasi ditambahkan ke dalam list segments_acc, segments_gyro,
dan labels, masing-masing sesuai dengan iterasi saat ini. Setelah loop selesai, list-list tersebut
berisi segmen-segmen data accelerometer, giroskop, dan label yang telah dibentuk.
Selanjutnya, program melakukan reshape terhadap list segments_acc dan segments_gyro
menggunakan np.asarray() untuk mengubahnya menjadi array NumPy. Array tersebut
diberikan bentuk baru dengan menggunakan metode reshape() sehingga memiliki dimensi

24
(jumlah segmen, n_time_steps, n_features). Terakhir, array-array yang telah direshape
digabungkan menggunakan np.stack() dengan sumbu kedua (axis=2) menjadi array tiga
dimensi reshaped_segments yang berisi segmen-segmen data accelerometer dan gyroscope.

1. function create_segments(df, n_time_steps, n_features):


2. # Inisialisasi daftar segment accelerometer dan giroskop
3. segments_acc = create_empty_list()
4. segments_gyro = create_empty_list()
5. # Inisialisasi daftar label
6. labels = create_empty_list()
7.
8. # Loop untuk membuat segment
9. for i from 0 to df.shape[0] - n_time_steps, step:
10. # Mendapatkan nilai accelerometer dalam rentang waktu tertentu
11. xs_acc = df['X_acc'].values[i: i + n_time_steps]
12. ys_acc = df['Y_acc'].values[i: i + n_time_steps]
13. zs_acc = df['Z_acc'].values[i: i + n_time_steps]
14. # Mendapatkan nilai giroskop dalam rentang waktu tertentu
15. xs_gyro = df['X_gyro'].values[i: i + n_time_steps]
16. ys_gyro = df['Y_gyro'].values[i: i + n_time_steps]
17. zs_gyro = df['Z_gyro'].values[i: i + n_time_steps]
18. # Menemukan label yang paling umum dalam rentang waktu tersebut
19. label = find_most_common_label(df['activity'][i: i + n_time_steps])
20.
21. # Menambahkan segment accelerometer dan giroskop ke daftar
22. segments_acc.append([xs_acc, ys_acc, zs_acc])
23. segments_gyro.append([xs_gyro, ys_gyro, zs_gyro])
24. # Menambahkan label ke daftar label
25. labels.append(label)
26.
27. # Mengubah daftar segment accelerometer menjadi array numpy
28. reshaped_segments_acc = convert_to_ndarray(segments_acc).reshape(-1,
n_time_steps, n_features)
29. # Mengubah daftar segment giroskop menjadi array numpy
30. reshaped_segments_gyro = convert_to_ndarray(segments_gyro).reshape(-1,
n_time_steps, n_features)
31.
32. # Menggabungkan segment accelerometer dan giroskop
33. reshaped_segments = stack_segments(reshaped_segments_acc,
reshaped_segments_gyro)
34.
35. return reshaped_segments, labels
36.
37. function find_most_common_label(labels):
38. # Mengembalikan label yang paling umum dalam daftar
39. return mode(labels)[0][0]
40.
41. function convert_to_ndarray(data):
42. # Mengubah daftar menjadi array numpy dengan tipe data float32
43. return np.asarray(data, dtype=np.float32)
44.
45. function stack_segments(segments_acc, segments_gyro):
46. # Menggabungkan segment accelerometer dan giroskop
47. return np.stack((segments_acc, segments_gyro), axis=2)

Kode sumber 3.3 Segmentasi data

25
Setelah proses segmentasi data, sangat penting untuk menyimpan hasil segmentasi ke
dalam file yang dapat dengan mudah diakses kembali. Hal ini memberikan efisiensi dalam
pengolahan data, menghindari proses segmentasi yang berulang-ulang ketika menjalankan
program. Dalam kode sumber 3.4, Pada baris ke-1 sampai ke-6 terdapat fungsi untuk memuat
file yang telah disimpan pada modul pickle. Pada baris ke-8 sampai ke-12 menjalankan fungsi
untuk menyimpan file dalam bentuk pickle. Fungsi-fungsi tersebut memanfaatkan modul
`pickle` dalam Python yang digunakan untuk serialisasi dan deserialisasi objek Python. Dengan
menggunakan `pickle`, kita dapat menyimpan objek hasil segmentasi ke dalam file dengan
format yang dapat dengan mudah dibaca dan dimuat kembali saat diperlukan.
Dengan menyimpan hasil segmentasi dalam file menggunakan `pickle`, kita dapat
menghemat waktu dan sumber daya komputasi yang diperlukan untuk melakukan proses
segmentasi berulang-ulang. Data yang telah disegmentasi dapat dengan cepat dimuat kembali
ke dalam program, sehingga memungkinkan penggunaan ulang yang efisien dan mempercepat
proses pengolahan data lebih lanjut.

1. function load_pickle(filename):
2. # membuka file dalam mode baca binary
3. with open(filename, 'rb') as input_file:
4. # memuat objek dari file menggunakan pickle
5. loaded_object = pickle.load(input_file)
6. return loaded_object
7.
8. function save_pickle(object_to_save, filename):
9. # membuka file dalam mode tulis binary
10. with open(filename, 'wb') as output_file:
11. # menyimpan objek ke dalam file menggunakan pickle
12. pickle.save(object_to_save, output_file)

Kode sumber 3.4 Load dan save pickle

Setelah proses segmentasi data, dilakukan cleaning data kembali untuk menghapus nilai
null atau infinite yang mungkin ada. Tujuan dari pembersihan ini adalah untuk menjaga kualitas
data dan memastikan kelancaran proses pelatihan model serta analisis data. Pada kode sumber
3.5 mengimplementasikan langkah-langkah pembersihan data dengan mengidentifikasi dan
menghapus baris data yang mengandung nilai null atau infinite.
Pembersihan data sangat penting karena data yang tidak valid memungkinkan dapat
mengganggu hasil akhir model dan menyebabkan kesalahan dalam interpretasi analisis. Dengan
menghilangkan data yang tidak valid, kita memastikan bahwa data yang digunakan dalam
proses selanjutnya adalah data yang valid dan dapat diandalkan. Hal ini akan menghasilkan
hasil yang lebih akurat dan dapat diinterpretasikan dengan baik.

1. function remove_null(xdata, ydata):


# array kosong untuk menyimpan xdata yang valid
2. filtered_xdata = create_empty_array()
3. filtered_ydata = create_empty_array()
4.
5. for i from 0 to length(ydata):
# memeriksa apakah nilai ydata[i] adalah finite
6. if is_finite(ydata[i]):
7. add xdata[i] to filtered_xdata
8. add ydata[i] to filtered_ydata
9. # array kosong untuk menyimpan xdata 2D yang valid
10. filtered_xdata_2d = create_empty_array()

26
11. filtered_ydata_2d = create_empty_array()
12.
13. for i from 0 to length(filtered_ydata):
14. if all elements in filtered_xdata[i] are finite:
15. add filtered_xdata[i] to filtered_xdata_2d
16. add filtered_ydata[i] to filtered_ydata_2d
17.
18. return filtered_xdata_2d, filtered_ydata_2d

Kode sumber 3.5 Fungsi removenull()

Setelah memastikan bahwa tidak ada nilai null dalam data, langkah selanjutnya adalah
melakukan one-hot encoding. One-hot encoding adalah proses di mana setiap nilai unik dari
suatu variabel kategori diubah menjadi kolom baru dalam dataset. Dalam tahap ini, setiap baris
dalam dataset akan memiliki nilai 1 atau 0, yang menunjukkan apakah nilai tersebut ada atau
tidak ada, ilustrasi dapat dilihat pada gambar 3.5. Hal ini memungkinkan algoritma
pembelajaran mesin untuk memproses variabel kategori dengan efektif.

Gambar 3.5 Ilustrasi One-hot Encoding

Dengan menggunakan one-hot encoding, kita mempersiapkan data agar dapat diolah
secara efektif oleh algoritma deep learning. Pada kode sumber 3.6, terdapat langkah-langkah
untuk melakukan proses one-hot encoding pada kolom labels dengan menggunakan fungsi
pd.get_dummies. Salah satu keuntungan utama dari one-hot encoding adalah kemampuannya
untuk menyampaikan informasi yang berguna dari variabel kategori tanpa memberikan bobot
yang salah kepada nilai-nilai tersebut (Nair et al., 2018).

1. # Mengkonversi labels ke dalam format one-hot encoding


2. labels = convert_to_one_hot(labels)
3.
4. function convert_to_one_hot(labels):
5. # Melakukan one-hot encoding menggunakan pd.get_dummies
6. one_hot_labels = pd.get_dummies(labels)
7.
8. # Mengkonversi hasil one-hot encoding menjadi array numpy
9. one_hot_labels = convert_to_ndarray(one_hot_labels)
10.
11. return one_hot_labels
12. function convert_to_ndarray(data):
13. # Mengkonversi data menjadi array numpy dengan tipe data float32
14. return np.asarray(data, dtype=np.float32)

Kode sumber 3.6 One-hot encoding

27
Tahap selanjutnya yaitu menerapkan teknik scale dan normalization yang dapat dilihat
langkah-langkahnya dalam kode sumber 3.7. Pada baris ke-2 sampai ke-15 menjelaskan agar
fungsi untuk mendapatkan skalar dari data dengan rentang -1 hingga 1 dari data xdata. Lalu
pada baris 17 sampai 31 melakukan scaling data menggunakan skalar yang sudah didapatkan
pada fungsi scalar. Tujuan dari langkah ini adalah untuk mengubah rentang nilai data sehingga
berada dalam skala yang seragam dan terbatas. Metode yang digunakan untuk scaling adalah
Min-Max Scaling yang diimplementasikan menggunakan library Scikit-Learn.
Proses scaling dan normalisasi ini sangat penting dalam pengenalan aktivitas manusia
karena memastikan setiap fitur memiliki dampak yang seimbang dalam proses pengenalan
aktivitas. Jika tidak menggunakan scaling dan normalisasi, fitur-fitur dengan rentang nilai yang
berbeda dapat memiliki dampak dominan pada pembentukan model. Hal ini dapat
menyebabkan ketidakseimbangan dalam pembobotan fitur dan mempengaruhi accuracy hasil
pengenalan aktivitas manusia. Dengan melakukan scaling dan normalisasi, rentang nilai data
menjadi seragam, memudahkan perbandingan dan penggabungan fitur, serta menghindari
dampak negatif dari fitur dengan rentang nilai yang besar.
Penggunaan scaling dan normalisasi memiliki keunggulan dalam meningkatkan stabilitas
numerik model dan mengatasi masalah outlier. Selain itu, data yang telah diolah dengan scaling
dan normalisasi akan menjadi lebih terstruktur, standarisasi, dan mudah diinterpretasikan oleh
algoritma deep learning. Pra-pemrosesan data ini memberikan manfaat dalam meningkatkan
konsistensi, stabilitas, dan accuracy pengenalan aktivitas manusia. Hasil yang lebih baik dapat
dicapai pada tahap-tahap selanjutnya, seperti pelatihan model dan evaluasi kinerja, karena data
yang telah diolah memiliki karakteristik yang lebih terkontrol dan konsisten.

1. # Fungsi untuk mendapatkan skalar (scaler) dari data


2. function get_scaler(xdata):
3. row = shape(xdata)[0]
4. timestamp = shape(xdata)[1]
5. sensor = shape(xdata)[2]
6. axis = shape(xdata)[3]
7.
8. # Membuat objek scaler dengan rentang nilai -1 hingga 1
9. scaler = MinMaxScaler(feature_range=(-1, 1))
10. # Menyesuaikan dimensi data
11. xdata = reshape(xdata, (row, timestamp, sensor * axis))
12. xdata = reshape(swapaxes(xdata, 0, 2), (sensor * axis, 1)).T
13. scaler.fit(xdata)
14.
15. return scaler
16. # Fungsi untuk melakukan scaling data menggunakan skalar (scaler)
17. function scale_data(xdata, scaler):
18. row = shape(xdata)[0]
19. timestamp = shape(xdata)[1]
20. sensor = shape(xdata)[2]
21. axis = shape(xdata)[3]
22. # Menyesuaikan dimensi data
23. xdata = reshape(xdata, (row, timestamp, sensor * axis))
24. xdata = reshape(swapaxes(xdata, 0, 2), (sensor * axis, -1)).T
25. # Melakukan scaling data menggunakan skalar
26. xdata = scaler.transform(xdata)
27. xdata = reshape(xdata.T, (sensor * axis, timestamp, row))
28. xdata = reshape(swapaxes(xdata, 0, 2), (row, timestamp, sensor, axis))
29. return xdata

Kode sumber 3.7 Scale and Normalization

28
3.3.3 Implementasi Training Model
Pada tahap ini, model dibuat menggunakan pendekatan deep learning dengan
menggunakan algoritma multi-head 1-Dimensional Convolutional Neural Network (1D-CNN).
Dalam proses pelatihan model, dilakukan berbagai eksperimen untuk mencapai model dengan
performa terbaik. Beberapa fungsi dari library Python juga dimanfaatkan, antara lain early
stopping (menggunakan callback), annealer, categorical, cross entropy, dan fungsi lainnya.
Dengan memanfaatkan berbagai fungsi tersebut, diharapkan mendapatkan model yang terbaik
untuk mengenali aktivitas manusi. Melalui pendekatan deep learning dan penggunaan
algoritma multi-head 1D-CNN, diharapkan model dapat mempelajari pola dan fitur yang
relevan dari data segmentasi untuk pengenalan aktivitas manusia yang akurat dan dapat
diandalkan.
Pada kode sumber 3.8, pada baris ke-1 sampai ke-10 terdapat fungsi untuk membuat
model dengan parameter xtrain dan ytrain. Dimana pada baris ke-4 dan ke-5 pada fungsi model
terdapat pemanggilan fungsi cnnhead untuk membuat input menjadi multi-head dengan
panjang dari ukuran xtrain. Di mana itu adalah lapisan pertama untuk menuju lapisan 1DCNN
dengan memanggil fungsi cnnhead. Kemudian pada baris ke-14 model akan disimpan dalam
bentuk png agar dapat tervisualisasi dengan jelas model arstitektur yang digunakan. Lalu pada
baris ke-20 sampai ke-25 memanggil fungsi-fungsi yang digunakan untuk Training model dan
pada baris ke-28 dan ke-43 model disimpan di lokal agar tidak perlu melakukan Training
berkali-kali. Pada baris ke-31 sampai ke-45 history model akan disimpan untuk keperluan
visualisasi data.

1. function build_model(xtrain, ytrain):


2. heads = []
3. shape = shape_of(xtrain)
4. for i in range(length_of(xtrain[0][0])):
5. heads.append(cnnhead_((shape[1], shape[3]), i+1))
6.
7. x = concatenate_(heads)
8. x = flat_(x, number_of_classes(ytrain))
9. model = model_(heads, x)
10. return model
11.
12. # Membuat Model
13. model = build_model(xtrain, ytrain)
14. plot_model(model, "Multi-head1D-CNN.png", show_shapes=True, dpi=60)
15. # Compile model
16. model.summary()
17. EPOCHS = 1000
18. BATCH_SIZE = 64
19.
20. annealer = LearningRateScheduler(lambda x: 1e-3 * 0.9 ** x)
21. callback2 = CustomEarlyStopping(patience=15)
22. optimizer = Adam(learning_rate=1e-4)
23. model.compile(loss='categorical_crossentropy',optimizer=optimizer,
25. metrics=['accuracy'])
26. needTrain = False
27. # needTrain = True
28. nmModel = "model_1D-CNN.h5"
29.
30. if needTrain:
31. history_1D-CNN_noBN = model.fit(
32. {'title_1': xtrain[:,:,0,:], 'title_2': xtrain[:,:,1,:]},
33. {'decision': ytrain}, # Label pelatihan

29
34. epochs=EPOCHS,
35. batch_size=BATCH_SIZE,
36. Validation_data=(
37. {'title_1': xval[:,:,0,:], 'title_2': xval[:,:,1,:]},
38. {'decision': yval} # Label validasi
39. ),
40. verbose=1,
41. callbacks=[callback2, annealer] # Callbacks untuk pelatihan
42. )
43. model.save(nmModel) # Menyimpan model setelah pelatihan
44. else:
45. model.load_weights(nmModel) # Memuat berat model yang telah dilatih

Kode sumber 3.8 Membuat model

Pada kode sumber 3.9, terdapat fungsi CustomEarlyStopping yang merupakan turunan
dari kelas EarlyStopping dan disediakan oleh library tensorflow.keras.callbacks. Kelas
EarlyStopping sendiri digunakan untuk menghentikan pelatihan model jika metrik tertentu,
dalam hal ini ketepatan validasi, tidak meningkat dalam beberapa epoch berturut-turut. Jika
tidak ada perbaikan dalam metrik yang dipantau sebelum pelatihan dihentikan, kemudian
terdapat parameter patience digunakan untuk menentukan berapa lama waktu yang akan
ditunggu jika tidak ada perbaikan dalam metrik yang dipantau.
Nilai parameter digunakan sebagai nilai referensi atau batas yang dibandingkan dengan
metrik yang dipantau. Selanjutnya, beberapa variabel yang digunakan selama pelatihan
diaktifkan. Jumlah epoch yang telah ditunggu tanpa perbaikan dihitung dengan variabel
self.wait. Nilai validasi terbaik yang telah dicapai selama pelatihan disimpan oleh variabel
self.best_v_loss dan self.best_v_acc, masing-masing. Variabel self.best_v_acc juga menyimpan
nilai accuracy validasi terbaik yang telah dicapai selama pelatihan. Selanjutnya, diawasi
val_loss, val_accuracy, dan accuracy.
Setelah itu dilakukan pemeriksaan apakah accuracy dan validasi pelatihan telah mencapai
0.98. Jika itu benar, pelatihan dihentikan. Selanjutnya diperiksa apakah accuracy validasi saat
ini lebih tinggi dari accuracy validasi terbaik sebelumnya, dan jika itu benar, nilai terbaik untuk
best_v_loss, best_v_acc, dan best_acc diupdate. Variabel self.wait diatur kembali menjadi 0
jika kondisi pada langkah sebelumnya tidak terpenuhi. Jika self.wait mencapai nilai yang sama
dengan self.patience yang ditentukan, pelatihan dihentikan dan model akan mengembalikan
bobot dari epoch terbaik yang telah dicapai.

1. Class CustomEarlyStopping:
2. Initialize(patience=0, value=0):
3. self.patience = patience
4. self.value = value
5. self.best_weights = None
6.
7. Function on_train_begin(logs=None):
8. self.wait = 0
9. self.wait100 = 0
10. self.stopped_epoch = 0
11. self.best_v_loss = np.Inf
12. self.best_v_acc = 0
13. self.best_acc = 0
14.
15. Function on_epoch_end(epoch, logs=None):
16. v_loss = logs.get('val_loss')
17. v_acc = round(logs.get('val_accuracy') * 100, 2) / 100

30
18. acc = round(logs.get('accuracy') * 100, 2) / 100
19.
20. If v_acc >= 0.98 and acc >= 0.98:
21. If self.wait100 >= 10:
22. Print "Stop. val_acc (v_acc - acc - v_loss - self.wait100)"
23. self.model.stop_Training = True
24. Else:
25. self.wait100 += 1
26. Else:
27. If v_acc > self.best_v_acc:
28. Print "iter=(self.wait)-(self.patience) improve acc (acc >=
self.best_acc) and val_acc (v_acc >= self.best_v_acc)"
29. self.best_v_loss = v_loss
30. self.best_v_acc = v_acc
31. self.best_acc = acc
32. self.wait = 0
33. self.best_weights = self.model.get_weights()
34. Else:
35. self.wait += 1
36. Print "iter=(self.wait)-(self.patience) not improve acc (acc
>= self.best_acc) and val_acc (v_acc >= self.best_v_acc)"
37. If self.wait >= self.patience:
38. self.stopped_epoch = epoch
39. self.model.stop_Training = True
40. Print "Restoring model weights from the end of the best
epoch. (self.best_v_acc - self.best_acc - self.best_v_loss)"
41. self.model.set_weights(self.best_weights)
42.
43. Function on_train_end(logs=None):
44. If self.stopped_epoch > 0:
45. Print "Epoch %05d: early stopping" % (self.stopped_epoch + 1)

Kode sumber 3. 9 Fungsi Earlystopping

Pembuatan model arsitektur multi-head 1D-CNN melakukan 10 eksperimen dengan


berbagai macam lapisan yang digunakan. Pada tabel 3.1, memperlihatkan kombinasi
penggunaan dropout, batch normalization, dan layer normalization pada suatu model neural
network, serta penggunaan callback (penundaan dini) selama proses pelatihan. Eksperimen
dimulai dengan arsitektur sederhana seperti hanya menggunakan layer convolutional kemudian
ditambahkan batch normalization, layer normalization, dropout, dan flatten dengan jumlah
lapisan yang berbeda-beda. Eksperimen bertujuan untuk menemukan kombinasi yang optimal
dari lapisan-lapisan yang digunakan untuk mencapai accuracy yang tinggi dan kinerja yang
baik. Parameter yang digunakan untuk tiap eksperimen memiliki nilai yang sama, yang berbeda
hanyalah jumlah lapisan dan penambahan lapisannya. Berikut adalah parameter dan
hyperparameter yang digunakan:
• Filter: Jumlah filter yang digunakan pada lapisan konvolusi pertama menggunakan 64
filter dan lapisan konvolusi kedua menggunakan 96 filter.

• Kernel size: Ukuran kernel yang digunakan pada tiap lapisan konvolusi adalah 3.

• Activation: Fungsi yang digunakan untuk model arstitektur ini ada 2 yaitu ReLu dan
SoftMax. Fungsi ReLu digunakan pada tiap lapisan konvolusi, sedangkan untuk SoftMax
digunakan untuk lapisan dense.

31
• Strides: Step yang digunakan pada lapisan max-pooling bernilai 2.

• Dropout: Rasio pada lapisan dropout yang digunakan pada lapisan sebelum concate yaitu
0.25, sedangkan sebelum lapisan dense bernilai 0.5.

• Epoch: Jumlah epoch yang digunakan pada tiap eksperimen yaitu 100 epoch

• Batch Size: Ukuran bacth yang digunakan yaitu 64 untuk semua eksperimen.

• Callback: Pada fungsi ini digunakan untuk memberhentikan Training model ketika sudah
mencapai nilai accuracy sebesar 98% dan nilai patience 15.

• Optimizer: Optimizer yang digunakan pada model arsitektur yaitu Adam optimizer.
Tabel 3.1 Tabel eksperimen

No Dropout Batch Layer Callback


Normalization Normalization
1 - - - -
2 V - - -
3 V - V -
4 V V - -
5 V V V -
6 - - - V
7 V - - V
8 V - V V
9 V V - V
10 V V V V

Setelah mengetahui parameter yang digunakan pada tiap eksperimen, langkah selanjutnya yaitu
menjelaskan skenario pada setiap eksperimen:

1. Eksperimen ke-1
Pada eksperimen ke-1, melakukan percobaan dengan menggunakan arstiektur multi-head
1D-CNN yang sederhana yaitu dengan 2 lapisan konvolusioanl 1 dimensi dengan aktivasi ReLu
pada tiap head, 1 lapisan maxpooling pada tiap head, 1 lapisan flatten, dan 1 lapisan dense
dengan fungsi softmax untuk klasifikasi. Eksperimen ini dilakukan untuk mengetahui sejauh
mana performa arsitektur model menggunakan multi-head 1D-CNN tanpa menambahkan
lapisan tambahan dengan melihat accuracy dan loss pada proses pelatihan dan validasi data.
Pada kode sumber 3.10, merupakan kelanjutan dari kode sumber 3.8 menunjukkan proses
pembuatan model multi-head 1D-CNN saat memanggil fungsi cnnhead(). Pada setiap iterasi,
fungsi cnnhead() pada baris ke-1 akan membuat lapisan konvolusi 1 dimensi dengan aktivasi
ReLU, diikuti oleh lapisan konvolusi kedua, dan kemudian lapisan maxpooling. Lapisan ini
membentuk 2 head dari model. Kemudian, keluaran dari setiap head akan digabungkan dengan
menggunakan fungsi concatenate() pada baris ke-18. Setelah proses penggabungan, hasilnya
akan diteruskan ke dalam fungsi flat() yang terdiri dari lapisan flatten untuk meratakan data dan
lapisan dense dengan fungsi aktivasi softmax pada baris ke-29 hingga ke-34. Lapisan dense ini
bertugas untuk melakukan klasifikasi berdasarkan fitur-fitur yang telah dipelajari sebelumnya,
dan hasil akhirnya adalah probabilitas kelas pada tugas klasifikasi.
Pada gambar 3.6, menunjukkan dimana dengan memadukan input layer, algoritma multi-
head 1D-CNN, dan fungsi concatenate() serta flat(). Model multi-head 1D-CNN dapat
menggabungkan informasi dari dua sumber input yang berbeda dan mengekstraksi fitur-fitur

32
penting dari data. Hal ini memungkinkan model untuk mempelajari pola-pola yang lebih
kompleks dan meningkatkan kemampuan prediksi model. Dengan melakukan percobaan
eksperimen menggunakan berbagai arsitektur, diharapkan dapat ditemukan model yang
memiliki kinerja terbaik dalam memprediksi dan mengklasifikasikan data.

Gambar 3.6 Arsitektur Model Eksperimen ke-1

1. function cnnhead_(input_shape, seq):


2. // Input layer with specified input shape
3. input_layer = create_input_layer(shape=input_shape, name='title_' +
str(seq))
4.
5. // First Conv1D layer with 64 filters, kernel size 3, and ReLU activation
6. cnn = create_Conv1D_layer(filters=64, kernel_size=3, activation='relu',
name='Conv1D_' + str(seq) + '_1')(input_layer)
7.
8. // Second Conv1D layer with 96 filters, kernel size 3, and ReLU activation
9. cnn = create_Conv1D_layer(filters=96, kernel_size=3, activation='relu',
name='Conv1D_' + str(seq) + '_2')(cnn)
10.
11. // MaxPooling1D layer with stride 2
12. cnn = create_MaxPooling1D_layer(strides=2, name='maxpool_' + str(seq) +
'_2')(cnn)
13.
14. // Return the input layer and the last CNN layer
15. return input_layer, cnn
16.
17.
18. function concatenate_(heads):
19. final_layers = []
20.
21. // Iterate through each head in the list of heads
22. for head in heads:
23. // Append the last CNN layer from each head to final_layers list

33
24. final_layers.append(head[1])
25.
26. // Concatenate all the final_layers to create a single merged tensor
27. return create_concatenate_layer(final_layers, name='concatenate')
28.
29.
30. function flat_(input_, number_of_classes):
31. // Flatten the input tensor
32. x = create_Flatten_layer()(input_)
33.
34. // Dense layer for classification with specified number of classes and
softmax activation
35. x = create_Dense_layer(number_of_classes, name='decision',
activation='softmax')(x)
36.
37. // Return the final classification output
38. return x

Kode sumber 3.10 Arsitektur model multi-head 1D-CNN eksperimen ke-1

2. Eksperimen ke-2

Gambar 3.7 Arstitektur model eksperimen ke-2

Pada eksperimen ke-2, dilakukan percobaan dengan menggunakan arsitektur yang sama
seperti eksperimen ke-1, yaitu multi-head 1D-CNN dengan 2 lapisan konvolusi 1 dimensi,
aktivasi ReLU pada tiap head, 1 lapisan maxpooling pada tiap head, 1 lapisan flatten, 2 lapisan

34
dropout dimana 1 lapisan pada tiap head dan 1 lapisan diletakkan setelah penggabungan head,
dan 1 lapisan dense dengan fungsi softmax. Namun, perbedaan utama dari eksperimen ke-2
adalah penambahan lapisan dropout untuk mengatasi potensi overfitting yang mungkin terjadi
pada eksperimen ke-1. Pada eksperimen ini, lapisan dropout ditempatkan setelah lapisan
maxpooling dan lapisan flatten. Dropout merupakan teknik regulasi yang bekerja dengan acak
mengabaikan sebagian unit pada lapisan sebelumnya selama proses pelatihan.
Dengan menggunakan dropout, model diharapkan dapat lebih generalis dan tidak terlalu
bergantung pada data latih sehingga dapat mengurangi overfitting. Dua parameter rate yang
digunakan adalah 0.25 dan 0.5, yang menunjukkan tingkat probabilitas unit yang akan di-drop
selama pelatihan. Penambahan lapisan dropout pada eksperimen ke-2 diharapkan dapat
meningkatkan kemampuan generalisasi model tanpa harus menambahkan kompleksitas
arsitektur. Gambar 3.7 menunjukkan model yang dihasilkan dari eksperimen ke-2 dengan jelas
menampilkan penempatan lapisan dropout setelah lapisan maxpooling dan lapisan flatten.
Eksperimen ini menjadi langkah lebih maju dalam mengatasi masalah overfitting. Untuk
pembuatan lapisan pembuatan model dapat dilihat pada kode sumber 3.11.

1. Function cnnhead_(input_shape, seq):


2. # Create an input layer with the given input shape and name it 'title_seq'
3. input_layer = keras.Input(shape=input_shape, name='title_seq')
4. # Add the first convolutional layer with 64 filters, kernel size 3, and
ReLU activation. Name it 'Conv1D_seq_1'
5. cnn = layers.Conv1D(filters=64, kernel_size=3, activation='relu',
name='Conv1D_seq_1')(input_layer)
6. # Add the second convolutional layer with 96 filters, kernel size 3, and
ReLU activation. Name it 'Conv1D_seq_2'
7. cnn = layers.Conv1D(filters=96, kernel_size=3, activation='relu',
name='Conv1D_seq_2')(cnn)
8. # Add a max pooling layer with strides 2. Name it 'maxpool_seq_2'
9. cnn = layers.MaxPool1D(strides=2, name='maxpool_seq_2')(cnn)
10. # Add a dropout layer with rate 0.25. Name it 'dropout_seq_2'
11. cnn = layers.Dropout(rate=0.25, name='dropout_seq_2')(cnn)
12. # Return the input layer and the output from the convolutional layers
(cnn)
13.
14. Function concatenate_(heads):
15. # Initialize an empty list 'final_layers'
16. final_layers = []
17. # For each pair (i, j) in the 'heads' list:
18. for i, j in heads:
19. # Append j (the output from the cnnhead_ function) to 'final_layers'
20. final_layers.append(j)
21. # Concatenate all the elements in 'final_layers' and name it 'concatenate'
22. # Return the concatenated output
23.
24. Function flat_(input_, number_of_classes):
25. # Flatten the input data
26. x = layers.Flatten()(input_)
27. # Add a dropout layer with rate 0.5
28. x = Dropout(0.5)(x)
29. # Add a dense layer with 'number_of_classes' units, softmax activation,
and name it 'decision'
30. x = layers.Dense(number_of_classes, name='decision',
activation='softmax')(x)
31. # Return the output 'x'

35
Kode sumber 3.11 Arsitektur model multi-head 1D-CNN eksperimen ke-2

3. Eksperimen ke-3
Pada eksperimen ke-3, dilakukan percobaan dengan menggunakan arsitektur yang sama
seperti eksperimen ke-1, yaitu multi-head 1D-CNN dengan 2 lapisan konvolusi 1 dimensi,
aktivasi ReLU pada tiap head, 1 lapisan maxpooling pada tiap head, 1 lapisan flatten, 2 lapisan
dropout dimana 1 lapisan pada tiap head dan 1 lapisan diletakkan setelah penggabungan head,
dan 1 lapisan dense dengan fungsi softmax. Namun, perbedaan utama dari eksperimen ke-3
adalah penambahan lapisan normalization dengan jenis layer normalization.

Gambar 3.8 Arstitektur model eksperimen ke-3

Layer normalization adalah teknik normalisasi yang menerapkan normalisasi pada level

36
fitur pada setiap contoh data dalam batch. Penambahan lapisan normalization ini bertujuan
untuk meningkatkan stabilitas pelatihan dan mengurangi waktu konvergensi model, sehingga
dapat membantu menghindari masalah yang terkait dengan perbedaan skala dan mencegah
nilai-nilai yang meledak atau menghilang selama proses pelatihan. Dengan demikian,
eksperimen ke-3 diharapkan dapat meningkatkan kinerja model dengan memperhatikan efek
normalisasi pada data dan memperkuat kemampuan generalisasi model untuk tugas klasifikasi
data 1 dimensi. Penggunaan layer normalization ini menjadi langkah lebih lanjut dalam
eksplorasi dan pengoptimalan arsitektur multi-head 1D-CNN dalam menyelesaikan masalah
yang kompleks. Untuk model arstiktur dapat dilihat pada gambar 3.8 dan langkah program
dapat dilihat pada kode sumber 3.12.

1. Function cnnhead_(input_shape, seq):


2. // Create an input layer with the specified input_shape and name based on
the sequence number seq
3. input_layer = Input(shape=input_shape, name='title_' + str(seq))
4.
5. // First convolutional layer with 64 filters, kernel size 3, and ReLU
activation
6. cnn = Conv1D(filters=64, kernel_size=3, activation='relu', name='Conv1D_'
+ str(seq) + '_1')(input_layer)
7. // Apply Layer Normalization to the first convolutional layer
8. cnn = LayerNormalization(name='layernorm_' + str(seq) + '_1')(cnn)
9.
10. // Second convolutional layer with 96 filters, kernel size 3, and ReLU
activation
11. cnn = Conv1D(filters=96, kernel_size=3, activation='relu', name='Conv1D_'
+ str(seq) + '_2')(cnn)
12. // Apply Layer Normalization to the second convolutional layer
13. cnn = LayerNormalization(name='layernorm_' + str(seq) + '_2')(cnn)
14.
15. // Maxpooling with stride 2
16. cnn = MaxPool1D(strides=2, name='maxpool_' + str(seq) + '_2')(cnn)
17. // Apply Dropout with rate 0.25
18. cnn = Dropout(rate=0.25, name='dropout_' + str(seq) + '_2')(cnn)
19.
20. // Return the input_layer and the final output cnn
21. return input_layer, cnn
22.
23. Function concatenate_(heads):
24. final_layers = []
25. // Merge the outputs from each head into the final_layers list
26. for i, j in heads:
27. final_layers.append(j)
28. // Concatenate the final_layers list using the concatenate layer
29. return concatenate(final_layers, name='concatenate')
30.
31. Function flat_(input_, number_of_classes):
32. // Flatten layer to flatten the input data
33. x = Flatten()(input_)
34. // Apply Dropout with rate 0.5
35. x = Dropout(0.5)(x)
36. // Dense layer for classification with the specified number_of_classes and
softmax activation
37. x = Dense(number_of_classes, name='decision', activation='softmax')(x)
38. // Return the output x
39. return x

37
Kode sumber 3.12 Arsitektur model multi-head 1D-CNN eksperimen ke-3

4. Eksperimen ke-4

Gambar 3.9 Arsitektur model eksperimen ke-4

38
Pada eksperimen ke-4, dilakukan percobaan dengan menggunakan arsitektur yang sama
seperti eksperimen ke-3, yaitu multi-head 1D-CNN dengan 2 lapisan konvolusi 1 dimensi,
aktivasi ReLU pada tiap head, 1 lapisan maxpooling pada tiap head, 2 lapisan layer
normalization pada tiap head, 1 lapisan flatten, 2 lapisan dropout dimana 1 lapisan pada tiap
head dan 1 lapisan diletakkan setelah penggabungan head, dan 1 lapisan dense dengan fungsi
softmax. Namun, perbedaan utama dari eksperimen ke-3 adalah mengganti lapisan layer
normalization dengan batch normalization. Batch normalization adalah teknik normalisasi
yang bekerja dengan menyesuaikan input pada setiap batch data selama proses pelatihan.
Teknik ini membantu mengurangi masalah perubahan distribusi data pada setiap iterasi
pelatihan dan mempercepat konvergensi model. Dalam eksperimen ke-4, batch normalization
digunakan sebagai pengganti dari layer normalization yang sebelumnya telah digunakan pada
eksperimen ke-3. Dengan melakukan perubahan ini, eksperimen ke-4 diharapkan dapat
meningkatkan kemampuan generalisasi model, mengurangi overfitting, dan mempercepat
proses pelatihan. Hasil eksperimen akan memberikan wawasan tentang efektivitas penggunaan
batch normalization pada arsitektur multi-head 1D-CNN dalam tugas klasifikasi data 1 dimensi.
Untuk gambar arsitektur dapat dilihat pada gambar 3.9 dan proses pembuatannya dapat dilihat
pada kode sumber 3.13.

1. Function cnnhead_(input_shape, seq):


2. // Create an input layer with the specified input_shape and name based on
the sequence number seq
3. input_layer = Input(shape=input_shape, name='title_' + str(seq))
4.
5. // First convolutional layer with 64 filters, kernel size 3, and ReLU
activation
6. cnn = Conv1D(filters=64, kernel_size=3, activation='relu', name='Conv1D_'
+ str(seq) + '_1')(input_layer)
7. // Apply Batch Normalization to the first convolutional layer
8. cnn = BatchNormalization(name='batchnorm_' + str(seq) + '_1')(cnn)
9.
10. // Second convolutional layer with 96 filters, kernel size 3, and ReLU
activation
11. cnn = Conv1D(filters=96, kernel_size=3, activation='relu', name='Conv1D_'
+ str(seq) + '_2')(cnn)
12. // Apply Batch Normalization to the second convolutional layer
13. cnn = BatchNormalization(name='batchnorm_' + str(seq) + '_2')(cnn)
14.
15. // Maxpooling with stride 2
16. cnn = MaxPool1D(strides=2, name='maxpool_' + str(seq) + '_2')(cnn)
17. // Apply Dropout with rate 0.25
18. cnn = Dropout(rate=0.25, name='dropout_' + str(seq) + '_2')(cnn)
19.
20. // Return the input_layer and the final output cnn
21. return input_layer, cnn
22.
23. Function concatenate_(heads):
24. final_layers = []
25. // Merge the outputs from each head into the final_layers list
26. for i, j in heads:
27. final_layers.append(j)
28. // Concatenate the final_layers list using the concatenate layer
29. return concatenate(final_layers, name='concatenate')
30.
31. Function flat_(input_, number_of_classes):
32. // Flatten layer to flatten the input data

39
33. x = Flatten()(input_)
34. // Apply Dropout with rate 0.5
35. x = Dropout(0.5)(x)
36. // Dense layer for classification with the specified number_of_classes and
softmax activation
37. x = Dense(number_of_classes, name='decision', activation='softmax')(x)
38. // Return the output x
39. return x

Kode sumber 3.13 Arsitektur model multi-head 1D-CNN eksperimen ke-4

5. Eksperimen ke-5

Gambar 3.10 Arsitektur model eksperimen ke-5

40
Pada eksperimen ke-5, dilakukan percobaan dengan menggunakan semua lapisan yang
digunakan pada eksperimen-eksperimen sebelumnya, yaitu multi-head 1D-CNN dengan 2
lapisan konvolusi 1 dimensi, aktivasi ReLU pada tiap head, 1 lapisan maxpooling pada tiap
head, 2 lapisan layer normalization pada tiap head, 2 lapisan bacth normalization pada tiap
head, 1 lapisan flatten, 2 lapisan dropout dimana 1 lapisan pada tiap head dan 1 lapisan
diletakkan setelah penggabungan head, dan 1 lapisan dense dengan fungsi softmax. Untuk
gambar arsitektur dapat dilihat pada gambar 3.10 dan proses pembuatannya dapat dilihat pada
kode sumber 3.14.

1. Function cnnhead_(input_shape, seq):


2. # Create input layer with specified input shape and name
3. input_layer = Input(shape=input_shape, name='title_' + str(seq))
4.
5. # First convolutional layer with 64 filters, kernel size 3, and ReLU
activation
6. cnn = Conv1D(filters=64, kernel_size=3, activation='relu', name='Conv1D_'
+ str(seq) + '_1')(input_layer)
7. cnn = LayerNormalization(name='layernorm_' + str(seq) + '_1')(cnn) #
Apply layer normalization
8. cnn = BatchNormalization(name='batchnorm_' + str(seq) + '_1')(cnn) #
Apply batch normalization
9.
10. # Second convolutional layer with 96 filters, kernel size 3, and ReLU
activation
11. cnn = Conv1D(filters=96, kernel_size=3, activation='relu', name='Conv1D_'
+ str(seq) + '_2')(cnn)
12. cnn = LayerNormalization(name='layernorm_' + str(seq) + '_2')(cnn) #
Apply layer normalization
13. cnn = BatchNormalization(name='batchnorm_' + str(seq) + '_2')(cnn) #
Apply batch normalization
14.
15. # MaxPooling layer with stride 2
16. cnn = MaxPool1D(strides=2, name='maxpool_' + str(seq) + '_2')(cnn)
17.
18. # Dropout layer with rate 0.25 to reduce overfitting
19. cnn = Dropout(rate=0.25, name='dropout_' + str(seq) + '_2')(cnn)
20.
21. return input_layer, cnn
22.
23. Function concatenate_(heads):
24. final_layers = []
25. for i, j in heads:
26. final_layers.append(j)
27.
28. # Concatenate the output of each head
29. return concatenate(final_layers, name='concatenate')
30.
31. Function flat_(input_, number_of_classes):
32. # Flatten the input layer
33. x = Flatten()(input_)
34.
35. # Apply dropout with rate 0.5 to reduce overfitting
36. x = Dropout(0.5)(x)
37.
38. # Dense layer with softmax activation for classification
39. x = Dense(number_of_classes, name='decision', activation='softmax')(x)

41
40.
41. return x

Kode sumber 3.14 Arsitektur model multi-head 1D-CNN eksperimen ke-5

6. Eksperimen ke-6
Pada eksperimen ke-6, dilakukan percobaan dengan menambahkan fungsi callback()
pada arsitektur model yang sama dengan eksperimen ke-1. Fungsi callback() digunakan untuk
menghentikan proses pelatihan dan validasi ketika syarat yang ditentukan telah terpenuhi.
Dalam Tugas Akhir ini, dua syarat yang ditetapkan adalah mencapai akurasi dan validasi
akurasi sebesar 0.98, serta memberhentikan pelatihan jika nilai akurasi tidak meningkat selama
15 iterasi (patience). Penggunaan callback() sangat bermanfaat dalam mengoptimalkan proses
pelatihan model. Dengan menghentikan pelatihan secara otomatis saat mencapai tingkat akurasi
yang diinginkan, kita dapat menghemat waktu dan sumber daya yang diperlukan. Selain itu,
penggunaan patience pada callback() memungkinkan model untuk menghindari terjebak dalam
kondisi overfitting dan memastikan bahwa model yang dihasilkan memiliki kemampuan
generalisasi yang baik. Dengan adanya tambahan callback() pada eksperimen ke-6, diharapkan
model dapat mencapai tingkat akurasi yang diharapkan dan mengoptimalkan proses pelatihan
dengan efisien.

7. Eksperimen ke-7
Pada eksperimen ke-7, dilakukan penambahan fungsi callback() pada arsitektur model
yang serupa dengan eksperimen ke-2. Fungsi callback() berperan untuk menghentikan proses
pelatihan dan validasi sesuai dengan syarat yang telah ditentukan sebelumnya. Dua syarat
tersebut adalah mencapai akurasi dan validasi akurasi sebesar 0.98, serta memberhentikan
pelatihan jika nilai akurasi tidak mengalami peningkatan selama 15 iterasi berturut-turut
(patience). Penggunaan callback() memiliki manfaat yang signifikan dalam mengoptimalkan
proses pelatihan model. Dengan menghentikan pelatihan secara otomatis ketika akurasi yang
diinginkan tercapai, kita dapat menghemat waktu dan sumber daya yang diperlukan dalam
eksperimen. Selain itu, penggunaan patience pada callback() membantu model untuk
menghindari overfitting dan memastikan bahwa model yang dihasilkan memiliki kemampuan
generalisasi yang baik. Dengan penambahan callback() pada eksperimen ke-7, diharapkan
model dapat mencapai tingkat akurasi yang diharapkan dan memperbaiki proses pelatihan
secara efisien.

8. Eksperimen ke-8
Pada eksperimen ke-8, dilakukan tambahan fungsi callback() pada arsitektur model yang
sama dengan eksperimen ke-3. Fungsi callback() ini berperan penting dalam mengoptimalkan
proses pelatihan model. Tujuan utama dari penggunaan callback() adalah untuk
memberhentikan proses pelatihan dan validasi ketika syarat yang telah ditetapkan tercapai.
Dalam Tugas Akhir ini, terdapat dua syarat yang ditetapkan, yaitu mencapai akurasi dan
validasi akurasi sebesar 0.98, serta menghentikan pelatihan apabila nilai akurasi tidak
mengalami peningkatan selama 15 iterasi (patience). Penggunaan callback() memberikan
banyak manfaat. Dengan adanya callback(), pelatihan model dapat berhenti secara otomatis
saat mencapai tingkat akurasi yang diinginkan, sehingga menghemat waktu dan sumber daya
yang diperlukan. Selain itu, penggunaan parameter patience pada callback() juga sangat berarti,
karena hal ini membantu model menghindari kondisi overfitting dan memastikan bahwa model
yang dihasilkan memiliki kemampuan generalisasi yang baik. Dengan penambahan callback()
pada eksperimen ke-8, diharapkan model dapat mencapai tingkat akurasi yang diharapkan dan
mengoptimalkan proses pelatihan dengan lebih efisien.

42
9. Eksperimen ke-9
Pada eksperimen ke-9, dilakukan tambahan fungsi callback() pada model dengan
arsitektur yang sama seperti eksperimen ke-4. Fungsi callback() digunakan untuk
memberhentikan proses pelatihan dan validasi ketika dua syarat telah terpenuhi. Pertama,
pelatihan akan dihentikan ketika akurasi dan validasi akurasi mencapai nilai minimal 0.98.
Kedua, pelatihan akan dihentikan jika selama 15 iterasi berturut-turut, nilai akurasi tidak
mengalami peningkatan (patience). Penggunaan callback() ini memiliki manfaat yang
signifikan dalam mengoptimalkan proses pelatihan model. Dengan adanya mekanisme untuk
secara otomatis menghentikan pelatihan saat mencapai target akurasi yang diinginkan, kita
dapat menghemat waktu dan sumber daya yang diperlukan untuk pelatihan model. Selain itu,
penggunaan patience dalam callback() juga membantu mencegah model terjebak dalam kondisi
overfitting dan memastikan bahwa model yang dihasilkan memiliki kemampuan generalisasi
yang baik. Dengan penambahan callback() pada eksperimen ke-9, diharapkan model dapat
mencapai tingkat akurasi yang diinginkan dan mengoptimalkan proses pelatihan dengan efisien.

10. Eksperimen ke-10


Pada eksperimen ke-10, dilakukan penambahan fungsi callback() pada model dengan
arsitektur yang sama seperti eksperimen ke-5. Fungsi callback() digunakan untuk
menghentikan proses pelatihan dan validasi saat mencapai syarat yang ditetapkan. Dua syarat
utama yang ditetapkan dalam Tugas Akhir ini adalah mencapai akurasi dan validasi akurasi
setidaknya 0.98, serta memberhentikan pelatihan jika nilai akurasi tidak meningkat selama 15
iterasi (patience). Penggunaan callback() membawa manfaat signifikan dalam mengoptimalkan
proses pelatihan model. Dengan berhenti secara otomatis ketika mencapai tingkat akurasi yang
diinginkan, kita dapat menghemat waktu dan sumber daya yang diperlukan. Selain itu,
penggunaan patience pada callback() memungkinkan model untuk menghindari kondisi
overfitting dan memastikan bahwa model yang dihasilkan memiliki kemampuan generalisasi
yang baik. Dengan penambahan callback() pada eksperimen ke-10, diharapkan model dapat
mencapai tingkat akurasi yang diharapkan dan proses pelatihan dapat berjalan dengan efisien.
3.3.4 Implementasi Evaluasi Model
Setelah membuat rancangan implementasi untuk training model, selanjutnya dilakukan
pembuatan rancangan implementasi evaluasi kinerja model multi-head 1D-CNN dengan
melihat accuracy, precision, recall, dan F1-Score. Pada Kode sumber 3.11 menjelaskan cara
untuk mengevaluasi performa model prediksi dengan membandingkan hasil prediksi dengan
label sebenarnya.
Pada bagian pertama, confusion matrix atau matriks kebingungan dihitung untuk data
pelatihan (train_cm) dan data uji (test_cm). Confusion matrix memberikan gambaran tentang
sejauh mana model dapat mengklasifikasikan dengan benar setiap kelas target. Selanjutnya,
dilakukan perhitungan metrik evaluasi lainnya menggunakan classification_report dari modul
sklearn-metrics. Classification report memberikan informasi rinci tentang Precision, Recall,
F1-Score, dan Support untuk setiap kelas. Metrik-metrik ini digunakan untuk mengevaluasi
performa model. Hal ini membantu dalam memahami sejauh mana model dapat melakukan
klasifikasi dengan akurat pada data pelatihan dan data uji.
Pada proses implementasi evaluasi model, akan dilakukan pengujian sebanyak 3 kali pada
setiap eksperimen. Pengujian ini dilakukan untuk memastikan bahwa hasil dari model adalah
stabil dan optimal. Menggunakan angka 3 dalam pengujian dipilih karena merupakan angka
ganjil yang memungkinkan untuk membandingkan hasil dengan baik. Dari hasil 3 kali
pengujian, akan dihitung rata-rata dari nilai accuracy dan F1-Score sebagai ukuran performa
keseluruhan model. Pengujian multiple kali ini sangat penting untuk memahami sejauh mana
model dapat menggeneralisasi data dan apakah hasil yang didapatkan dapat dipertimbangkan

43
sebagai hasil yang konsisten dan dapat diandalkan. Dengan melihat rata-rata accuracy dan F1-
Score dari pengujian yang berulang, penulis Tugas Akhir dapat mendapatkan gambaran yang
lebih jelas tentang performa model secara keseluruhan dan dapat mengambil keputusan yang
lebih tepat dalam analisis hasil eksperimen.
Proses evaluasi yang menyertakan pengujian berulang ini akan memberikan kepercayaan
yang lebih tinggi terhadap hasil yang dicapai oleh model, dan juga akan memberikan informasi
lebih lanjut mengenai tingkat variasi performa model terhadap dataset yang berbeda. Dengan
demikian, Tugas Akhir ini dapat memberikan hasil yang lebih kuat dan lebih relevan dalam
mendukung penelitian atau aplikasi yang dilakukan.

1. # Hitung confusion matrix untuk data pelatihan


2. ytrain_ = ytrain.argmax(axis = 1)
3. ytrain_pred_ = ytrain_pred.argmax(axis = 1)
4. train_cm = confusion_matrix(ytrain_, ytrain_pred_)
6. # Hitung confusion matrix untuk data pengujian
7. ytest_ = ytest.argmax(axis = 1)
8. ytest_pred_ = ytest_pred.argmax(axis = 1)
9. test_cm = confusion_matrix(ytest_, ytest_pred_)
10. # Cetak nilai precision, recall, accuracy, dan f1-score
11. print(sklearn.metrics.classification_report(ytest_, ytest_pred_, digits=4))

Kode sumber 3. 15 Evaluasi model

44
BAB IV HASIL DAN PEMBAHASAN
Pada BAB IV ini, akan disajikan hasil eksperimen dan analisis yang diperoleh dari
implementasi model telah dikembangkan dan dibuat. Kemudian akan dilakukan eksperimen
dan menulis pembahasan mengenai hasil dan evaluasi dari eksperimen yang telah dilakukan.

4.1 Hasil eksperimen


Pada tahap ini akan disajikan hasil implementasi dari algoritma yang telah dijelaskan pada
bab 3. Hasil implementasi tersebut mencakup persiapan dataset, pra-pemrosesan dataset,
pelatihan model menggunakan multi-head 1D-CNN. Evaluasi model juga dilakukan dengan
mengukur accuracy dan f1-score.

4.1.1 Hasil Implementasi Prepocessing Data


Hasil berikut diperoleh berdasarkan langkah-langkah implementasi preprocessing data
yang disajikan pada subbab 3.2.2, yang terdiri dari pembacaan dataset UCI HAR, cleaning data,
segmentasi data, one-hot encoding, dan scale and normalisasi. Pertama, memuat isi dataset UCI
HAR yang digunakan pada Tugas Akhir ini.

1. Memuat dataset
Pada gambar 4.1 terdapat informasi pada dataset UCI HAR yang digunakan untuk Tugas Akhir.
Semua informasi yang ditampilkan dataset masih belum dilakukan preprocessing.

Gambar 4.1 Informasi Dataset

Dalam konteks ini, kolom "exp" merupakan nomor percobaan yang dilakukan oleh masing-
masing dari 30 orang relawan. Setiap nomor percobaan akan memiliki serangkaian data point
yang direkam oleh sensor accelerometer dan gyroscope pada tiga sumbu, yaitu sumbu x, y, dan
z. Kolom "no" pada data point sinyal akan menunjukkan nomor urut dari setiap data point yang
direkam.
Dengan adanya informasi ini, peneliti dapat menganalisis data yang terkait dengan
aktivitas yang terdeteksi oleh sensor tersebut. Data tersebut akan mencakup informasi tentang
gerakan dan perubahan posisi dalam tiga dimensi, yang direpresentasikan oleh sumbu x, y, dan
z. Dengan memahami struktur data yang dijelaskan di atas, peneliti akan dapat melanjutkan
pra-pemrosesan data dengan lebih baik, seperti cleaning data, segmentasi data, one-hot
encoding, dan scale and normalisasi, untuk mendapatkan wawasan yang lebih dalam tentang
aktivitas yang sedang diamati.
Sebelum memasuki pra-pemrosesan data, diperlukan pemahaman yang jelas tentang
sinyal yang akan diolah. Untuk mendapatkan pemahaman yang lebih lengkap tentang sinyal
aktivitas yang lain, gambar-gambar sinyal tersebut dilampirkan pada lampiran 1. Hal ini akan
membantu dalam menganalisis dan membandingkan bentuk serta karakteristik masing-masing

45
sinyal, sehingga dapat merancang strategi yang tepat untuk melakukan pra-pemrosesan data
yang diperlukan.

2. Cleaning Data
Setelah mengetahui informasi dataset maka tahap selanjutnya yaitu pra-pemrosesan data.
Pra-pemrosesan data yang pertaman dilakukan yaitu cleaning data. Pada tahap cleaning data,
dilakukan penghapusan data yang memiliki nilai 0 pada kolom activity. Langkah ini penting
dilakukan karena data dengan nilai activity 0 tidak memberikan informasi yang berguna dalam
dataset dan dapat mempengaruhi analisis yang dilakukan. Dengan menghilangkan data tersebut,
kita dapat memastikan bahwa dataset yang digunakan hanya terdiri dari data yang relevan dan
memiliki nilai activity yang signifikan.
Selanjutnya, dilakukan penghilangan data dengan activity yang memiliki nilai 7, 8, 9, 10,
11, dan 12. Hal ini dilakukan karena aktivitas-aktivitas tersebut tidak digunakan dalam proses
pengolahan data yang akan dilakukan. Dengan menghapus data yang tidak relevan, kita dapat
menyederhanakan dataset dan menghindari pengaruh negatif yang mungkin ditimbulkan dalam
analisis. Melalui proses pembersihan data ini, kita dapat memastikan bahwa data yang
digunakan dalam analisis lebih bersih, valid, dan siap untuk diproses lebih lanjut. Proses ini
membantu mengurangi kemungkinan adanya bias atau kesalahan dalam analisis yang dapat
menghasilkan hasil yang tidak akurat. Hasil dari pembersihan data ini dapat dilihat pada gambar
4.2, di mana jumlah dataset sebelumnya sebanyak 1.122.772 data berkurang menjadi 748.406
data setelah dilakukan pembersihan. Sebanyak 374.366 data telah dihilangkan dalam proses
tersebut.

Gambar 4.2 Dataset Setelah Cleaning Data

3. Segmentasi Data dan Menyimpan Hasil Segmentasi


Setelah tahap cleaning data, langkah selanjutnya dalam pra-pemrosesan dataset UCI HAR
adalah melakukan segmentasi data. Pada deskripsi dataset dijelaskan bahwa dataset pengukuran
dilakukan dengan laju konstan sebesar 50 Hz. Kemudian setelah dilakukan filter noise sinyal
dipotong dengan lebar tetap 2,56 detik denga overlap sebesar 50% atau 1,28 detik. Oleh karena
itu, setiap sinyal akan memiliki 50 x 2,56 = 128 titik sampel. Pada Tugas Akhir ini
menggunakan step atau sliding window sebesar 25 titik sampel. setiap kali proses pemotongan
segmen baru dimulai, posisi pemotongan digeser sebanyak 25 titik dari posisi segmen
sebelumnya. Sebagai contoh, kita asumsikan data awal berisi 300 titik sampel (total waktu

46
pengukuran 6 detik). Maka proses pemotongan segmen akan dilakukan dari titik sampel 1
hingga 128 (total 128), segmen berikutnya data sampel 26 hingga 153 (total 128 sampel,
tumpang tindih 25 sampel), segmen berikutnya data sampel 51 hingga 178 (total 128 sampel,
tumpang tindih 25 sampel), dan seterusnya. Hal ini dilakukan untuk memastikan bahwa tidak
ada informasi yang hilang dan memungkinkan pemrosesan data secara lebih efisien dan efektif.
Proses segmentasi ini penting karena memungkinkan model atau algoritma yang akan
digunakan untuk memahami pola dan karakteristik pada setiap segmen data secara lebih
terperinci.
Dalam konteks data yang menggunakan sensor accelerometer dan gyroscope, proses
segmentasi ini menghasilkan 29.932 sampel segmen yang dapat digunakan untuk analisis dan
pemodelan. Dengan segmentasi ini, data dapat dipisahkan menjadi segmen-segmen yang lebih
kecil untuk memungkinkan pengolahan dan analisis yang lebih detail terhadap aktivitas
manusia yang tercatat dalam dataset. Pada Gambar 4.4, menunjukkan hasil dari proses
segmentasi dataset pada user ke-1 dengan aktivitas dan sinyal yang berbeda. Segmentasi ini
memungkinkan analisis yang lebih mendalam terhadap aktivitas manusia yang terrekam dalam
dataset, serta memfasilitasi pemodelan yang lebih akurat. Dengan melihat gambar ini, kita dapat
mengenali pola dan perubahan dalam sinyal pada setiap segmen.

Gambar 4.3 Data Setiap Aktivitas Setelah Segmentasi (a) Accelerometer (b) Gyroscope

Selain itu, informasi mengenai jumlah sampel untuk setiap aktivitas dapat ditemukan
pada gambar 4.5. Gambar tersebut memberikan gambaran tentang seberapa banyak sampel
yang terkait dengan masing-masing aktivitas dalam dataset setelah dilakukan proses
segmentasi. Segmentasi merupakan proses pemecahan sinyal menjadi segmen-segmen yang
lebih kecil, sehingga memungkinkan analisis yang lebih terperinci terhadap setiap segmen dan
mengidentifikasi pola atau informasi yang terkandung di dalamnya.
Setelah proses segmentasi data, langkah selanjutnya adalah menyimpan hasil segmentasi
ke dalam file pickle. Hal ini bertujuan agar data yang telah di-segmentasi dapat disimpan dalam
bentuk yang dapat dengan mudah diakses dan digunakan kembali tanpa perlu melakukan pra-
pemrosesan ulang. Dengan menyimpan data segmentasi dalam format pickle, informasi dan
struktur data dapat dipertahankan, sehingga memudahkan dalam penggunaan data di masa
depan. Dengan cara ini, kita dapat menghemat waktu dan sumber daya yang diperlukan untuk
pra-pemrosesan ulang setiap kali kita ingin menggunakan data tersebut, dan kita dapat langsung

47
memanfaatkan data segmentasi yang telah siap digunakan.

Gambar 4.4 Dataset Setelah Segmentasi

4. Cleaning data (memastikan kembali)

Gambar 4.5 Jumlah Sampel Data

Langkah selanjutnya adalah memastikan kembali apakah terdapat data null dalam dataset
yang telah dipecah menjadi segmen-segmen yang lebih kecil. Tujuannya adalah untuk
membersihkan data dari nilai null atau tidak terdefinisi (NaN) yang mungkin muncul setelah
proses segmentasi. Dengan melakukan pemeriksaan ini, data yang digunakan dalam analisis
akan terjamin hanya terdiri dari elemen-elemen yang terdefinisi dan valid, sehingga
memastikan kehandalan dan keakuratan analisis yang dilakukan selanjutnya.
Pada Gambar 4.6, dapat dilihat bahwa setelah proses pengecekan, jumlah data tetap sama,
yang berarti tidak ada data yang hilang akibat dari pembersihan nilai null atau NaN. Hal ini

48
menunjukkan bahwa dataset yang telah dipecah menjadi segmen-segmen yang lebih kecil sudah
dalam kondisi yang baik dan siap untuk digunakan dalam analisis lebih lanjut. Dalam konteks
ini, memastikan bahwa data tidak mengandung nilai null atau NaN sangat penting karena nilai
yang hilang atau tidak terdefinisi dapat mempengaruhi hasil analisis dan mengakibatkan
kesalahan atau bias dalam model atau algoritma yang akan digunakan. Dengan membersihkan
data dari nilai null, kita dapat memastikan bahwa analisis yang dilakukan menghasilkan
informasi yang konsisten dan dapat diandalkan, serta meminimalkan potensi kesalahan dalam
interpretasi hasil analisis.

5. One-hot encoding
Setelah melakukan proses cleaning data pada dataset UCI HAR, langkah selanjutnya
adalah menerapkan one-hot encoding pada kolom aktivitas. One-hot encoding merupakan
metode yang digunakan untuk mengubah variabel kategorikal menjadi bentuk yang dapat
digunakan dalam analisis lebih lanjut.

Tabel 4.1 Label One-Hot Encoding

Aktivitas
Sampel
1 2 3 4 5 6
1 0 0 0 0 0 1
2 1 0 0 0 0 0
3 0 0 0 0 0 1
4 0 0 1 0 0 0
5 0 0 0 0 0 1
… … … … … … …
29.928 0 1 0 0 0 0
29.929 1 0 0 0 0 0
29.930 0 0 1 0 0 0
29.931 0 0 0 0 1 0
29.932 0 0 1 0 0 0

Pada tabel 4.1, kolom aktivitas akan diubah menjadi representasi biner di mana setiap
aktivitas akan memiliki sebuah vektor biner dengan panjang yang sama. Setiap elemen vektor
biner akan mewakili suatu kategori aktivitas tertentu. Dengan menerapkan one-hot encoding,
dataset UCI HAR akan siap untuk digunakan dalam pemodelan atau analisis lebih lanjut yang
memerlukan representasi numerik dari aktivitas.

6. Pembagian dataset
Pada tahap selanjutnya, dataset akan dibagi menjadi tiga bagian, yaitu Training, testing,
dan Validation. Pertama, dilakukan pembagian antara reshaped_segments (fitur) dan labels
(target) menjadi data Training dan data testing menggunakan fungsi train_test_split. Data
testing akan memiliki proporsi sebesar 10% dari keseluruhan dataset. Gambar 4.6 menunjukkan
jumlah sampel pada data testing, yang memiliki total 2994 sampel.
Selanjutnya, dari data Training yang telah dibagi sebelumnya, dilakukan pembagian
kembali antara data Training dan data Validation menggunakan fungsi train_test_split. Data
Validation akan memiliki proporsi sebesar 20% dari data Training yang sudah dibagi
sebelumnya. Gambar 4.7 menampilkan jumlah sampel pada data Validation dan data Training,
dengan total 5388 sampel untuk Validation dan 21550 sampel untuk Training. Seluruh

49
pembagian dataset dilakukan tanpa menggunakan random seed untuk acak sehingga hasil
pembagian dapat bervariasi. Dengan demikian, setelah pembagian dataset, terdapat total 29,932
sampel yang terdiri dari data Training (gambar 4.7 untuk (b)), data testing (gambar 4.6), dan
data Validation (gambar 4.7 untuk (a)).

Gambar 4.6 Visualisasi Data Testing

Gambar 4.7 Visualisasi Data (a) Validation (b) Training

7. Scale and Normalization


Tahapan setelah melakukan pembagian data adalah melakukan scaling dan normalisasi
pada dataset HAR. Scaling dan normalisasi bertujuan untuk mengubah rentang nilai data
menjadi antara -1 dan 1, sehingga memudahkan dalam pemrosesan dan analisis lebih lanjut.
Dengan mengubah data menjadi rentang yang seragam, hasil prediksi dan interpretasi dapat
menjadi lebih akurat dan dapat diandalkan. Normalisasi juga membantu dalam mengurangi efek
dominasi variabel dengan skala yang lebih besar, sehingga memastikan bahwa setiap variabel
memberikan kontribusi yang seimbang dalam analisis.
Proses scaling umumnya dilakukan untuk mengatasi perbedaan skala antara fitur-fitur
dalam dataset. Beberapa algoritma atau metode analisis, seperti regresi dan beberapa algoritma
machine learning, dapat terpengaruh oleh perbedaan skala ini dan menghasilkan hasil yang

50
tidak optimal. Dengan melakukan scaling, data akan memiliki rentang nilai yang seragam,
memastikan bahwa setiap fitur memiliki bobot yang setara dan tidak mendominasi proses
analisis. Normalisasi, di sisi lain, membantu dalam mengubah seluruh distribusi data sehingga
rentang nilai datanya menjadi seragam dan berada pada skala yang sama. Teknik normalisasi
yang umum digunakan adalah Min-Max Scaling.

Tabel 4.2 Hasil Scale and Normalization

No Sampel point (titik sinyal)


sampel 1 2 3 … 126 127 128
1 -0.1388 -0.1542 -0.0968 … -0.0785 -0.0793 -0.0864
2 0.5126 0.5845 0.5676 … -0.1905 -0.1677 -0.1426
3 0.0549 0.0346 0.0556 … -0.0769 -0.0771 -0.0858
4 0.5357 0.4767 0.4656 … -0.0889 -0.0945 -0.0781
5 -0.0672 -0.0870 -0.0636 … -0.0767 -0.0776 -0.0832
… …
29.928 0.2617 0.2273 0.2386 … 0.0598 -0.0497 -0.1466
29.929 0.4338 0.4693 0.5198 … -0.1835 -0.1506 -0.1319
29.930 0.6550 0.5645 0.4598 … -0.0750 -0.1082 -0.0925
29.931 0.4446 0.4280 0.4345 … -0.0810 -0.0815 -0.0882
29.932 0.3232 0.3719 0.4179 … -0.0107 -0.0225 -0.0478

Pada Tabel 4.2, terlihat hasil dari proses skala dan normalisasi yang mengubah rentang
nilai data menjadi -1 sampai 1. Dengan menerapkan tahapan ini, data menjadi lebih terstruktur
dan lebih siap untuk digunakan dalam analisis lebih lanjut, termasuk dalam membangun model
prediktif atau tugas analisis lainnya. Scaling dan normalisasi menjadi bagian penting dari pra-
pemrosesan data untuk memastikan bahwa data yang digunakan dalam analisis memiliki
kualitas yang baik dan dapat menghasilkan hasil yang akurat dan andal. Proses ini memberikan
manfaat yang signifikan dalam mengoptimalkan analisis dan pemodelan data. Dengan
demikian, proses skala dan normalisasi merupakan langkah penting dalam pra-pemrosesan
data, memungkinkan analisis yang lebih baik dan hasil prediksi yang lebih handal.

4.1.2 Hasil Implementasi Model Training


Pada tahap ini menampilkan hasil dari 10 eksperimen yang telah dilakukan. 10
eksperimen dilakukan untuk mendapatkan model yang terbaik dan mengetahui performa model
pada tiap model eksperimen. Ketika model terindikasi mengalami performa yang kurang baik
maka akan dilakukan penanganan seperti terjadinya overfitting, maka akan ditambahkan lapisan
dropout dan penggunaan earlystopping dengan fungsi callback. Selama proses model training,
dilakukan pengukuran accuracy dan loss, serta val_accuracy dan val_loss pada setiap iterasi
epochnya, namun pada eksperimen ke-6 sampai ke-10 memiliki epoch yang berbeda karena
menggunakan earlystopping dengan memanggil fungsi callback. Pada tiap eksperimen akan
diperlihatkan grafik nilai accuracy dan loss, serta val_accuracy dan val_loss saat program
sedang melakukan training dan validation data pada masing-masing iterasi epochnya. Berikut
adalah hasil implementasi model training pada tiap eksperimen:

1. Eksperimen ke-1
Pada eksperimen ke-1, menggunakan model arsitektur sederhana Multi-head 1D-CNN
yang terdiri dari 2 lapisan konvolusional 1 dimensi, 1 lapisan max-pooling, 1 lapisan flatten,

51
dan 1 lapisan dense. Pada gambar 4.9 menunjukkan grafik hasil accuracy dan loss proses
Training dan Validation. Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 98,51% accuracy (Training) dan 96,78%
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 95,58% accuracy (Training) dan 94,86%
val_accuracy (Validation).

• Nilai loss pada epoch terakhir: 5,31% loss (Training) dan 9,45% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 12,12% loss (Training) dan 14,13% val_loss
(Validation).

Gambar 4.8 Hasil Training dan Validation Eksperimen ke-1 (a) Accuracy (b) Loss

Pada gambar 4.9, terlihat bahwa hasil dari model Training terindikasi akan mengalami
overfitting pada proses prediksi karena selisih dari akurasi dan validasi akurasi semakin besar
dari epoch ke-20 sampai epoch ke-100. Overfitting ini dapat diidentifikasi dari grafik kurva
model Training, di mana performa pada data pelatihan terus meningkat dengan nilai akurasi
akhir 98,51%, namun performa pada data validasi menurun secara bertahap dan mencapai
puncaknya yaitu 96,78%. Hal ini menunjukkan bahwa model Training terlalu mendekati data
pelatihan yang ada, sehingga gagal dalam menggeneralisasi dengan baik pada data yang belum
pernah dilihat sebelumnya.
Dampak dari overfitting ini sangat signifikan pada kinerja model saat dilakukan pengujian
atau penerapan model pada data baru. Karena model telah terlalu khusus pada data pelatihan,
ia menjadi tidak mampu mengenali pola umum yang ada dalam data yang belum pernah dilihat.
Sebagai akibatnya, ketika model diterapkan pada data baru, performanya memungkinkan
menjadi buruk dan prediksi yang dihasilkan menjadi tidak akurat. Untuk mengatasi masalah
overfitting pada eksperimen ke-1 dilakukan eksperimen ke-2 dengan menambahkan lapisan
dropout. Penting untuk selalu memantau grafik kurva model Training dan melakukan evaluasi
performa model secara menyeluruh untuk memastikan model dapat menggeneralisasi dengan
baik pada data yang baru.

2. Eksperimen ke-2
Pada eksperimen ke-2, menggunakan model arsitektur yang digunakan pada eksperimen
ke-1 namun menambahkan 2 lapisan dropout yang diletakkan sebelum melakukan

52
penggabungan data (concate) dan setelah lapisan flatten. Pada gambar 4.10 menunjukkan grafik
hasil accuracy dan loss proses Training dan Validation. Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 97,21% accuracy (Training) dan 96,57%
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 94,65% accuracy (Training) dan 94,54%
val_accuracy (Validation).

• Nilai loss pada epoch terakhir: 7,49% loss (Training) dan 9,15% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 14,45% loss (Training) dan 14,40% val_loss
(Validation).

Gambar 4.9 Hasil Training dan Validation Eksperimen ke-2 (a) Accuracy, (b) Loss

Pada gambar 4.10, hasil dari model Training menunjukkan performa yang cukup baik
setelah penambahan lapisan dropout. Dengan menggunakan teknik dropout, jarak antara
akurasi pelatihan dan data validasi menjadi lebih serupa dan indikasi overfitting terjadi pada
saat epoch ke-70an ke atas, namun selisihnya cukup rendah. Meskipun demikian, terdapat
masalah yaitu terjadi penurunan nilai akurasi dari sebelumnya, sekarang menjadi 97,21%
dibandingkan dengan 98,51% pada akurasi sebelumnya. Selain itu, nilai loss juga meningkat
menjadi 7,49% dibandingkan dengan sebelumnya yaitu 5,31%.
Solusi untuk meningkatkan akurasi model namun tetap efektif untuk mengatasi masalah
overfitting yaitu dengan menambahkan layer normalization atau batch normalization atau bisa
dengan menambahkan kedua lapisan tersebut. Layer normalization dan batch normalization
adalah teknik yang digunakan untuk mengurangi overfitting dan membantu model belajar
dengan lebih stabil. Dengan normalisasi, aktivasi dalam setiap lapisan jaringan saraf menjadi
lebih terkendali, yang dapat membantu dalam proses pelatihan dan konvergensi model dengan
lebih baik. Pada eksperimen selanjutnya akan ditambahkan lapisan tersebut.

3. Eksperimen ke-3
Pada eksperimen ke-3, menggunakan model arsitektur yang digunakan pada eksperimen
ke-2 namun menambahkan 2 lapisan layer normalization yang diletakkan setelah lapisan
konvolusional. Pada gambar 4.11 menunjukkan grafik hasil accuracy dan loss proses Training
dan Validation. Berikut adalah nilai accuracy dan loss:

53
• Nilai accuracy pada epoch terakhir: 98,97% accuracy (Training) dan 97,88%
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 97,16% accuracy (Training) dan 96,99%
val_accuracy (Validation).

• Nilai loss pada epoch terakhir: 2,53% loss (Training) dan 8,84% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 7,51% loss (Training) dan 9,44% val_loss
(Validation).

Gambar 4.10 Hasil Training dan Validation Eksperimen ke-3 (a) Accuracy, (b) Loss

Pada gambar 4.11, hasil eksperimen menunjukkan peningkatan performa yang signifikan
setelah menambahkan layer normalization pada model. Nilai akurasi meningkat dari 97,21%
menjadi 98,97%, sementara nilai loss menurun dari 7,49% menjadi 2,53%. Dengan
penambahan layer normalization, model dapat lebih stabil dan lebih baik dalam melakukan
generalisasi terhadap data yang belum pernah dilihat sebelumnya. Meskipun terdapat tanda-
tanda overfitting pada eksperimen ini, terutama pada epoch ke-25 dan seterusnya, namun
tingkat overfitting tersebut tidak sebesar eksperimen sebelumnya yang hanya menggunakan
model biasa. Overfitting pada epoch ke-25an ini perlu mendapatkan perhatian lebih lanjut, dan
kemungkinan dilakukan penanganan lebih lanjut untuk mengurangi dampaknya.
Untuk eksperimen selanjutnya, mengganti layer normalization dengan batch
normalization. Batch normalization adalah teknik lain dalam regularisasi dan normalisasi yang
telah terbukti berhasil mengatasi masalah overfitting dalam beberapa kasus. Dengan mengganti
teknik normalisasi, diharapkan dapat mencapai keseimbangan yang lebih baik antara akurasi
pada data pelatihan dan data validasi, serta mengurangi tingkat overfitting yang
mungkin terjadi.

4. Eksperimen ke-4
Pada eksperimen ke-4, menggunakan model arsitektur yang digunakan pada eksperimen
ke-2 namun menambahkan 2 lapisan batch normalization yang diletakkan setelah lapisan
konvolusional. Pada gambar 4.12 menunjukkan grafik hasil accuracy dan loss proses Training
dan Validation. Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 98,43% accuracy (Training) dan 97,50%
val_accuracy (Validation).

54
• Nilai rata-rata accuracy pada setiap epoch: 96,69% accuracy (Training) dan 95,67%
val_accuracy (Validation).

• Nilai loss pada epoch terakhir: 4% loss (Training) dan 9,47% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 9,05% loss (Training) dan 13,87% val_loss
(Validation).

Gambar 4.11 Hasil Training dan Validation Eksperimen ke-4 (a) Accuracy, (b) Loss

Pada gambar 4.12, terlihat bahwa model mencapai performa yang sangat baik dari
eksperimen sebelumnya, dengan hasil yang baik dari sisi nilai akurasi maupun loss. Meskipun
terjadi sedikit penurunan akurasi dari 98,97% menjadi 98,43%, dan kenaikan nilai loss dari
2,53% menjadi 4%, namun hasil tersebut tetap dianggap sangat baik karena pada iterasi epoch
ke-10 sampai epoch ke-100 hasil akurasi dan loss stabil. Salah satu hal yang menarik adalah
bahwa pada gambar 4.12, terlihat fenomena overfitting yang sebelumnya menjadi masalah
dalam eksperimen sebelum-sebelumnya, berhasil ditekan dengan baik. Terlihat dari grafik,
tidak ada perbedaan yang signifikan antara performa pada data pelatihan dan data validasi,
sehingga model tampaknya berhasil dalam mengeneralisasi pada data yang belum pernah
dilihat sebelumnya.
Hal ini menunjukkan bahwa penggantian teknik normalisasi dengan batch normalization
telah membantu mengurangi overfitting secara efektif. Meskipun terjadi penurunan sedikit pada
akurasi dan kenaikan loss, tetapi model yang lebih stabil dan lebih umum dalam melakukan
prediksi pada data baru lebih diutamakan. Selain itu, penurunan tersebut tidak signifikan dan
masih berada pada tingkat performa yang sangat baik. Eksperimen pada gambar 4.12
memberikan bukti bahwa pendekatan ini memberikan hasil yang lebih dapat diandalkan dan
berpotensi untuk digunakan dalam berbagai tugas pembelajaran mesin yang lebih kompleks.
Untuk eksperimen selanjutnya akan menggunakan layer normalization dan
batch normalization.

5. Eksperimen ke-5
Pada eksperimen ke-5, menggunakan model arsitektur yang digunakan pada eksperimen
ke-2 namun menambahkan 2 lapisan layer normalization dan 2 lapisan batch normalization
yang diletakkan setelah lapisan konvolusional. Pada gambar 4.13 menunjukkan grafik hasil
accuracy dan loss proses Training dan Validation. Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 99,04% accuracy (Training) dan 97,97%

55
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 97,55% accuracy (Training) dan 96,72%
val_accuracy (Validation).

• Nilai loss pada epoch terakhir: 2,53% loss (Training) dan 8,66% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 6,93% loss (Training) dan 10,99% val_loss
(Validation).

Gambar 4.12 Hasil Training dan Validation Eksperimen ke-5 (a) Accuracy, (b) Loss

Pada gambar 4.13, terlihat perubahan yang cukup signifikan dalam performa model
setelah menerapkan layer normalization dan batch normalization. Nilai akurasi pada data
pelatihan meningkat dari 98,43% menjadi 99,04%, sementara nilai akurasi pada data validasi
juga meningkat dari 97,50% menjadi 97,97%. Selain itu, terjadi penurunan pada nilai loss dari
4% menjadi 2,53% pada data pelatihan, dan 9,47% menjadi 8,66% pada data validasi. Meskipun
terjadi perbaikan dalam performa, namun tampaknya penggunaan kedua normalisasi tersebut
menyebabkan model mulai mengalami overfitting. Terlihat bahwa selama proses pelatihan,
akurasi pada data pelatihan terus meningkat, namun akurasi pada data validasi mulai fluktuatif
dan tidak mencapai peningkatan sebanding. Hal ini mengindikasikan bahwa model mulai
"menghafal" data pelatihan dan kesulitan dalam menggeneralisasi pada data baru.
Untuk mengatasi masalah overfitting dan fluktuasi data, dalam eksperimen selanjutnya
akan ditambahkan fungsi earlystopping menggunakan callback pada 5 eksperimen awal yang
sudah dilakukan. Earlystopping adalah teknik yang digunakan untuk menghentikan pelatihan
model ketika kinerjanya mulai menurun pada data validasi. Dengan demikian, eksplorasi dan
eksperimen yang cermat sangat penting dalam mengembangkan model yang baik dan stabil.
Penggunaan callback seperti earlystopping memungkinkan dapat membantu mengatasi
overfitting dan fluktuasi dalam proses pelatihan, sehingga menghasilkan model yang lebih
handal dan mampu digunakan dalam berbagai situasi dan tugas yang kompleks.

6. Eksperimen ke-6
Pada eksperimen ke-6, menggunakan model arsitektur yang digunakan pada eksperimen
1, namun menggunakan fungsi callback untuk mempersingkat waktu Training model. Pada
gambar 4.14 menunjukkan grafik hasil accuracy dan loss proses Training dan Validation.
Berikut adalah nilai accuracy dan loss:

56
• Nilai accuracy pada epoch terakhir: 98,92% accuracy (Training) dan 97,46%
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 97,99% accuracy (Training) dan 96,81%
val_accuracy (Validation)

• Nilai loss pada epoch terakhir: 3,30% loss (Training) dan 7,89% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 5,79% loss (Training) dan 9,19% val_loss
(Validation)

Gambar 4.13 Hasil Training dan Validation Eksperimen ke-6 (a) Accuracy, (b) Loss

Pada gambar 4.14, terlihat hasil performa model Training yang menunjukkan overfitting
yang cukup besar dibandingkan dengan eksperimen-eksperimen sebelumnya. Namun pada
eksperimen ini data fluktuatif tidak ada dan jika dibandingkan dengan eksperimen ke-1 yang
modelnya sama mengalami peningkatan dari 98,51% menjadi 98,82% dan nilai loss mengalami
penurunan yaitu dari 5,31% menjadi 3,30%. Dalam eksperimen ini, iterasi epoch berhenti pada
epoch ke-58 karena penerapan fungsi earlystopping menggunakan callback dengan nilai
patience sebesar 15. Fungsi earlystopping dengan nilai patience 15 yang berarti proses
pelatihan akan berhenti jika tidak ada peningkatan pada kinerja model pada data validasi selama
15 epoch berturut-turut.
Hal ini dilakukan untuk mencegah model dari overfitting dan memastikan bahwa model
yang dihasilkan memiliki kemampuan generalisasi yang lebih baik pada data yang belum
pernah dilihat sebelumnya. Namun penggunaan fungsi callback pada model ini tidak berhasil
untuk membenahi adanya masalah overfitting. Pada eksperimen selanjutnya akan menggunakan
model yang sama dengan eksperimen ke-2 dimana menggunakan tambahan lapisan dropout
untuk mengatasi masalah overfitting dikombinasikan dengan fungsi callbak.
7. Eksperimen ke-7
Pada eksperimen ke-7, menggunakan model arsitektur yang digunakan pada eksperimen
2 hanya saja ditambahkan dengan penggunaan fungsi callback atau early stopping. Pada
gambar 4.15 menunjukkan grafik hasil accuracy dan loss proses Training dan Validation.
Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 97,62% accuracy (Training) dan 97,60%
val_accuracy (Validation).

57
• Nilai rata-rata accuracy pada setiap epoch: 96,45% accuracy (Training) dan 96,86%
val_accuracy (Validation).

• Nilai loss pada epoch terakhir: 6,60% loss (Training) dan 7,20% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 9,43% loss (Training) dan 8,91% val_loss
(Validation).

Gambar 4.14 Hasil Training dan Validation Eksperimen ke-7 (a) Accuracy, (b) Loss

Pada gambar 4.15, menunjukkan performa model yang baik karena akurasi dan loss
mendapatkan nilai yang stabil serta dapat menekan overfitting jika dilihat pada grafiknya.
Eksperimen ini menggunakan tambahan lapisan dropout saja. Nilai akurasi terbilang cukup baik
yaitu 97,62% meskipun mengalami penurunan dari eksperimen sebelumnya yaitu 98,92%,
namun mengalami kenaikan pada eksperimen ke-2 dengan model yang sama yaitu 97,21%.
Begitu juga dengan nilai loss-nya yang mengalami kenaikan dari eksperimen sebelumnya yaitu
dari 5,79% menjadi 9,43%, namun mengalami penurunan jika dibandingkan dengan
eksperimen ke-2 dengan model yang sama yaitu dari 14,45% menjadi 9,43%. Pada eksperimen
ke-7 epoch berhenti dengan fungsi callback pada iterasi ke-52.

8. Eksperimen ke-8
Pada eksperimen ke-8, menggunakan model arsitektur yang digunakan pada eksperimen
ke-3 dan menambahkan fungsi callback. Pada gambar 4.16 menunjukkan grafik hasil accuracy
dan loss proses Training dan Validation. Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 98,79% accuracy (Training) dan 98,05%
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 97,31% accuracy (Training) dan 97,10%
val_accuracy (Validation).

• Nilai loss pada epoch terakhir: 3,12% loss (Training) dan 6,74% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 7,31% loss (Training) dan 8,80% val_loss
(Validation).

58
Gambar 4.15 Hasil Training dan Validation Eksperimen ke-8 (a) Accuracy, (b) Loss

Pada gambar 4.16, menunjukkan akurasi yang lebih baik dari eksperimen ke-3 yang
menggunakan model yang sama, yaitu dari 98,43% menjadi 98,78%, sedangkan nilai loss
mengalami penurunan dari 4% menjadi 7,31%. Kemudian untuk validasi akurasi dan validasi
loss dari eksperimen ke-3 tidak jauh beda yaitu dari 97,05% menjadi 98,05% sedangkan loss
dari 9,47% menjadi 8,8%. Dimana hal ini mengakibatkan adanya indikasi overfitting. Namun
pada eksperimen ini berhenti pada iterasi epoch ke-50.

9. Eksperimen ke-9

Gambar 4.16 Hasil Training dan Validation Eksperimen ke-9 (a) Accuracy, (b) Loss

Pada eksperimen ke-9, menggunakan model arsitektur yang digunakan pada eksperimen
4 namun menambahkan fungsi callback. Pada gambar 4.17 menunjukkan grafik hasil accuracy
dan loss proses Training dan Validation. Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 98,02% accuracy (Training) dan 98,29%
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 96,65% accuracy (Training) dan 95,74%
val_accuracy (Validation)

59
• Nilai loss pada epoch terakhir: 5,02% loss (Training) dan 6,23% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 10,98% loss (Training) dan 24,80% val_loss
(Validation)

Pada gambar 4.17, menunjukkan hasil akurasi dan loss pada pelatihan dan validasi memiliki
nilai yang stabil dan optimal sampai dengan iterasi epoch yang terakhir. Hal ini
mengindikasikan adanya best fitting. Akurasi yang didapatkan sebesar 98,02% sedangkan
validasi akurasi sebesar 98,29%.

10. Eksperimen ke-10


Pada eksperimen ke-10, menggunakan model arsitektur yang digunakan pada eksperimen
5 namun menambahkan fungsi callback. Pada gambar 4.18 menunjukkan grafik hasil accuracy
dan loss proses Training dan Validation. Berikut adalah nilai accuracy dan loss:

• Nilai accuracy pada epoch terakhir: 98,87% accuracy (Training) dan 98,01%
val_accuracy (Validation).

• Nilai rata-rata accuracy pada setiap epoch: 97,54% accuracy (Training) dan 96,78%
val_accuracy (Validation)

• Nilai loss pada epoch terakhir: 3,33% loss (Training) dan 8,80% val_loss (Validation).

• Nilai rata-rata loss pada setiap epoch: 9,05% loss (Training) dan 13,84% val_loss
(Validation)

Gambar 4.17 Hasil Training dan Validation Eksperimen ke-10 (a) Accuracy, (b) Loss

Pada Gambar 4.18, hasil grafik menunjukkan fluktuasi yang signifikan dan indikasi
adanya overfitting pada proses prediksi atau pengujian model. Meskipun telah dilakukan
penggunaan fungsi callback pada arsitektur model ini, namun hasilnya belum optimal. Bahkan,
pada eksperimen ke-5 tanpa menggunakan fungsi callback, hasilnya tidak jauh berbeda. Hal ini
menandakan bahwa penggunaan fungsi callback belum sepenuhnya mengatasi masalah
fluktuasi dan overfitting pada model ini. Kemungkinan faktor lain, seperti pemilihan
hyperparameter yang tidak tepat atau kompleksitas model yang berlebihan, juga perlu
diperhatikan untuk meningkatkan kinerja model dan mengatasi masalah yang terjadi.

60
4.2 Pembahasan
Pada bab ini, akan dibahas setiap eksperimen yang telah dilakukan, serta analisis yang
dilakukan pada masing-masing eksperimen dan pengujian yang telah dilakukan sebanyak 3
kali. Pengulangan pengujian sebanyak 3 kali dilakukan untuk memungkinkan perbandingan
yang lebih komprehensif antara setiap pengujian yang dilakukan.

4.2.1 Evaluasi Kinerja Model


Pada sub-bab ini, akan menjelaskan dan menampilkan hasil evaluasi dari setiap
eksperimen dengan pengujian sebanyak 3 kali dan memberikan informasi tentang nilai
Precision, Recall, Accuracy, dan F1-Score. Melalui evaluasi kinerja model ini, akan dapat
memahami kinerja model dan mengevaluasi sejauh mana model mampu mengklasifikasikan
data dengan benar. Hasil evaluasi ini penting dalam memahami dan menganalisis model.

1. Eksperimen ke-1
Tabel 4.3 Tabel Prediksi Eksperimen ke-1

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 97,45% 97,48% 97,09% 97,46%
Pengujian ke-2 97,55% 97,64% 97,36% 97,49%
Pengujian ke-3 98,14% 98,15% 97,52% 98,10%
Rata-rata 97,38% 97,76% 97,32% 97,68%

Dari tabel 4.3, model klasifikasi telah melewati serangkaian pengujian dengan hasil yang
sangat baik dan konsisten. Dalam setiap pengujian, model berhasil mencapai tingkat precision
yang tinggi, dengan rata-rata mencapai 97,38%, menandakan kemampuan model dalam
memberikan hasil positif yang tepat. Selain itu, recall juga menunjukkan performa yang sangat
baik dengan rata-rata 97,76%, menandakan bahwa model mampu mengenali sebagian besar
data positif secara keseluruhan. Akurasi rata-rata sebesar 97,32% menunjukkan bahwa model
berhasil mengklasifikasikan data keseluruhan dengan benar. Nilai F1-Score yang mencapai
rata-rata 97,68% mengindikasikan keseimbangan yang baik antara precision dan recall. Selain
itu, hasil akhir pada epoch terakhir dengan 98,51% akurasi pada data training dan 96,78% pada
data validasi menunjukkan model memiliki kemampuan generalisasi yang baik tanpa
overfitting yang berarti. Dengan kinerja yang sangat baik dalam pengujian dan konsistensi
hasilnya. Untuk clasification_report dari prediksi tiap pengujian eksperimen ke-1 dilampirkan
pada lampiran 4.

2. Eksperimen ke-2
Tabel 4.4 Prediksi Eksperimen ke-2

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 97,59% 97,53% 97,16% 97,56%
Pengujian ke-2 97,81% 97,79% 97,36% 97,73%
Pengujian ke-3 95,96% 95,85% 95,93% 95,99%
Rata-rata 97,12% 97,06% 96,82% 97,09%

Dari tabel 4.4, model klasifikasi telah mengalami serangkaian pengujian yang
menghasilkan kinerja yang konsisten dan sangat baik. Dalam setiap pengujian, model
menunjukkan tingkat precision yang tinggi, dengan rata-rata mencapai 97,12%, menandakan
kemampuan model dalam mengklasifikasikan data positif dengan akurasi tinggi. Recall juga
menunjukkan hasil yang sangat baik dengan rata-rata 97,06%, menunjukkan kemampuan
model untuk mengenali sebagian besar data positif secara keseluruhan. Akurasi keseluruhan

61
pada pengujian mencapai 96,82%, menandakan kemampuan model dalam mengklasifikasikan
data keseluruhan dengan benar. Nilai F1-Score juga tinggi dengan rata-rata 97,09%,
menunjukkan keseimbangan yang baik antara precision dan recall. Selain itu, nilai akurasi pada
epoch terakhir saat pelatihan mencapai 97,21%, dan valiasi sebesar 96,57%, menunjukkan
model memiliki kemampuan generalisasi yang baik tanpa terlalu mengalami overfitting.
Dengan hasil yang sangat baik dan konsistensi kinerja model, dapat disimpulkan bahwa model
ini telah berhasil dalam tugas klasifikasinya. Untuk clasification_report dari prediksi tiap
pengujian eksperimen ke-2 dilampirkan pada lampiran 4.

3. Eksperimen ke-3

Tabel 4.5 Prediksi Eksperimen ke-3

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 97,71% 97,87% 97,92% 97,86%
Pengujian ke-2 75,80% 59,22% 58,25% 58,05%
Pengujian ke-3 86,47% 58,02% 55,71% 55,41%
Rata-rata 86,66% 71,70% 70,29% 70,44%

Dari tabel 4.5, hasil pengujian pada model klasifikasi menunjukkan variasi kinerja yang
signifikan. Pengujian ke-1 menunjukkan hasil yang sangat baik, dengan nilai precision, recall,
accuracy, dan F1-Score yang tinggi, mencapai rata-rata 97,86%. Namun, pada pengujian ke-2
dan ke-3, kinerja model menurun secara signifikan, terutama pada pengujian ke-2 yang hanya
mencapai precision 75,80% dan recall 59,22%. Rata-rata kinerja model dari ketiga pengujian
menunjukkan precision dan recall mencapai 86,66% dan 71,70% masing-masing, serta akurasi
dan F1-Score mencapai 70,29% dan 70,44%. Meskipun nilai akurasi pada akhir pelatihan
(98,97% accuracy) dan validasi (97,88% val_accuracy) terlihat sangat tinggi, terdapat selisih
antara keduanya yang menandakan adanya potensi overfitting. Pengujian ini mengindikasikan
bahwa model ini mungkin sensitif terhadap perubahan data dan perlu peningkatan lebih lanjut
untuk memastikan kinerja yang konsisten dan handal dalam mengklasifikasikan data di
berbagai situasi. Untuk clasification_report dari prediksi tiap pengujian eksperimen ke-3
dilampirkan pada lampiran 4.

4. Eksperimen ke-4

Tabel 4.6 Prediksi Eksperimen ke-4

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 97,50% 97,58% 97,62% 97,51%
Pengujian ke-2 96,54% 96,33% 96,49% 96,13%
Pengujian ke-3 97,90% 97,98% 97,80% 97,83%
Rata-rata 97,31% 97,30% 97,30% 97,16%

Dari tabel 4.6, dilakukan tiga kali pengujian pada model klasifikasi dan hasilnya
menunjukkan kinerja yang sangat baik dan konsisten. Rata-rata precision mencapai 97,31%,
menunjukkan kemampuan model dalam memberikan hasil positif yang akurat. Demikian pula,
recall mencapai rata-rata 97,30%, menandakan bahwa model mampu mengenali sebagian besar
data positif secara keseluruhan. Akurasi yang tinggi dengan rata-rata 97,30% menunjukkan
bahwa model secara keseluruhan mampu mengklasifikasikan data dengan benar. Nilai F1-Score
yang mencapai rata-rata 97,16% menandakan bahwa model memiliki keseimbangan yang baik
antara precision dan recall. Pada epoch terakhir, model mencapai akurasi training sebesar

62
98,43% dan val_accuracy (validasi) sebesar 97,50%, yang menunjukkan bahwa model telah
berhasil dalam proses pelatihan dan memiliki kemampuan yang baik dalam menggeneralisasi
pada data validasi. Dengan hasil pengujian yang sangat baik dan konsisten, serta akurasi yang
tinggi pada fase terakhir, model ini telah terbukti handal dan dapat diandalkan dalam tugas
klasifikasinya. Untuk clasification_report dari prediksi tiap pengujian eksperimen ke-4
dilampirkan pada lampiran 4.

5. Eksperimen ke-5
Dari tabel 4.7 data pengujian di atas, kami melakukan tiga pengujian pada model
klasifikasi dan memperoleh hasil yang beragam. Rata-rata precision mencapai 91,59%,
menandakan bahwa model cenderung memberikan hasil positif yang tepat dengan tingkat
kesalahan yang relatif rendah. Recall mencapai rata-rata 87,92%, mengindikasikan bahwa
model mampu mengenali sebagian besar data positif secara keseluruhan. Namun, akurasi rata-
rata hanya mencapai 87,43%, menunjukkan bahwa model sering kali mengalami kesulitan
dalam mengklasifikasikan data secara keseluruhan. Nilai F1-Score mencapai rata-rata 87,20%,
mencerminkan keseimbangan antara precision dan recall. Meskipun akurasi pelatihan sangat
tinggi (99,04%), terdapat selisih yang cukup besar dengan rata-rata akurasi pengujian, yang
mencapai 87,43%. Hal ini mengindikasikan adanya overfitting, di mana model terlalu
menghafal data pelatihan dan tidak dapat menggeneralisasi dengan baik pada data baru. Oleh
karena itu, hasil pengujian menunjukkan kinerja model yang relatif baik, tetapi perlu dilakukan
peningkatan untuk mengatasi overfitting dan meningkatkan akurasi pada data testing secara
lebih konsisten. Untuk clasification_report dari prediksi tiap pengujian eksperimen ke-5
dilampirkan pada lampiran 4.
Tabel 4.7 Prediksi Eksperimen ke-5

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 95,97% 94,54% 93,88% 94,62%
Pengujian ke-2 87,14% 79,39% 80,19% 79,46%
Pengujian ke-3 92,67% 89,84% 89,21% 89,51%
Rata-rata 91,59% 87,92% 87,43% 87,20%

6. Eksperimen ke-6
Tabel 4.8 Prediksi Eksperimen ke-6

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 98,50% 98,54% 98,12% 98,52%
Pengujian ke-2 98,82% 98,82% 98,46% 98,76%
Pengujian ke-3 98,08% 98,01% 97,76% 97,93%
Rata-rata 98,47% 98,46% 98,11% 98,40%

Dari tabel 4.8, dilakukan beberapa pengujian pada model klasifikasi dengan penerapan
metode early stopping menggunakan callback. Hasil pengujian menunjukkan kinerja model
yang sangat baik, dengan rata-rata precision mencapai 98,47% dan recall sebesar 98,46%. Hal
ini menandakan kemampuan model dalam memberikan hasil positif yang tepat dan kemampuan
mengidentifikasi sebagian besar data positif secara keseluruhan. Selain itu, akurasi yang
mencapai rata-rata 98,11% menunjukkan bahwa model mampu mengklasifikasikan data secara
keseluruhan dengan sangat akurat. Nilai F1-Score yang tinggi dengan rata-rata 98,40%
menandakan keseimbangan yang baik antara precision dan recall. Penggunaan metode early
stopping juga membantu mencegah overfitting dengan akurasi training mencapai 98,92% dan
akurasi validasi mencapai 97,46%. Hal ini menunjukkan bahwa model tidak terlalu terikat pada
data pelatihan dan mampu berkinerja dengan baik pada data yang belum pernah dilihat

63
sebelumnya. Untuk lebih detail melihat data prediksi pada setiap pengujian eksperimen ke-6
dapat dilihat pada lampiran 4.

7. Eksperimen ke-7
Dari tabel 4.9, kami melakukan pengujian model dengan menggunakan teknik early
stopping dan mendapatkan hasil yang sangat baik. Model menunjukkan kinerja yang konsisten
dengan rata-rata precision sebesar 97,95%, recall 97,96%, dan F1-Score 97,94%, menandakan
kemampuan model dalam mengklasifikasikan data positif dengan tepat dan mengenali sebagian
besar data positif secara keseluruhan. Selain itu, akurasi pada pengujian mencapai 97,73%,
menunjukkan kemampuan model dalam mengklasifikasikan data keseluruhan dengan tingkat
akurasi yang tinggi. Penggunaan teknik early stopping dengan callback telah berhasil
meningkatkan kinerja model, di mana nilai akurasi pada epoch terakhir mencapai 97,62% untuk
data pelatihan dan 97,60% untuk data validasi. Hal ini menandakan bahwa model telah
menghentikan proses pelatihan tepat pada saat yang tepat, sehingga mencegah overfitting dan
menghasilkan model yang lebih umum dan mampu menggeneralisasi pada data baru. Untuk
classification_repoct dari prediksi pada setiap pengujian eksperimen ke-7 dilampirkan pada
lampiran 4.
Tabel 4.9 Prediksi Eksperimen ke-7

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 97,50% 97,54% 97,62% 97,52%
Pengujian ke-2 97,92% 97,90% 97,66% 97,90%
Pengujian ke-3 98,42% 98,43% 97,90% 98,40%
Rata-rata 97,95% 97,96% 97,73% 97,94%

8. Eksperimen ke-8
Tabel 4.10 Prediksi Eksperimen ke-8

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 98,61% 98,63% 98,73% 98,57%
Pengujian ke-2 96,31% 96,32% 96,05% 96,06%
Pengujian ke-3 98,45% 98,45% 98,33% 98,36%
Rata-rata 97,79% 97,80% 97,37% 97,00%

Pada tabel 4.10, dilakukan serangkaian pengujian pada model klasifikasi dengan
menggunakan teknik early stopping. Hasil pengujian menunjukkan kinerja yang sangat baik,
dengan rata-rata precision mencapai 97,79% dan recall mencapai 97,80%. Hal ini menandakan
bahwa model mampu memberikan hasil positif yang sangat tepat dan mampu mengenali
sebagian besar data positif secara keseluruhan. Akurasi rata-rata mencapai 97,37%,
menandakan bahwa model cenderung memberikan prediksi yang benar secara keseluruhan.
Nilai F1-Score mencapai rata-rata 97,00%, menunjukkan keseimbangan yang baik antara
precision dan recall. Selain itu, nilai akurasi pada epoch terakhir adalah 98,79% untuk training
dan 98,05% untuk validasi, menandakan bahwa model kami tidak mengalami overfitting.
Penggunaan teknik early stopping dengan callback membantu model untuk berhenti pada saat
yang tepat, sehingga kami berhasil menghindari overfitting dan mencapai performa yang sangat
baik dalam mengklasifikasikan data. Untuk classification_repoct dari prediksi pada setiap
pengujian eksperimen ke-8 dilampirkan pada lampiran 4.

9. Eksperimen ke-9
Dari tabel 4.11, dilakukan pengujian model sebanyak tiga kali dan mendapatkan hasil
yang konsisten dalam kinerja model. Setiap pengujian menunjukkan nilai precision yang tinggi,

64
dengan rata-rata mencapai 98,59%, menandakan kemampuan model untuk mengklasifikasikan
data positif dengan tepat. Recall juga menunjukkan performa yang sangat baik dengan rata-rata
98,49%, menandakan model mampu mengenali sebagian besar data positif secara keseluruhan.
Hal ini juga tercermin pada nilai F1-Skor yang tinggi dengan rata-rata 98,49%, menunjukkan
keseimbangan antara precision dan recall. Selain itu, akurasi pada pengujian secara
keseluruhan mencapai 98,12%, menandakan kemampuan model untuk mengklasifikasikan data
keseluruhan dengan benar. Meskipun skor akurasi pelatihan (98,02%) dan validasi akurasi
(98,29%) cukup tinggi, tidak terdapat selisih yang signifikan antara keduanya, menunjukkan
bahwa model memiliki kemampuan umum yang baik dalam menggeneralisasi pada data baru.
Untuk classification_repoct dari prediksi pada setiap pengujian eksperimen ke-9 dilampirkan
pada lampiran 4.
Tabel 4.11 Prediksi Eksperimen ke-9

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 97,99% 97,68% 96,72% 97,73%
Pengujian ke-2 98,86% 98,88% 98,80% 98,83%
Pengujian ke-3 98,92% 98,92% 98,83% 98,90%
Rata-rata 98,59% 98,49% 98,12% 98,49%

10. Eksperimen ke-10


Tabel 4.12 Prediksi eksperimen ke-10

Pengujian Precision Recall Accuracy F1-Score


Pengujian ke-1 87,92% 63,71% 61,55% 59,66%
Pengujian ke-2 84,52% 47,91% 45,15% 45,06%
Pengujian ke-3 69,94% 47,49% 44,42% 44,36%
Rata-rata 80,46% 53,04% 50,71% 49,36%

Dari tabel 4.12, dilakukan serangkaian pengujian pada model klasifikasi dan hasilnya
menunjukkan kinerja yang mengecewakan. Rata-rata dari precision yang hanya mencapai
80,46% mengindikasikan bahwa model cenderung memberikan banyak hasil positif palsu.
Demikian juga, recall yang hanya mencapai 53,04% menandakan bahwa model kurang mampu
mengidentifikasi sebagian besar data positif secara keseluruhan. Akurasi yang rendah dengan
rata-rata 50,71% menunjukkan bahwa model sering kali salah dalam mengklasifikasikan data
keseluruhan. Nilai F1-Score yang mencapai rata-rata 49,36% mengindikasikan
ketidakseimbangan antara precision dan recall. Meskipun akurasi training (98,87%) dan
validasi (98,01%) terlihat sangat tinggi, terdapat selisih yang signifikan antara keduanya,
menunjukkan adanya overfitting. Hasil pengujian yang buruk dan adanya overfitting
menimbulkan keraguan dalam kemampuan model ini untuk diterapkan dalam situasi dunia
nyata. Perlu dilakukan peninjauan lebih lanjut dan peningkatan model agar dapat memberikan
kinerja yang lebih handal dan akurat. Untuk classification_repoct dari prediksi pada setiap
pengujian eksperimen ke-10 dilampirkan pada lampiran 4.

4.2.2 Perbandingan Tiap Eksperimen


Pada sub-bab ini, dilakukan perbandingan antara eksperimen yang telah dilakukan.
Perbandingan dilakukan dengan mempertimbangkan lapisan yang digunakan dalam setiap
eksperimen, serta kinerja model yang diukur melalui rata-rata tiap pengujian dari accuracy dan
f1-score. Selain itu, perbandingan juga mempertimbangkan penggunaan callback pada
eksperimen yang dilakukan. Dengan menganalisis dan membandingkan faktor-faktor ini, kita
dapat memperoleh pemahaman yang lebih baik tentang pengaruh lapisan, kinerja model, dan
penggunaan fungsi callback.

65
Pada tabel 4.6, menunjukkan bahwa penggunaan lapisan dropout mampu meningkatkan
kinerja model dan jika dilihat pada gambar 4.10 sampai 4.12 dan 4.14 sampai 4.16 lapisan
dropout mampu menekan terjadinya overfitting, namun pada kasus gambar 4.13 dan 4.18
memiliki arsitektur yang lebih kompleks dari eksperimen yang lain hal ini memungkinkan
terjadinya overfitting, meskipun biasanya model yang kompleks dapat mengingat data sangat
baik. Namun pada eksperimen ke-3 penggunaan layer normalization mendapatkan nilai akurasi
dan F1-skor yang jauh berbeda dengan akurasi pelatihan dan validasi, dapat disimpulkan bahwa
terjadi overfitting pada eksperimen ke-3.
Penggunaan salah satu dari layer normalization atau batch normalization juga mampu
meningkatkan kinerja model. Seperti pada eksperimen ke-4, 7, dan 8 penggunaan salah satu
lapisan normalization mampu menigkatkan akurasi prediksi dan f1-score yaitu diatas 97%
untuk akurasi prediksi maupun f1-score. Namun jika lapisan normalisasi digunakan kedua-
duanya akurasi yang didapatkan menurun seperti pada eksperimen ke-5 dan ke-10. Hal ini
menunjukkan bahwa penggunaan layer normalisasi pada kasus pengenalan aktivitas manusia
dengan dataset UCI HAR tidak direkomendasikan.

Tabel 4.13 Perbandingan Pada Setiap Eksperimen

No Dropout Batch Layer Callback Accuracy F1-score


Normalization Normalization
1 - - - - 97,32% 97,68%
2 V - - - 96,82% 97,09%
3 V - V - 70,29% 70,44%
4 V V - - 97,30% 97,16%
5 V V V - 87,43% 87,20%
6 - - - V 98,11% 98,40%
7 V - - V 97,73% 97,94%
8 V - V V 97,37% 97,00%
9 V V - V 98,12% 98,49%
10 V V V V 50,71% 49,36%

Pada eksperimen ke-1 sampai dengan 5 penggunaan fungsi callback tidak dilakukan
sehingga terkadang pada saat model sudah dalam kondisi optimal saat melakukan Training,
proses Training masih berjalan dan terkadang hal ini menyebabkan overfitting, tidak adanya
keseimbangan data atau fluktuatif, dan lain-lain. Sehingga pada eksperimen ke-6 sampai
dengan ke-10 menggunakan fungsi callback dan hampir semua eksperimen meningkat kecuali
pada eksperimen ke-10 yang menurun drastis jika ditambahkan fungsi callbak.
Eksperimen ke-9 merupakan model yang terbaik karena mendapatkan accuracy prediksi
sebesar 98,12% dan F1-Skor 98,49%. Hal ini mengindikasikan bahwa penggunaan batch
normalization, dropout, dan fungsi callback mampu meningkatkan kinerja model. Namun pada
eksperimen ke-10 merupakan model yang memiliki akurasi prediksi paling rendah yaitu
50,71% dengan F1-Skor 49,36%, hal ini mengindikasikan tidak semua model yang kompleks
merupakan model yang terbaik dan paling optimal.

66
BAB V KESIMPULAN DAN SARAN
Bab ini bertujuan untuk menggambarkan ringkasan pengerjaan Tugas Akhir dan hasil
eksperimen serta memberikan saran-saran untuk pengembangan lebih lanjut di masa
mendatang.

5.1 Kesimpulan
Berdasarkan eksperimen dan analisis yang telah dilakukan dalam pengerjaan Tugas Akhir ini,
diperoleh beberapa kesimpulan sebagai berikut:

1. Pembuatan model dengan algoritma Multi-head 1D-CNN untuk pengenalan aktivitas


manusia dilakukan dengan 10 eksperimen dengan menggunakan lapisan yang berbeda
mulai dari menggunakan dropout, layer normalization, batch normalization, serta
menggunakan fungsi callback untuk sebagain lainnya tidak menggunakan lapisan
tambahan dan tanpa menggunakan fungsi callback. Implementasi model multi-head 1D-
CNN yang baik menggunakan lapisan dropout, layer normalization, dan menggunakan
fungsi callback. Dengan melakukan eksperimen dengan berbagai lapisan dan penggunaan
fungsi callback dapat membantu memastikan model yang memiliki kinerja yang baik
untuk pengenalan aktivitas manusia.

2. Dalam pra-pemrosesan dataset UCI HAR, langkah pertama yang dilakukan yaitu
cleaning data dengan menghapus aktivitas yang tidak dikenali atau tidak terdefinisi
diantaranya yaitu label aktivitas yang bernilai 0, 7, 8, 9, 10, 11, dan 12, kemudian data
dilakukan segmentasi dengan sliding window dengan ukuran 128 dan menghasilkan
23.392 sampel segmen, kemudian dilakukan cleaning data lagi untuk memastikan data
null atau infinite tidak ada, setelah itu data akan dilakukan proses one-hot encoding, dan
terakhir data akan dilakukan normalisasi dengan menggunakan teknik min-max scaling
untuk menghasilkan data yang bernilai antara -1 hingga 1.

3. Pengukuran kinerja model untuk pengenalan aktivitas manusia dataset UCI HAR dibantu
dengan fungsi confusion matrix dan digabungkan dengan classfication report. Dengan
melihat accuracy, recall, accuracy, dan f1-score. Berdasarkan hasil eksperimen yang
dilakukan mendapatkan model arsitektur terbaik dengan model multi-head 1D-CNN
dengan menambahkan lapisan dropout, batch normalization, dan menggunakan fungsi
callback. Nilai accuracy prediksi yang didapatkan 98,12% dan F1-Score 98,49%.
Sedangkan untuk model arstitektur yang menggunakan semua lapisan yang digunakan
pada eksperimen seperti menambahkan lapisan dropout, layer normalization, batch
normalization, dan menambahkan fungsi callback mendapatkan nilai accuracy 50,71%
dan F1-Score 49,36%.

5.2 Saran
Berdasarkan eksperimen dan analisis yang dilakukan dalam Tugas Akhir ini, terdapat
saran yang dapat diberikan yaitu melakukan eksperimen dengan arsitektur model yang lebih
kompleks. Model 1DCNN yang digunakan dalam Tugas Akhir ini telah memberikan hasil yang
baik, namun jika memanfaatkan dan menggabungkan jaringan seperti Recurrent Neural
Network memungkinkan mendapatkan model yang lebih baik lagi.

67
(Halaman ini sengaja dikosongkan)

68
DAFTAR PUSTAKA
Ahmad, W., Kazmi, B. M., & Ali, H. (2019). Human Activity Recognition using Multi-head
CNN followed by LSTM. 15th International Conference on Emerging Technologies,
ICET 2019. https://doi.org/10.1109/ICET48972.2019.8994412
Arik, S. O., Jun, H., & Diamos, G. (2019). Fast spectrogram inversion using multi-head
convolutional neural networks. IEEE Signal Processing Letters, 26(1), 94–98.
https://doi.org/10.1109/LSP.2018.2880284
Atalaa, B. A., Alenany, A., Helmi, A., & Ziedan, I. (2020). East African Scholars Journal of
Engineering and Computer Sciences Abbreviated Key Title: East African Scholars J Eng
Comput Sci Effect of Data Segmentation on the Quality of Human Activity Recognition.
https://doi.org/10.36349/easjecs.2020.v03i07.001
Ataspinar. (2018, April 4). Machine Learning with Signal Processing Techniques – ML
Fundamentals. https://ataspinar.com/2018/04/04/machine-learning-with-signal-
processing-techniques/
Atlihan, D. A. (2022). Human Activity Recognition With Convolutional And Multi-head
Attention Layer Based Neural Network Deniz Adali Atlihan.
http://earsiv.cankaya.edu.tr:8080/xmlui/bitstream/handle/20.500.12416/6538/thesis.pdf?s
equence=1&isAllowed=y
Avci, O., Abdeljaber, O., Kiranyaz, S., Hussein, M., Gabbouj, M., & Inman, D. J. (2021). A
review of vibration-based damage detection in civil structures: From traditional methods
to Machine Learning and Deep Learning applications. Mechanical Systems and Signal
Processing, 147, 107077. https://doi.org/10.1016/J.YMSSP.2020.107077
Ba, J. L., Kiros, J. R., & Hinton, G. E. (2016). Layer Normalization.
http://arxiv.org/abs/1607.06450
Babiker, M., Khalifa, O. O., Htike, K. K., Hassan, A., & Zaharadeen, M. (2018). Automated
daily human activity recognition for video surveillance using neural network. 2017 IEEE
International Conference on Smart Instrumentation, Measurement and Applications,
ICSIMA 2017, 2017-November, 1–5. https://doi.org/10.1109/ICSIMA.2017.8312024
Barakbah, A. R., Karlita, T., & Ahsan, A. S. (2013). Logika dan Pemrograman Departemen
Teknik Informatika Politeknik Elektro Negeri Surabaya.
Bashar, S. K., Al Fahim, A., & Chon, K. H. (2020). Smartphone Based Human Activity
Recognition with Feature Selection and Dense Neural Network. Proceedings of the Annual
International Conference of the IEEE Engineering in Medicine and Biology Society,
EMBS, 2020-July, 5888–5891. https://doi.org/10.1109/EMBC44109.2020.9176239
Bianchi, V., Bassoli, M., Lombardo, G., Fornacciari, P., Mordonini, M., & De Munari, I.
(2019). IoT Wearable Sensor and Deep Learning: An Integrated Approach for
Personalized Human Activity Recognition in a Smart Home Environment. IEEE Internet
of Things Journal, 6(5), 8553–8562. https://doi.org/10.1109/JIOT.2019.2920283
Bommarito, E., & Bommarito, M. J. (2019). An Empirical Analysis of the Python Package
Index (PyPI). https://pypi.org/pypi/p/json/.
Brownlee, J. (2016). Master Machine Learning Algorithms Discover How They Work and
Implement Them From Scratch i Master Machine Learning Algorithms.
http://MachineLearningMastery.com
Chollet, F., & others. (2015). Keras. GitHub. Retrieved from https://github.com/fchollet/keras.
Ding, B., Qian, H., & Zhou, J. (2018). Activation functions and their characteristics in deep
neural networks. Proceedings of the 30th Chinese Control and Decision Conference,
CCDC 2018, 1836–1841. https://doi.org/10.1109/CCDC.2018.8407425
Feng, Y., & Cheng, Y. (2021). Short Text Sentiment Analysis Based on Multi-Channel CNN

69
with Multi-head Attention Mechanism. IEEE Access, 9, 19854–19863.
https://doi.org/10.1109/ACCESS.2021.3054521
Fischer, F., Birk, A., Somers, P., Frenner, K., Tarín, C., & Herkommer, A. (2022). FeaSel-Net:
A Recursive Feature Selection Callback in Neural Networks. Machine Learning and
Knowledge Extraction, 4(4), 968–993. https://doi.org/10.3390/MAKE4040049/S1
Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
https://www.deeplearningbook.org/
Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D.,
Wieser, E., Taylor, J., Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., van Kerkwijk,
M. H., Brett, M., Haldane, A., del Río, J. F., Wiebe, M., Peterson, P., … Oliphant, T. E.
(2020). Array programming with NumPy. Nature 2020 585:7825, 585(7825), 357–362.
https://doi.org/10.1038/s41586-020-2649-2
Ilahiyah, S., & Nilogiri, A. (2018). Implementasi Deep Learning Pada Identifikasi Jenis
Tumbuhan Berdasarkan Citra Daun Menggunakan Convolutional Neural Network.
JUSTINDO (Jurnal Sistem Dan Teknologi Informasi Indonesia), 3(2), 49–56.
http://jurnal.unmuhjember.ac.id/index.php/JUSTINDO/article/view/2254
Ince, T., Kiranyaz, S., Eren, L., Askar, M., & Gabbouj, M. (2016). Real-Time Motor Fault
Detection by 1-D Convolutional Neural Networks. IEEE Transactions on Industrial
Electronics, 63(11), 7067–7075. https://doi.org/10.1109/TIE.2016.2582729
Ioffe, S., & Szegedy, C. (2015). Batch Normalization: Accelerating Deep Network Training by
Reducing Internal Covariate Shift. http://arxiv.org/abs/1502.03167
Isroqmi, A. (2017). Kemampuan Mahasiswa Memahami Logika Pemrograman Komputer
Melalui Algoritma. Nabla Dewantara, 2(2), 59–74.
http://www.ejournal.unitaspalembang.ac.id/index.php/nabla/article/view/43
Jin, J., Dundar, A., & Culurciello, E. (n.d.). Flattened Convolutional Neural Networks For
Feedforward Acceleration.
Jobanputra, C., Bavishi, J., & Doshi, N. (2019). Human activity recognition: A survey.
Procedia Computer Science, 155, 698–703. https://doi.org/10.1016/j.procs.2019.08.100
Khairandish, M. O., Sharma, M., Jain, V., Chatterjee, J. M., & Jhanjhi, N. Z. (2021). A Hybrid
CNN-SVM Threshold Segmentation Approach for Tumor Detection and Classification of
MRI Brain Images. https://doi.org/10.1016/j.irbm.2021.06.003
Khan, Z. N., & Ahmad, J. (2021). Attention induced multi-head convolutional neural network
for human activity recognition. Applied Soft Computing, 110, 107671.
https://doi.org/10.1016/J.ASOC.2021.107671
Labach, A., Salehinejad, H., & Valaee, S. (2019). Survey of Dropout Methods for Deep Neural
Networks. http://arxiv.org/abs/1904.13310
Lee, S. M., Yoon, S. M., & Cho, H. (2017). Human activity recognition from accelerometer
data using Convolutional Neural Network. 2017 IEEE International Conference on Big
Data and Smart Computing, BigComp 2017, 131–134.
https://doi.org/10.1109/BIGCOMP.2017.7881728
Münzner, S., Schmidt, P., Reiss, A., Hanselmann, M., Stiefelhagen, R., & Dürichen, R. (2017).
CNN-based sensor fusion techniques for multimodal human activity recognition.
Proceedings - International Symposium on Wearable Computers, ISWC, Part F130534,
158–165. https://doi.org/10.1145/3123021.3123046
Nabriya, P. (2021, July 24). Implementing LSTM for Human Activity Recognition.
https://www.analyticsvidhya.com/blog/2021/07/implementing-lstm-for-human-activity-
recognition-using-smartphone-accelerometer-data/
Nagpal, A., & Gabrani, G. (2019). Python for Data Analytics, Scientific and Technical
Applications. Proceedings - 2019 Amity International Conference on Artificial

70
Intelligence, AICAI 2019, 140–145. https://doi.org/10.1109/AICAI.2019.8701341
Nair, N., Thomas, C., & Jayagopi, D. B. (2018). Human activity recognition using temporal
convolutional network. ACM International Conference Proceeding Series.
https://doi.org/10.1145/3266157.3266221
Ragab, M. G., Abdulkadir, S. J., & Aziz, N. (2020). Random Search One Dimensional CNN
for Human Activity Recognition. 2020 International Conference on Computational
Intelligence, ICCI 2020, 86–91. https://doi.org/10.1109/ICCI51257.2020.9247810
Rasamoelina, A. D., Adjailia, F., & Sincak, P. (2020). A Review of Activation Function for
Artificial Neural Network. SAMI 2020 - IEEE 18th World Symposium on Applied Machine
Intelligence and Informatics, Proceedings, 281–286.
https://doi.org/10.1109/SAMI48414.2020.9108717
Ren, M., Liao, R., Urtasun, R., Sinz, F. H., & Zemel, R. S. (2016). Normalizing the
Normalizers: Comparing and Extending Network Normalization Schemes.
http://arxiv.org/abs/1611.04520
Reyes-Ortiz, J., Anuita, D., Ghio, A., Oneto, L., & Parra, X. (2012). Human Activity
Recognition Using Smartphones - UCI Machine Learning Repository. UCI Machine
Learning Repository.
https://archive.ics.uci.edu/dataset/240/human+activity+recognition+using+smartphones
Ronao, C. A., & Cho, S. B. (2016). Human activity recognition with smartphone sensors using
deep learning neural networks. Expert Systems with Applications, 59, 235–244.
https://doi.org/10.1016/j.eswa.2016.04.032
Sharma, N., Jain, V., & Mishra, A. (2018). An Analysis of Convolutional Neural Networks for
Image Classification. Procedia Computer Science, 132, 377–384.
https://doi.org/10.1016/J.PROCS.2018.05.198
Sharma, S., Sharma, S., & Athaiya, A. (2020). Activation Functions In Neural Networks.
International Journal of Engineering Applied Sciences and Technology, 4, 310–316.
http://www.ijeast.com
VaroquauxG., BuitinckL., LouppeG., GriselO., PedregosaF., & MuellerA. (2015). Scikit-learn.
GetMobile: Mobile Computing and Communications, 19(1), 29–33.
https://doi.org/10.1145/2786984.2786995
Wang, J., Chen, Y., Hao, S., Peng, X., & Hu, L. (2017). Deep Learning for Sensor-based
Activity Recognition: A Survey. Pattern Recognition Letters, 119, 3–11.
https://doi.org/10.1016/j.patrec.2018.02.010
Wang, J., Chen, Y., Hao, S., Peng, X., & Hu, L. (2019). Deep learning for sensor-based activity
recognition: A survey. Pattern Recognition Letters, 119, 3–11.
https://doi.org/10.1016/J.PATREC.2018.02.010
Wang, Y., Cang, S., & Yu, H. (2019). A survey on wearable sensor modality centred human
activity recognition in health care. Expert Systems with Applications, 137, 167–190.
https://doi.org/10.1016/J.ESWA.2019.04.057
Wu, J. (2017). Introduction to Convolutional Neural Networks.
Ying, X. (2019). An Overview of Overfitting and its Solutions. Journal of Physics: Conference
Series, 1168(2). https://doi.org/10.1088/1742-6596/1168/2/022022
Zadeh, S. G., & Schmid, M. (2021). Bias in Cross-Entropy-Based Training of Deep Survival
Networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 43(9), 3126–
3137. https://doi.org/10.1109/TPAMI.2020.2979450
Zeng, M., Nguyen, L. T., Yu, B., Mengshoel, O. J., Zhu, J., Wu, P., & Zhang, J. (2015).
Convolutional Neural Networks for human activity recognition using mobile sensors.
Proceedings of the 2014 6th International Conference on Mobile Computing, Applications
andServices, MobiCASE 2014, 197–205.

71
https://doi.org/10.4108/ICST.MOBICASE.2014.257786

72
LAMPIRAN-LAMPIRAN
Lampiran 1 Sinyal data semua aktivitas yang belum dicantumkan sebelum diolah

73
74
75
76
77
78
79
Lampiran 2 segmentasi tiap aktivitas dan tiap sensor

80
Lampiran 3 Data Eksperimen Evaluasi Kinerja tiap pengujian dengan Laporan
Klasifikasi
Eksperimen ke-1 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 472 0 1 0 0 0 99,58%
Walking Up 2 460 5 0 0 0 98,92%
True Label

Walking Down 0 3 471 0 0 0 99,05%


Sitting 0 0 0 465 27 0 93,47%
Standing 1 0 0 38 495 0 93,75%
Laying 0 0 0 0 0 554 100%
Precision (%) 99,37% 99,35% 98,74% 92,45% 94,83% 100% Accuracy
Recall (%) 99,79% 98,50% 99,37% 94,51% 92,70% 100% 97,09%

Eksperimen ke-1 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 452 0 0 0 0 0 99,78%
Walking Up 2 458 4 0 0 0 98,71%
True Label

Walking Down 0 6 464 0 0 0 98,83%


Sitting 0 0 0 462 20 0 93,71%
Standing 0 0 1 41 538 0 94,55%
Laying 0 0 0 1 0 545 99,91%
Precision (%) 99,56% 98,71% 98,93% 91,67% 96,42% 100 % Accuracy
Recall (%) 100,00% 98,71% 98,72% 95,85% 92,76% 99,82% 97,36%

Eksperimen ke-1 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 487 0 0 0 0 0 99,69%
Walking Up 2 475 4 0 0 0 99,27%
True Label

Walking Down 1 1 413 0 0 0 99,28%


Sitting 0 0 0 485 23 1 95,19%
Standing 0 0 0 25 515 0 95,55%
Laying 0 0 0 0 0 562 99,91%
Precision (%) 99,39% 99,79% 99,04% 95,10% 95,72% 99,82% Accuracy
Recall (%) 100% 98,75% 99,52% 95,28% 95,37% 100 % 97,53%

81
Eksperimen ke-2 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 513 0 0 0 0 0 99,61%
Walking Up 2 463 6 0 0 0 98,41%
True Label

Walking Down 2 7 410 0 0 0 98,20%


Sitting 0 0 0 437 31 0 93,98%
Standing 0 0 0 25 551 0 95,16%
Laying 0 0 0 0 0 547 100%
Precision (%) 99,23% 98,51% 98,56% 94,59% 94,67% 100% Accuracy
Recall (%) 100% 98,30% 97,85% 93,38% 95,66% 100% 97,16%

Eksperimen ke-2 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 493 0 1 0 0 0 99,20%
Walking Up 0 440 2 0 0 0 99,21%
True Label

Walking Down 7 4 399 0 0 0 98,28%


Sitting 0 0 0 480 23 0 94,77%
Standing 0 1 0 30 550 0 95,32%
Laying 0 0 0 0 0 564 100 %
Precision (%) 98,60% 98,88% 99,25% 94,12% 95,99% 100 % Accuracy
Recall (%) 99,80% 99,50% 97,32% 95,43% 94,66% 100% 97,36%

Eksperimen ke-2 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 493 1 2 0 0 0 99,10%
Walking Up 0 484 1 0 0 0 98,07%
True Label

Walking Down 5 15 458 0 0 0 97,55%


Sitting 1 0 0 398 55 0 89,54%
Standing 0 2 0 37 489 1 91,15%
Laying 0 0 0 0 0 552 99,91%
Precision (%) 98,80% 96,41% 99,35% 91,49% 89,89% 99,82% Accuracy
Recall (%) 99,40% 99,79% 95,82% 87,67% 92,44% 100% 95,93%

82
Eksperimen ke-3 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 509 0 0 0 0 0 99,90%
Walking Up 0 462 1 0 0 0 99,68%
True Label

Walking Down 1 2 435 0 0 0 99,54%


Sitting 0 0 0 480 17 0 93,93%
Standing 0 0 0 45 493 0 94,08%
Laying 0 0 0 0 0 549 100%
Precision (%) 99,80% 98,57% 99,77% 91,43% 96,67% 100% Accuracy
Recall (%) 100% 99,78% 99,32% 96,58% 91,64% 100% 97,92%

Eksperimen ke-3 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 442 56 0 0 0 0 91,04%
Walking Up 12 483 0 0 0 0 43,91%
True Label

Walking Down 19 64 335 0 1 0 88,74%


Sitting 0 492 1 15 1 0 5,73%
Standing 0 534 0 0 1 0 0,37%
Laying 0 76 0 0 0 462 92,40%
Precision (%) 93,45% 28,33% 99,70% 100% 33,33% 100% Accuracy
Recall (%) 88,76% 97,58% 79,95% 2,95% 0,19% 85,87% 58,25%

Eksperimen ke-3 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 398 69 0 0 0 0 89,04%
Walking Up 10 450 0 0 0 0 40,61%
True Label

Walking Down 19 73 342 0 0 0 88,14%


Sitting 0 509 0 17 0 0 6,26%
Standing 0 558 0 0 5 0 1,76%
Laying 0 97 0 0 0 447 90,21%
Precision (%) 93,21% 25,63% 100% 100% 100,00% 100% Accuracy
Recall (%) 85,22% 97,83% 78,80% 3,23% 0,89% 82,17% 55,71%

83
Eksperimen ke-4 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 505 0 1 0 0 0 99,70%
Walking Up 0 401 2 0 0 0 99,50%
True Label

Walking Down 2 2 398 0 0 0 99,13%


Sitting 0 0 0 487 20 0 93,03%
Standing 0 0 0 53 543 0 93,70%
Laying 0 0 0 0 0 580 100%
Precision (%) 99,61% 99,50% 99,25% 90,19% 96,45% 100% Accuracy
Recall (%) 99,80% 99,50% 99,00% 96,06% 91,11% 100% 97,62%

Eksperimen ke-4 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 489 0 0 0 0 0 100,00%
Walking Up 0 467 2 0 0 0 99,47%
True Label

Walking Down 0 3 433 0 0 0 99,43%


Sitting 0 0 0 484 12 0 89,71%
Standing 0 0 0 99 436 0 88,71%
Laying 0 0 0 0 0 569 100,00%
Precision (%) 100,00% 99,36% 99,54% 83,02% 97,32% 100% Accuracy
Recall (%) 100,00% 99,57% 99,31% 97,58% 81,50% 100% 96,49%

Eksperimen ke-4 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 480 0 3 0 0 0 99,69%
Walking Up 0 473 2 0 0 0 99,47%
True Label

Walking Down 0 2 405 0 0 0 99,02%


Sitting 0 0 0 488 16 0 94,57%
Standing 0 1 1 40 526 0 94,77%
Laying 0 0 0 0 0 557 100,00%
Precision (%) 100,00% 99,37% 98,54% 92,42% 97,05% 100% Accuracy
Recall (%) 99,38% 99,58% 99,51% 96,83% 92,61% 100% 97,80%

84
Eksperimen ke-5 (Pengujian ke-1)
Activities Predicted Label
Walking Walking Walking Sitting Standing Laying F1-score
Up Down (%)
Walking 446 26 2 0 0 0 99,56%
Walking Up 0 465 0 0 0 0 98,96%
True Label

Walking Down 0 1 452 0 0 0 99,43%


Sitting 0 38 0 205 235 0 81,88%
Standing 0 6 0 3 543 0 87,86%
Laying 0 3 0 0 0 569 100%
Precision (%) 99,78% 97,94% 100% 99,44% 78,67% 100% Accuracy
Recall (%) 99,34% 100% 98,86% 69,59% 99,47% 100% 93,88%

Eksperimen ke-5 (Pengujian ke-2)


Activities Predicted Label
Walking Walking Walking Sitting Standing Laying F1-score
Up Down (%)
Walking 235 254 1 0 0 0 64,83%
Walking Up 0 469 1 0 0 0 67,00%
True Label

Walking Down 0 92 357 0 0 0 88,26%


Sitting 0 14 0 479 18 0 85,31%
Standing 0 47 0 132 339 0 77,49%
Laying 0 54 1 1 0 500 94,70%
Precision (%) 100,00% 50,43% 99,17% 78,27% 94,96% 100% Accuracy
Recall (%) 47,96% 99,79% 79,51% 93,74% 65,44% 89,93% 80,19%

Eksperimen ke-5 (Pengujian ke-3)


Activities Predicted Label
Walking Walking Walking Sitting Standing Laying F1-score
Up Down (%)
Walking 470 6 1 0 0 0 99,26%
Walking Up 0 466 1 0 0 0 95,88%
True Label

Walking Down 0 1 430 0 0 0 99,65%


Sitting 0 23 0 222 271 0 60,00%
Standing 0 7 0 2 505 0 78,29%
Laying 0 2 0 0 0 587 99,83%
Precision (%) 100,00% 92,28% 99,54% 99,11% 65,08% 100% Accuracy
Recall (%) 98,53% 99,79% 99,77% 43,02% 98,25% 99,66% 89,21%

85
Eksperimen ke-6 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 485 1 3 0 0 0 99,49%
Walking Up 0 490 2 0 0 0 99,59%
True Label

Walking Down 0 1 402 0 0 0 99,26%


Sitting 1 0 0 492 18 1 96,28%
Standing 0 0 0 17 513 0 96,70%
Laying 0 0 0 1 0 567 99,82%
Precision (%) 99,79% 99,59% 98,77% 96,47% 96,61% 99,82% Accuracy
Recall (%) 99,18% 99,59% 99,75% 96,09% 96,79% 99,82% 98,12%

Eksperimen ke-6 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 474 0 0 0 0 0 100%
Walking Up 0 490 1 0 0 0 99,59%
True Label

Walking Down 0 3 443 0 0 0 99,55%


Sitting 0 0 0 514 19 0 96,89%
Standing 0 0 0 14 513 0 96,88%
Laying 0 0 0 0 0 523 100%
Precision (%) 100,00% 99,39% 99,77% 97,35% 96,43% 100% Accuracy
Recall (%) 100,00% 99,80% 99,33% 96,44% 97,34% 100% 98,46%

Eksperimen ke-6 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 465 2 1 0 0 1 99,57%
Walking Up 0 480 1 0 0 0 98,97%
True Label

Walking Down 0 4 426 0 0 0 99,30%


Sitting 0 0 0 481 34 0 95,06%
Standing 0 3 0 16 552 0 95,42%
Laying 0 0 0 0 0 528 99,91%
Precision (%) 100,00% 98,16% 99,53% 96,78% 94,20% 99,81% Accuracy
Recall (%) 99,15% 99,79% 99,07% 93,40% 96,67% 100% 97,76%

86
Eksperimen ke-7 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 496 0 0 0 0 0 99,90%
Walking Up 0 443 2 0 0 0 99,22%
True Label

Walking Down 1 4 480 0 0 0 99,28%


Sitting 0 0 0 444 31 0 92,89%
Standing 0 1 0 37 524 0 93,82%
Laying 0 0 0 0 0 531 100%
Precision (%) 99,80% 98,88% 99,59% 92,31% 94,41% 100% Accuracy
Recall (%) 100% 99,55% 98,97% 93,47% 93,24% 100% 97,62%

Eksperimen ke-7 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 498 0 0 0 1 0 99,40%
Walking Up 2 470 4 0 0 0 98,74%
True Label

Walking Down 3 6 409 0 0 0 98,44%


Sitting 0 0 0 468 21 0 95,22%
Standing 0 0 0 26 531 0 95,68%
Laying 0 0 0 0 0 555 100,00%
Precision (%) 99,01% 98,74% 99,03% 94,74% 96,02% 100% Accuracy
Recall (%) 99,80% 98,74% 97,85% 95,71% 95,33% 100% 97,66%

Eksperimen ke-7 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 487 0 2 0 0 0 99,60%
Walking Up 1 454 3 0 0 0 99,13%
True Label

Walking Down 1 3 424 0 0 0 98,95%


Sitting 0 0 0 512 18 0 96,51%
Standing 0 1 0 19 504 0 96,37%
Laying 0 0 0 0 0 565 100,00%
Precision (%) 99,59% 99,13% 98,83% 96,42% 96,55% 100% Accuracy
Recall (%) 99,59% 99,13% 99,07% 96,60% 96,18% 100% 97,90%

87
Eksperimen ke-8 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 469 1 1 0 0 0 99,79%
Walking Up 0 498 1 0 0 0 99,60%
True Label

Walking Down 0 1 413 0 0 0 99,52%


Sitting 0 0 0 471 11 0 96,12%
Standing 0 1 1 27 541 0 96,43%
Laying 0 0 0 0 0 558 100%
Precision (%) 100% 99,40% 99,28% 94,58% 98,01% 100% Accuracy
Recall (%) 99,58% 99,80% 99,76% 97,72% 94,91% 100% 98,73%

Eksperimen ke-8 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 487 0 2 0 0 0 99,60%
Walking Up 1 454 3 0 0 0 99,13%
True Label

Walking Down 1 3 424 0 0 0 98,95%


Sitting 0 0 0 512 18 0 96,51%
Standing 0 1 0 19 504 0 96,37%
Laying 0 0 0 0 0 565 100,00%
Precision (%) 99,59% 99,13% 98,83% 96,42% 96,55% 100% Accuracy
Recall (%) 99,59% 99,13% 99,07% 96,60% 96,18% 100% 91,75%

Eksperimen ke-8 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 497 0 1 0 0 0 99,00%
Walking Up 2 457 1 0 0 0 99,35%
True Label

Walking Down 2 3 397 0 0 0 99,13%


Sitting 3 0 0 483 36 1 90,03%
Standing 2 0 0 67 490 0 90,32%
Laying 0 0 0 0 0 552 99.91%
Precision (%) 98,22% 99,35% 99,50% 87,82% 93,16% 99,82% Accuracy
Recall (%) 99,80% 99,35% 98,76% 92,35% 87,66% 100% 96,06%

88
Eksperimen ke-9 (Pengujian ke-1)
Activities Predicted Label
Walking Walking Walking Sitting Standing Laying F1-score
Up Down (%)
Walking 469 0 0 0 0 2 99,79%
Walking Up 0 433 1 0 1 0 99,65%
True Label

Walking Down 0 0 465 0 0 0 99,79%


Sitting 0 0 0 449 62 0 93,25%
Standing 0 1 1 3 540 0 93,91%
Laying 0 0 0 0 0 567 100%
Precision (%) 100% 99,77% 99,57% 99,34% 89,26% 100% Accuracy
Recall (%) 99,58% 99,54% 100% 87,87% 99,08% 100% 96,72%

Eksperimen ke-9 (Pengujian ke-2)


Activities Predicted Label
Walking Walking Walking Sitting Standing Laying F1-score
Up Down (%)
Walking 480 0 0 0 0 0 99,90%
Walking Up 0 449 3 0 0 0 99,56%
True Label

Walking Down 0 1 416 0 0 0 99,52%


Sitting 0 0 0 496 12 0 97,06%
Standing 1 0 0 18 531 0 97,16%
Laying 0 0 0 0 0 587 100%
Precision (%) 99,79% 99,78% 99,28% 96,50% 97,79% 100% Accuracy
Recall (%) 100,00% 99,34% 99,76% 97,64% 96,55% 100% 98,79%

Eksperimen ke-9 (Pengujian ke-3)


Activities Predicted Label
Walking Walking Walking Sitting Standing Laying F1-score
Up Down (%)
Walking 503 0 1 0 0 0 99,70%
Walking Up 0 449 1 0 0 0 99,56%
True Label

Walking Down 0 2 453 0 0 0 99,56%


Sitting 0 0 0 514 10 0 97,53%
Standing 2 1 0 16 496 0 97,16%
Laying 0 0 0 0 0 546 100%
Precision (%) 99,60% 99,34% 99,56% 96,98% 98,02% 100% Accuracy
Recall (%) 99,80% 99,78% 99,56% 98,09% 96,31% 100% 98,83%

89
Eksperimen ke-10 (Pengujian ke-1)
Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 386 142 0 0 0 0 84,46%
Walking Up 0 461 0 0 0 0 44,56%
True Label

Walking Down 0 28 385 0 0 0 96,49%


Sitting 0 423 0 84 0 0 28,38%
Standing 0 534 0 1 17 0 5,98%
Laying 0 20 0 0 0 513 98,09%
Precision (%) 100% 28,67% 100% 98,82% 100% 100% Accuracy
Recall (%) 73,11% 100% 93,22% 16,57% 3,08% 96,25% 61,55%

Eksperimen ke-10 (Pengujian ke-2)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 439 50 0 0 0 0 94,61%
Walking Up 0 478 2 0 0 0 36,81%
True Label

Walking Down 0 23 414 0 0 0 96,73%


Sitting 0 531 1 6 0 0 2,20%
Standing 0 515 1 1 2 0 0,77%
Laying 0 520 1 0 0 10 3,70%
Precision (%) 100,00% 22,58% 98,81% 85,71% 100,00% 100% Accuracy
Recall (%) 89,78% 99,58% 94,74% 1,12% 0,39% 1,88% 45,16%

Eksperimen ke-10 (Pengujian ke-3)


Predicted Label
Activities Walking Walking F1-score
Walking Sitting Standing Laying
Up Down (%)
Walking 426 67 1 0 0 0 92,51%
Walking Up 0 435 0 0 0 0 34,37%
True Label

Walking Down 1 17 453 0 0 0 97,63%


Sitting 0 507 1 5 0 0 1,93%
Standing 0 504 2 0 0 0 0,00%
Laying 0 566 1 0 0 9 3,08%
Precision (%) 99,77% 20,75% 99,12% 100% 0,00% 100% Accuracy
Recall (%) 86,23% 100,00% 96,18% 0,97% 0,00% 1,57% 44,42%

90
BIODATA PENULIS

Penulis dilahirkan di Gresik, 20 Agustus 2001, merupakan anak


pertama dari 3 bersaudara. Penulis telah menempuh pendidikan formal
yaitu MI Al-Ma’arif Sukomulyo Gresik, SMPN 22 Gresik dan SMAN
1 Manyar. Setelah lulus dari SMAN tahun 2020, Penulis melanjutkan
kuliah di Departemen Teknik Informatik FTEIC - ITS pada tahun 2019
dan terdaftar dengan NRP 05111940000195.

Selama menempuh Pendidikan di bangku kuliah, penulis aktif


mengikuti organisasi dan kepanitiaan seperti Staff Humas Schematics,
staff Kaderisasi dan Pengembangan Sumber Daya Manusia HMTC,
dan Ketua KPU HMTC. Selain itu penulis aktif menjadi asisten dosen
untuk mata kuliah sitem basis data, analisis dan perancangan
informasi, serta jaringan komputer.

91

Anda mungkin juga menyukai