Files
thesis/latex/chapters/id/03_methodology/data_analysis.tex

217 lines
8.9 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
% 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.