hopefully final commit
This commit is contained in:
@@ -2,6 +2,202 @@
|
||||
\appendixpage % prints "Appendices"
|
||||
|
||||
|
||||
\section{Supplementary Results: Prediction of Ovulation-Over Indicator}\label{sec:appendix_ov_over_results}
|
||||
|
||||
\subsection{Comparative Study of Model Architectures and Parameters}\label{subsec:appendix_ov_over_architecture_results}
|
||||
|
||||
We evaluate prediction of a binary indicator denoting whether ovulation has already occurred.
|
||||
We examine the influence of input window length, input resolution, and model capacity.
|
||||
|
||||
\paragraph{Impact of input window length.}
|
||||
For predicting whether ovulation has occurred (OV-over),
|
||||
optimal window lengths again vary by architecture and target phase (pre- vs post-ovulation).
|
||||
|
||||
The \textbf{Transformer} yields the lowest overall (0.0533) and post-ovulation MSE (0.0520) at 40 days.
|
||||
The \textbf{LSTM} performs best before ovulation (MSE 0.0212 at 20 days), while its overall MSE improves with longer context (160 days).
|
||||
|
||||
The \textbf{Convolutional LSTM} favors short windows, with the best overall MSE (0.0699), before-OV (0.0389),
|
||||
and after-OV (0.0833) all occurring at 20 days.
|
||||
The \textbf{Convolutional Transformer} performs best overall at 40 days and best before ovulation at 160 days (MSE 0.0286).
|
||||
See Table~\ref{tab:ovover_windows_compact_mse} for a summary.
|
||||
|
||||
\begin{table}[t]
|
||||
\small
|
||||
\renewcommand{\arraystretch}{1.15}
|
||||
\setlength{\tabcolsep}{6pt}
|
||||
\begin{tabularx}{\linewidth}{l*{3}{>{\centering\arraybackslash}X}}
|
||||
\toprule
|
||||
\textbf{Architecture} & \multicolumn{3}{c}{\textbf{MSE}} \\
|
||||
\cmidrule(r){2-4}
|
||||
& \shortstack[c]{Overall best\\(days / MSE)}
|
||||
& \shortstack[c]{Before-OV best\\(days / MSE)}
|
||||
& \shortstack[c]{After-OV best\\(days / MSE)} \\
|
||||
\midrule
|
||||
LSTM
|
||||
& 160 / 0.0557
|
||||
& \textbf{20 / 0.0212}
|
||||
& 160 / 0.0580 \\
|
||||
Transformer
|
||||
& \textbf{40 / 0.0533}
|
||||
& 20 / 0.0255
|
||||
& \textbf{40 / 0.0520} \\
|
||||
Convolutional LSTM
|
||||
& 20 / 0.0699
|
||||
& 20 / 0.0389
|
||||
& 20 / 0.0833 \\
|
||||
Convolutional Transformer
|
||||
& 40 / 0.0709
|
||||
& 160 / 0.0286
|
||||
& 40 / 0.0820 \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\caption{OV-Over: best input window per architecture (MSE only) at a fixed input resolution of 12 values/day.
|
||||
Bold entries are bests within a column.}
|
||||
\label{tab:ovover_windows_compact_mse}
|
||||
\end{table}
|
||||
|
||||
\paragraph{Impact of input resolution.}
|
||||
Fixing the input window to 20 days, we compare input resolutions for LSTM and Transformer models.
|
||||
|
||||
For the \textbf{LSTM}, the lowest overall MSE (0.0633) occurs at 24/day,
|
||||
with best before-OV and after-OV MSEs at 12/day (0.0212) and 48/day (0.0550), respectively.
|
||||
|
||||
The \textbf{Transformer} performs best overall at 72/day (0.0585),
|
||||
with lowest before-OV MSE at 12/day (0.0255) and after-OV MSE at 288/day (0.0578).
|
||||
|
||||
Results are summarized in Table~\ref{tab:ovover_resolution_compact_mse};
|
||||
full resolution grids are in Appendix Table~\ref{tab:ov_over_results_by_resolution}.
|
||||
|
||||
\begin{table}[t]
|
||||
\small
|
||||
\renewcommand{\arraystretch}{1.15}
|
||||
\setlength{\tabcolsep}{6pt}
|
||||
\begin{tabularx}{\linewidth}{l*{3}{>{\centering\arraybackslash}X}}
|
||||
\toprule
|
||||
\textbf{Architecture} & \multicolumn{3}{c}{\textbf{MSE}} \\
|
||||
\cmidrule(r){2-4}
|
||||
& \shortstack[c]{Overall best\\(values/day / MSE)}
|
||||
& \shortstack[c]{Before-OV best\\(values/day / MSE)}
|
||||
& \shortstack[c]{After-OV best\\(values/day / MSE)} \\
|
||||
\midrule
|
||||
LSTM
|
||||
& 24 / 0.0633
|
||||
& \textbf{12 / 0.0212}
|
||||
& \textbf{48 / 0.0550} \\
|
||||
Transformer
|
||||
& \textbf{72 / 0.0585}
|
||||
& 12 / 0.0255
|
||||
& 288 / 0.0578 \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\caption{OV-Over: best input resolution per architecture (MSE only) at a fixed input-window length of 20\,days.
|
||||
Bold entries are bests within a column. Convolutional models are excluded (they consume 288 values/day internally).}
|
||||
\label{tab:ovover_resolution_compact_mse}
|
||||
\end{table}
|
||||
|
||||
\paragraph{Impact of model parameters.}
|
||||
Using fixed input settings (160 days at 12/day for LSTM/Transformer; 40 days for convolutional models), we evaluate model scaling.
|
||||
|
||||
The \textbf{Transformer} achieves the lowest overall (0.0543) and after-ovulation MSE (0.0410) at a large configuration (512×8×8).
|
||||
Before-OV MSE is lowest at 256×4×4 (0.0293).
|
||||
|
||||
For the \textbf{LSTM}, the best overall and after-OV performance is at 512×4,
|
||||
while the best before-OV MSE occurs at 128×2 (0.0274).
|
||||
The \textbf{Convolutional LSTM} performs best overall and after-OV at 256×4, with the best before-OV MSE at 128×2.
|
||||
|
||||
Finally, the \textbf{Convolutional Transformer} achieves its lowest overall and after-OV MSE at 512×4×4, and best before-OV MSE at 512×8×8.
|
||||
|
||||
Table~\ref{tab:ovover_params_compact_mse} summarizes these parameter-dependent results;
|
||||
full comparisons are included in Appendix Tables~\ref{tab:ov_over_results_by_model_parameters_lstm}–\ref{tab:ov_over_results_by_model_parameters_conv_transformer}.
|
||||
|
||||
\begin{table}[t]
|
||||
\scriptsize
|
||||
\renewcommand{\arraystretch}{1.15}
|
||||
\setlength{\tabcolsep}{6pt}
|
||||
\begin{tabularx}{\linewidth}{l*{3}{>{\centering\arraybackslash}X}}
|
||||
\toprule
|
||||
\textbf{Architecture} & \multicolumn{3}{c}{\textbf{MSE}} \\
|
||||
\cmidrule(r){2-4}
|
||||
& \shortstack[c]{Overall best\\(params / MSE)}
|
||||
& \shortstack[c]{Before-OV best\\(params / MSE)}
|
||||
& \shortstack[c]{After-OV best\\(params / MSE)} \\
|
||||
\midrule
|
||||
LSTM
|
||||
& \(512\times4\) / 0.0616
|
||||
& \textbf{\(128\times2\) / 0.0274}
|
||||
& \(512\times4\) / 0.0613 \\
|
||||
Transformer
|
||||
& \textbf{\(512\times8\times8\) / 0.0543}
|
||||
& \(256\times4\times4\) / 0.0293
|
||||
& \textbf{\(512\times8\times8\) / 0.0410} \\
|
||||
Convolutional LSTM
|
||||
& \(256\times4\) / 0.0687
|
||||
& \(128\times2\) / 0.0357
|
||||
& \(256\times4\) / 0.0715 \\
|
||||
Convolutional Transformer
|
||||
& \(512\times4\times4\) / 0.0703
|
||||
& \(512\times8\times8\) / 0.0339
|
||||
& \(512\times4\times4\) / 0.0814 \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\caption{OV-Over: best parameter settings per architecture (MSE only).
|
||||
Parameters are formatted as \(\text{hidden}\times\text{layers}\) (LSTM/Conv.\ LSTM) and \(\text{embedding}\times\text{encoder layers}\times\text{heads}\) (Transformer/Conv.\ Transformer).
|
||||
Bold values indicate bests within a column. Fixed input settings: 160\,days with 12 values/day for LSTM/Transformer; 40\,days for convolutional models.}
|
||||
\label{tab:ovover_params_compact_mse}
|
||||
\end{table}
|
||||
|
||||
\subsection{Regular vs. Irregular Cycles}\label{subsec:appendix_ov_over_regular_vs_irregular}
|
||||
\begin{table}[htbp]
|
||||
\centering
|
||||
\small
|
||||
\begin{tabularx}{\linewidth}{l*{3}{X}}
|
||||
\toprule
|
||||
\multirow{2}{*}{Model} & \multicolumn{3}{c}{MSE} \\
|
||||
\cmidrule(r){2-4}
|
||||
& OV-Over Overall & OV-Over Before OV & OV-Over After OV \\
|
||||
\midrule
|
||||
\multicolumn{4}{c}{\textbf{Regular Cycle Group}} \\
|
||||
\midrule
|
||||
LSTM & \textbf{0.028519} & 0.031695 & \textbf{0.026116} \\
|
||||
Transformer & 0.032929 & \textbf{0.024774} & 0.033411 \\
|
||||
Convolutional LSTM & 0.034224 & 0.028962 & 0.033929 \\
|
||||
Convolutional Transformer & 0.033333 & 0.039045 & 0.029329 \\
|
||||
Last-Cycle Baseline & 0.087916 & 0.093465 & 0.074191 \\
|
||||
Population Mean Baseline & 0.285887 & 0.008876 & 0.418879 \\
|
||||
User Mean Baseline & 0.069245 & 0.069152 & 0.055724 \\
|
||||
\midrule
|
||||
\multicolumn{4}{c}{\textbf{Irregular Cycle Group}} \\
|
||||
\midrule
|
||||
LSTM & \textbf{0.051747} & \textbf{0.016777} & 0.070419 \\
|
||||
Transformer & 0.055990 & 0.026159 & 0.067520 \\
|
||||
Convolutional LSTM & 0.054523 & 0.030092 & \textbf{0.066643} \\
|
||||
Convolutional Transformer & 0.056075 & 0.029638 & 0.067965 \\
|
||||
Last-Cycle Baseline & 0.222906 & 0.134945 & 0.258047 \\
|
||||
Population Mean Baseline & 0.171368 & 0.130366 & 0.140363 \\
|
||||
User Mean Baseline & 0.180702 & 0.088884 & 0.217144 \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\caption{MSEs for ovulation-over target across different model architectures for regular and irregular cycle groups. Bold values denote the best scores per column.}
|
||||
\label{tab:ov_over_mse_regular_irregular}
|
||||
\end{table}
|
||||
|
||||
\noindent
|
||||
Table~\ref{tab:ov_over_mse_regular_irregular} shows the MSE metric results for all models on the regular and irregular cycle groups for the OV-over target.
|
||||
For this target, performance patterns differ more distinctly across phases.
|
||||
In the regular group, the LSTM performs best overall and after ovulation, while the Transformer performs best before ovulation.
|
||||
Convolutional models perform slightly worse than their recurrent and transformer-based counterparts across all phases.
|
||||
The population mean baseline shows a spurious low MSE before ovulation, but this is not consistent across phases, suggesting it is not reliable.
|
||||
In general, baselines are notably weaker than learned models across all splits.
|
||||
|
||||
For irregular cycles, all model performances deteriorate relative to regular cycles.
|
||||
The LSTM remains the most robust, achieving the best MSEs both overall and before ovulation.
|
||||
Convolutional LSTM performs best after ovulation.
|
||||
Transformer-based models perform less consistently in this group, suggesting decreased robustness to cycle irregularity.
|
||||
As before, all learned models outperform the baselines by a wide margin.
|
||||
|
||||
The full table with MSE and MAE for all models can be found in the appendix, Table~\ref{tab:regular_vs_irregular_ov_over_results}.
|
||||
|
||||
|
||||
\section{Extra Figures}\label{app:figs}
|
||||
|
||||
\begin{landscape}
|
||||
|
||||
Reference in New Issue
Block a user