feat(latex): Add content for data acquisition, model development, and hyperparameter optimization in methodology chapter

This commit is contained in:
Rifqi D. Panuluh
2025-10-06 08:15:32 +00:00
parent 3258cd2e82
commit 01c2a9d232
2 changed files with 45 additions and 218 deletions

View File

@@ -1,217 +0,0 @@
% Dalam studi ini, setiap sensor menghasilkan data akselerasi yang direkam sebagai sebuah vektor numerik kontinu. Secara matematis,
% setiap data sensor didefinisikan sebagai
% \begin{equation}
% n \in \mathbb{R}^{262144},
% \end{equation}
% di mana \(n\) adalah vektor berisi 262144 sampel pengukuran akselerasi seperti yang dijelaskan pada persamaan~\ref{eq:sample}.
% Selanjutnya, data akselerasi untuk 30 sensor (atau \textit{node}) disimpan dalam sebuah berkas \texttt{.TXT}. Maka, setiap berkas tersebut dapat direpresentasikan sebagai matriks
% \begin{equation}
% N \in \mathbb{R}^{262144 \times 30},
% \end{equation}
% di mana setiap kolom dari \(N\) merupakan data akselerasi untuk satu sensor dari 30 sensor yang ada.
\subsection{Grid, Kode \textit{Joint}, dan Nama File}
Masing-masing *sensor node* diberi nama menurut indeks \(n\) (dengan \(n = 0,1,\dots,29\)).
Berkas data mentah tiap node disimpan dalam berkas teks berformat
\texttt{zzzAD<n>.TXT}; penamaannya dapat dirumuskan sebagai
\[
Z_{n} \;=\; \texttt{``zzzAD}n\texttt{.TXT''},
\qquad n = 1,\dots,30.
\]
Pada pembahasan selanjutnya, simbol \(Z_{n}\) dipakai sebagai penunjuk
berkas data untuk node ke-\(n\).
Untuk merujuk satu kanal (kolom) tertentu di dalam matriks
\(\mathbf{D}^{(n)}\), digunakan notasi
\[
\gls{not:damage_file}_{s}^{(\gls{not:joint_index})} \in \mathbb{R}^{262144},
\]
dengan ketentuan:
* superskrip \((\gls{not:joint_index})\) menandakan indeks kasus kerusakan
(130),
* subskrip \(s\) menandakan indeks kanal sensor yang dipilih
(\(s = 1,\dots,30\)).
Dengan demikian,
\(\gls{not:damage_file}_{s}^{(n)}\) merepresentasikan sebuah vektor
\(262144 \times 1\) yang berisi deret waktu hasil pengukuran kanal
\(s\) pada skenario kerusakan ke-\(n\).
\subsection{Pemetaan Sensor ke Dalam Folder (Damage-case)}
Semua tiga puluh \textit{node} dikelompokkan ke dalam enam folder yang merepresentasikan enam skenario kerusakan, masing-masing dilabeli \(d_{i}\) dengan \(i=0,\dots,5\). Setiap folder mengandung tepat lima \textit{node} berurutan, sehingga didefinisikan:
\begin{equation*}
\gls{not:damage_file_set_case}_{i} = \bigl\{
\,\mathbf{D}_{5i}^{(5i)},
\;\mathbf{D}_{5i+1}^{(5i+1)},
\;\mathbf{D}_{5i+2}^{(5i+2)},
\;\mathbf{D}_{5i+3}^{(5i+3)},
\;\mathbf{D}_{5i+4}^{(5i+4)}
\bigr\},
\quad i = 0,\dots,5.
\end{equation*}
\begin{equation}
\mathcal{D}_i = \bigl\{
\end{equation}
Sebagai contoh secara konkrit,
\begin{align*}
d_0 &= \{n_{0}^{F_0},\;n_{1}^{F_1},\;n_{2}^{F_2},\;n_{3}^{F_3},\;n_{4}^{F_4}\},\\[1ex]
d_1 &= \{n_{5}^{F_5},\;n_{6}^{F_6},\;n_{7}^{F_7},\;n_{8}^{F_8},\;n_{9}^{F_9}\},\\[1ex]
&\;\;\vdots\\[1ex]
d_5 &= \{n_{25}^{F_{25}},\;n_{26}^{F_{26}},\;n_{27}^{F_{27}},\;n_{28}^{F_{28}},\;n_{29}^{F_{29}}\}.
\end{align*}
\subsection{Seleksi Sensor \textit{Node} Ujung-Ujung (Domain Waktu)}
Untuk mensimulasikan tata letak sensor terbatas, dari setiap folder kerusakan hanya diambil \textit{node} pertama dan terakhir. Subset domain waktu ini dilambangkan sebagai
\begin{equation*}
d_{i}^{\mathrm{TD}}
= \bigl\{\,n_{5i}^{F_{5i}},\;n_{5i+4}^{F_{5i+4}}\bigr\},
\quad |d_{i}^{\mathrm{TD}}| = 2.
\end{equation*}
\subsection{Ekstraksi Fitur}
Operator STFT \(\mathcal{T}\) didefinisikan untuk memetakan sinyal domain waktu mentah (vektor dengan panjang \(L=262144\)) menjadi spektrogram berukuran \(513\times513\). Langkah-langkahnya adalah:
\begin{equation*}
\begin{aligned}
\text{(1) Fungsi jendela:}\quad
w[n] &= \frac{1}{2}\Bigl(1 - \cos\frac{2\pi n}{N_w - 1}\Bigr),
\quad n=0,\ldots,N_w-1; \\[1ex]
\text{(2) STFT:}\quad
S_k(p,t)
&= \sum_{n=0}^{N_w-1}
x_k\bigl[t\,N_h + n\bigr]
\;w[n]\;
e^{-j2\pi p n / N_w},\\[1ex]
&\quad
p = 0,\ldots,512,\quad t = 0,\ldots,512.
\end{aligned}
\end{equation*}
Pengambilan magnitudo menghasilkan matriks spektrogram untuk \textit{node} \(k\) sebagai
\begin{equation*}
\widetilde n_{k}^{F_{k}}(p,t) \;=\; \bigl|S_{k}(p,t)\bigr|
\;\in\;\mathbb{R}^{513\times513}.
\end{equation*}
Dengan demikian operator STFT dapat dituliskan sebagai:
\begin{equation*}
\mathcal{T}:\; n_{k}^{F_{k}}\in\mathbb{R}^{262144}
\;\longmapsto\;
\widetilde n_{k}^{F_{k}}\in\mathbb{R}^{513\times513}.
\end{equation*}
\subsection{Subset Domain Frekuensi}
Operator \(\mathcal{T}\) diterapkan pada \textit{node} ujung-ujung yang telah dipilih, sehingga diperoleh:
\begin{equation*}
d_{i}^{\mathrm{FD}}
= \bigl\{\,
\widetilde n_{5i}^{F_{5i}},\;
\widetilde n_{5i+4}^{F_{5i+4}}
\,\bigr\},
\quad
|d_{i}^{\mathrm{FD}}| = 2.
\end{equation*}
\subsection{Pengelompokan Berdasarkan Letak Ujung Sensor}
Sensor-sensor ujung bagian bawah dilabeli sebagai Sensor A dan sensor-sensor ujung bagian atas dilabeli sebagai Sensor B. Semua data dari keenam kasus kerusakan digabungkan menjadi dua himpunan:
\begin{equation*}
\text{Sensor A}
=
\bigl\{\,
\widetilde n_{0}^{F_{0}},\,
\widetilde n_{5}^{F_{5}},\,
\dots,\,
\widetilde n_{25}^{F_{25}}
\bigr\},
\quad
\text{Sensor B}
=
\bigl\{\,
\widetilde n_{4}^{F_{4}},\,
\widetilde n_{9}^{F_{9}},\,
\dots,\,
\widetilde n_{29}^{F_{29}}
\bigr\}.
\end{equation*}
\subsection{Perakitan Baris dan Pelabelan}
Setiap spektrogram berukuran \(513\times513\) diartikan sebagai 513 vektor fitur berdimensi 513. Untuk setiap kasus kerusakan \(i\) dan sensor \(s\), vektor fitur ini direplikasi sebanyak 5 kali (indeks pengulangan \(r\in\{0,\dots,4\}\)) dan diambil masing-masing baris/kolom ke-\(t\) dengan
\begin{equation*}
\mathbf{x}_{i,s,r,t}\in\mathbb{R}^{513}.
\end{equation*}
Label skalar untuk kasus kerusakan dinyatakan sebagai
\begin{equation*}
y_{i} = i,\quad i=0,\dots,5.
\end{equation*}
Selanjutnya, fungsi \textit{slicing} didefinisikan sebagai
\begin{equation*}
\Lambda(i,s,r,t)
\;=\;
\bigl[\,
\mathbf{x}_{i,s,r,t},
\;y_{i}
\bigr]
\;\in\;\mathbb{R}^{513+1}.
\end{equation*}
\subsection{Bentuk Akhir Data untuk Pelatihan}
Seluruh baris dari enam kasus kerusakan, lima pengulangan, dan 513 potongan waktu digabungkan menjadi dataset untuk satu sisi sensor:
\begin{equation*}
\mathcal{D}^{(s)}
=
\bigl\{
\Lambda(i,s,r,t)
\;\big|\;
i=0,\dots,5,\;
r=0,\dots,4,\;
t=0,\dots,512
\bigr\}.
\end{equation*}
Karena terdapat total \(6\times5\times513 = 15\,390\) baris, dan setiap baris memiliki \(513\) fitur ditambah satu kolom label, maka bentuk akhir dari data untuk satu sisi sensor adalah:
\begin{equation*}
|\mathcal{D}^{(s)}| = 15\,390 \times 514.
\end{equation*}
\subsection{Validasi Silang K-Fold Terstratifikasi}
Untuk mengevaluasi model secara andal dan menghindari \textit{overfitting}, digunakan validasi silang K-Fold terstratifikasi pada masing-masing himpunan data sensor (Sensor A dan Sensor B). Skema ini membagi data menjadi \(K\) lipatan dengan proporsi label yang dipertahankan pada setiap lipatan. Pada iterasi ke-\(k\), model dilatih pada \(\mathcal{D}_{\text{train}}^{(k)}\) (gabungan \(K-1\) lipatan) dan dievaluasi pada \(\mathcal{D}_{\text{val}}^{(k)}\) (lipatan ke-\(k\)). Rata-rata metrik diperoleh sebagai
\begin{equation*}
\mathrm{Metric}_{\mathrm{K\text{-}Fold}}
= \frac{1}{K} \sum_{k=1}^{K} \mathrm{Metric}\bigl(\hat f^{(k)};\, \mathcal{D}_{\text{val}}^{(k)}\bigr),
\end{equation*}
di mana \(\hat f^{(k)}\) adalah model terlatih pada iterasi ke-\(k\). Pada studi ini, nilai \(K\) dipilih \(K=5\) untuk menyeimbangkan variasi estimasi dan biaya komputasi.
\paragraph{Prosedur ringkas:}
\begin{enumerate}
\item Pisahkan fitur dan label dari \(\mathcal{D}^{(s)}\) untuk \(s\in\{\text{A},\text{B}\}\) secara terpisah.
\item Lakukan stratifikasi berdasarkan label kerusakan \(y\) pada \(K=5\) lipatan.
\item Untuk setiap lipatan: latih pengklasifikasi (SVM, LDA, Bagged Trees, Random Forest, XGBoost) pada \(K-1\) lipatan, uji pada lipatan tersisa.
\item Hitung akurasi, presisi, dan \textit{confusion matrix}; ambil rata-rata dan simpangan baku lintas lipatan.
\end{enumerate}
\subsection{Validasi Silang Antar-\textit{Dataset} (Cross-Dataset)}
Selain K-Fold, dilakukan pengujian lintas sumber data untuk menilai generalisasi domain. Diasumsikan tersedia dua himpunan data berbeda (misalnya, Sensor A dan Sensor B, atau dua sesi/penempatan berbeda) yang dilambangkan sebagai \(\mathcal{D}^{(1)}\) dan \(\mathcal{D}^{(2)}\).
\paragraph{Skema latih-uji silang:}
\begin{align*}
ext{Eksperimen-1:}\quad & \hat f_{1} \leftarrow \mathrm{Train}\bigl(\mathcal{D}^{(1)}\bigr), & \mathrm{Eval\ on}\; \mathcal{D}^{(2)} \\
ext{Eksperimen-2:}\quad & \hat f_{2} \leftarrow \mathrm{Train}\bigl(\mathcal{D}^{(2)}\bigr), & \mathrm{Eval\ on}\; \mathcal{D}^{(1)}
\end{align*}
Metrik yang dilaporkan adalah rata-rata kedua arah evaluasi untuk memberikan gambaran seimbang terhadap kemampuan \textit{out-of-domain}:
\begin{equation*}
\mathrm{Metric}_{\mathrm{X\text{-}Domain}}
= \tfrac{1}{2}\Bigl[\,\mathrm{Metric}(\hat f_{1};\, \mathcal{D}^{(2)}) + \mathrm{Metric}(\hat f_{2};\, \mathcal{D}^{(1)})\,\Bigr].
\end{equation*}
\paragraph{Catatan praktis:} Untuk menjaga keadilan komparasi, normalisasi fitur dihitung hanya pada data pelatihan lalu diaplikasikan ke data uji. Bila ukuran kedua himpunan tidak seimbang, dapat digunakan penyeimbangan kelas atau pengambilan sampel berstrata pada tahap pelatihan.

View File

@@ -10,5 +10,49 @@
\section{Tahapan Penelitian}
\input{chapters/id/03_methodology/steps/index}
\section{Akuisisi Data}
\input{chapters/id/03_methodology/steps/data_acquisition}
\section{Ekstraksi Fitur}
% \input{chapters/id/03_methodology/steps/feature_extraction}
\section{Analisis Data}
\input{chapters/id/03_methodology/data_analysis}
\input{chapters/id/03_methodology/data_analysis}
\section{Pengembangan Model}
Model klasifikasi \gls{svm} dengan kernel \gls{rbf} digunakan untuk mengklasifikasikan lokasi kerusakan struktur. Model ini dipilih karena kemampuannya dalam menangani data non-linear dan efektivitasnya dalam berbagai aplikasi klasifikasi dengan bantuan kernel \gls{rbf} yang memungkinkan pemetaan data ke ruang fitur berdimensi lebih tinggi, sehingga memudahkan pemisahan kelas yang kompleks.
\section{Optimasi Hyperparameter}
Model \gls{svm} memiliki beberapa \textit{hyperparameter} penting yang perlu dioptimalkan untuk mencapai kinerja terbaik, yaitu parameter regulasi $C$ dan parameter kernel $\gamma$. Parameter $C$ mengontrol keseimbangan antara memaksimalkan margin dan meminimalkan kesalahan klasifikasi pada data pelatihan, sedangkan parameter $\gamma$ menentukan jangkauan pengaruh dari setiap titik pelatihan, dengan nilai kecil menghasilkan pengaruh yang luas dan nilai besar menghasilkan pengaruh yang sempit.
Dalam penelitian ini, optimasi \textit{hyperparameter} dilakukan melalui pencarian \textit{grid} dengan dua tahap: \textit{coarse grid-search} dan \textit{fine grid-search}. Nilai $C$ dan $\gamma$ yang digunakan mengikuti rentang logaritma basis 2 yang direkomendasikan oleh \textcite{Hsu2009APG, CC01a} dan diadopsi oleh beberapa penelitian populer sebelumnya \textcite{hsu2002, JMLR:v18:16-174} dengan penyesuaian interval untuk mengurangi komputasi yang dibutuhkan yang semula $C \in \{ 2^{-5}, 2^{-3}, \dots, 2^{15} \}$ dan $\gamma \in \{ 2^{-15}, 2^{-13}, \dots, 2^{3} \}$ menjadi $C \in \{ 2^{-5}, 2^{0}, 2^{5}, 2^{10}, 2^{15} \}$ dan $\gamma \in \{ 2^{-15}, 2^{-10}, 2^{-5}, 2^{0}, 2^{5} \}$.
% Before using another Machine Learning algorithm, it's beneficial to apply a dimensionality reduction technique to your training data. This can lead to faster processing, reduced storage requirements, and potentially improved performance.
Reduksi dimensi ditambahkan sebagai parameter ketiga dalam pencarian \textit{grid} untuk menentukan jumlah komponen utama \gls{pca} guna mengoptimasi waktu komputasi, performa \textit{inference}, kompleksitas model, dan ukuran model \parencite{geron2019}. Nilai-nilai komponen yang diuji adalah $n_{components} \in \{512, 256, 128, 64, 32, 16, 8, 4, 2\}$. Rentang nilai tetap ini dipilih dibandingkan rentang \textit{fractional threshold} $(0 < x < 1)$ variansi kumulatif untuk memastikan konsistensi, meningkatkan reprodusibilitas, dan memudahkan interpretasi jumlah komponen utama yang dipilih di setiap iterasi pencarian \textit{grid}.
Kemudian, \textit{cross-validation} dengan skema \textit{stratified k-fold} digunakan untuk menilai kinerja model pada setiap kombinasi \textit{hyperparameter}. Skema ini memastikan bahwa setiap lipatan memiliki proporsi kelas yang seimbang, sehingga mengurangi bias dalam penilaian model \parencite{Kohavi1995ASO}. Nilai $k$ yang digunakan pada penelitian ini adalah 5 yang berarti data pelatihan dibagi menjadi 5 bagian: 4 bagian digunakan untuk pelatihan dan 1 bagian untuk validasi secara bergantian. Proses ini diulang untuk seluruh kombinasi \textit{hyperparameter} yang berjumlah 324 kombinasi, sehingga total pelatihan model yang dilakukan adalah 675 kali.
% table showing the grid search parameters
Tabel \ref{tab:grid_search_parameters} merangkum parameter-parameter yang digunakan dalam pencarian \textit{grid}.
\begin{table}[H]
\centering
\caption{Parameter-parameter dalam pencarian \textit{grid} untuk optimasi \textit{hyperparameter} model \gls{svm}.}
\label{tab:grid_search_parameters}
\begin{tabular}{lll}
\toprule
Parameter & Nilai yang Diuji & Jumlah Nilai \\
\midrule
% kernel
kernel & \gls{rbf} & 1 \\
% regularization parameter
$C$ & $\left\{ 2^{\,x} \,\middle|\, x \in \{-5, 0, \dots, 15\} \right\}$ & 5 \\
$\gamma$ & $\left\{ 2^{\,x} \,\middle|\, x \in \{-15, -10, \dots, 5\} \right\}$ & 5 \\
$n_{components}$ & $\{512, 256, 128, 64, 32, 16, 8, 4, 2\}$ & 9 \\
\midrule
Total Kombinasi & & 135 \\
\bottomrule
\end{tabular}
\end{table}
\section{Evaluasi Model}