rework of results section

This commit is contained in:
2025-08-20 16:51:13 +02:00
parent 6520ddc690
commit 2efa180985
5 changed files with 778 additions and 570 deletions
+7 -4
View File
@@ -16,6 +16,7 @@
\usepackage{multirow}
\usepackage{blindtext}
\usepackage[a4paper, margin=1in]{geometry}
\usepackage[toc,page]{appendix}
\usepackage{graphicx}
\graphicspath{{resources/figures/}}
@@ -25,10 +26,10 @@
\usepackage{hyperref}
\hypersetup{
colorlinks = true, % Colours links instead of ugly boxes
urlcolor = blue, % Colour for external hyperlinks
linkcolor = blue, % Colour of internal links
citecolor = red % Colour of citations
colorlinks = true, % Colours links instead of ugly boxes
urlcolor = blue, % Colour for external hyperlinks
linkcolor = blue, % Colour of internal links
citecolor = red % Colour of citations
}
% Document
@@ -94,6 +95,8 @@
Responsibility for the content, structure, and conclusions of this thesis remains entirely my own.
\pagebreak
\include{sections/appendix}
\printbibliography
\end{document}
+418
View File
@@ -0,0 +1,418 @@
\appendix
\appendixpage % prints "Appendices"
\section{Extra Figures}\label{app:figs}
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Input-Length in Days} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& Fertility Overall & Fertile Days & Non-Fertile Days & Fertility Overall & Fertile Days & Non-Fertile Days \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\ \midrule
10 & 0.0399 & 0.0857 & 0.0212 & 0.0045 & 0.0105 & 0.0021 \\
20 & 0.0421 & 0.0994 & 0.0180 & 0.0052 & 0.0144 & \underline{\textbf{0.0013}} \\
40 & 0.0406 & 0.0938 & 0.0184 & 0.0049 & 0.0128 & 0.0016 \\
80 & 0.0420 & 0.1006 & \underline{\textbf{0.0176}} & 0.0053 & 0.0147 & 0.0014 \\
160 & \underline{0.0378} & \underline{\textbf{0.0834}} & 0.0192 & \underline{0.0043} & \underline{\textbf{0.0102}} & 0.0019 \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\ \midrule
10 & 0.0443 & 0.0868 & 0.0273 & 0.0046 & 0.0110 & 0.0021 \\
20 & 0.0472 & 0.0949 & 0.0274 & 0.0051 & 0.0133 & 0.0018 \\
40 & 0.0413 & 0.0861 & 0.0233 & \underline{0.0044} & 0.0111 & 0.0017 \\
80 & 0.0437 & \underline{0.0859} & 0.0269 & 0.0045 & \underline{0.0108} & 0.0021 \\
160 & \underline{0.0411} & 0.0882 & \underline{0.0218} & 0.0045 & 0.0116 & \underline{0.0016} \\
\midrule
\multicolumn{7}{c}{\textbf{Convolutional-LSTM}} \\ \midrule
10 & 0.0435 & 0.0954 & 0.0224 & 0.0050 & 0.0133 & 0.0017 \\
20 & 0.0414 & 0.0996 & \underline{0.0179} & 0.0050 & 0.0145 & \underline{\textbf{0.0013}} \\
40 & \underline{0.0394} & \underline{0.0911} & 0.0184 & \underline{0.0045} & \underline{0.0122} & 0.0014 \\
80 & 0.0481 & 0.1005 & 0.0278 & 0.0054 & 0.0146 & 0.0019 \\
160 & 0.0505 & 0.1067 & 0.0290 & 0.0060 & 0.0166 & 0.0020 \\
\midrule
\multicolumn{7}{c}{\textbf{Convolutional-Transformer}} \\ \midrule
10 & 0.0459 & 0.0962 & 0.0256 & 0.0049 & 0.0136 & \underline{0.0015} \\
20 & 0.0423 & \underline{0.0848} & 0.0257 & 0.0045 & \underline{\textbf{0.0102}} & 0.0022 \\
40 & \underline{\textbf{0.0376}} & 0.0854 & \underline{0.0186} & \underline{\textbf{0.0041}} & 0.0108 & \underline{0.0015} \\
80 & 0.0414 & 0.0932 & 0.0210 & 0.0048 & 0.0128 & 0.0018 \\
160 & 0.0523 & 0.1018 & 0.0337 & 0.0059 & 0.0148 & 0.0026 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Architectures and Input Lengths at a fixed Input Resolution of 12 Values per Day.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:fertility_results_by_window_length}
\end{table}
\end{landscape}
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Values Per Day} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& Fertility Overall & Fertile Days & Non-Fertile Days & Fertility Overall & Fertile Days & Non-Fertile Days \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\
\midrule
1 & 0.0471 & 0.0987 & 0.0220 & 0.0062 & 0.0145 & 0.0022 \\
2 & 0.0457 & 0.0962 & 0.0231 & 0.0052 & 0.0133 & 0.0016 \\
4 & 0.0421 & 0.0898 & 0.0223 & \underline{\textbf{0.0046}}& 0.0116 & 0.0018 \\
12 & 0.0421 & 0.0994 & \underline{\textbf{0.0180}}& 0.0052 & 0.0144 & \underline{\textbf{0.0013}}\\
24 & 0.0419 & 0.0949 & 0.0201 & 0.0050 & 0.0132 & 0.0017 \\
48 & \underline{\textbf{0.0402}}& 0.0929 & 0.0182 & 0.0049 & 0.0126 & 0.0018 \\
72 & 0.0433 & 0.0972 & 0.0216 & 0.0052 & 0.0137 & 0.0018 \\
288 & 0.0410 & \underline{\textbf{0.0872}}& 0.0223 & 0.0049 & \underline{\textbf{0.0110}}& 0.0025 \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\
\midrule
1 & 0.0541 & 0.1015 & 0.0313 & 0.0063 & 0.0146 & 0.0023 \\
2 & 0.0468 & 0.0946 & 0.0259 & 0.0054 & 0.0128 & 0.0021 \\
4 & 0.0456 & \underline{0.0891}& 0.0277 & 0.0050 & \underline{0.0115}& 0.0023 \\
12 & 0.0472 & 0.0949 & 0.0274 & 0.0051 & 0.0133 & 0.0018 \\
24 & 0.0502 & 0.0960 & 0.0323 & 0.0052 & 0.0133 & 0.0021 \\
48 & 0.0447 & 0.0912 & \underline{0.0254}& \underline{0.0048}& 0.0122 & 0.0017 \\
72 & 0.0468 & 0.0975 & 0.0257 & 0.0051 & 0.0140 & \underline{0.0014} \\
288 & \underline{0.0449}& 0.0937 & 0.0257 & \underline{0.0048}& 0.0128 & 0.0017 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Architectures and Input Resolutions at a fixed Input-Window-Length of 20 Days.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:fertility_results_by_window_resolution}
\end{table}
\end{landscape}
\begin{landscape}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.0485 & 0.1050 & 0.0252 & 0.0059 & 0.0161 & 0.0016 \\
32 & 1 & 0.0477 & 0.1029 & 0.0248 & 0.0057 & 0.0155 & 0.0016 \\
32 & 2 & 0.0458 & 0.0922 & 0.0269 & 0.0052 & \textbf{0.0122} & 0.0024 \\
64 & 2 & 0.0447 & 0.0925 & 0.0250 & 0.0051 & 0.0123 & 0.0021 \\
128 & 2 & 0.0424 & 0.0951 & 0.0201 & 0.0051 & 0.0131 & 0.0018 \\
128 & 4 & 0.0427 & 0.0989 & 0.0191 & 0.0053 & 0.0145 & 0.0014 \\
256 & 4 & 0.0433 & 0.1050 & \textbf{0.0175} & 0.0055 & 0.0161 & \textbf{0.0011} \\
512 & 4 & \textbf{0.0399} & \textbf{0.0911} & 0.0189 & \textbf{0.0047} & \textbf{0.0122} & 0.0016 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the fertility-probability target across Different Model Parameters for the LSTM model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{9}{c}{\textbf{Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.0708 & 0.1262 & 0.0475 & 0.0084 & 0.0227 & 0.0024 \\
32 & 1 & 1 & 0.0599 & 0.1163 & 0.0378 & 0.0070 & 0.0196 & 0.0019 \\
64 & 1 & 1 & 0.0601 & 0.1178 & 0.0373 & 0.0071 & 0.0200 & 0.0020 \\
64 & 2 & 2 & 0.0477 & 0.0908 & 0.0301 & 0.0049 & 0.0121 & 0.0020 \\
128 & 2 & 2 & 0.0449 & 0.0904 & 0.0263 & 0.0047 & 0.0119 & 0.0017 \\
128 & 4 & 4 & 0.0461 & 0.0979 & 0.0247 & 0.0050 & 0.0143 & 0.0013 \\
256 & 4 & 4 & 0.0475 & 0.0919 & 0.0293 & 0.0048 & 0.0125 & 0.0017 \\
512 & 4 & 4 & 0.0403 & \textbf{0.0831} & 0.0229 & \textbf{0.0043} & \textbf{0.0103} & 0.0018 \\
512 & 8 & 8 & \textbf{0.0395} & 0.0967 & \textbf{0.0159} & 0.0048 & 0.0139 & \textbf{0.0011} \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the fertility probability target across Different Model Parameters for the Transformer model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_transformer}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.0487 & 0.1029 & 0.0264 & 0.0056 & 0.0154 & \textbf{0.0016} \\
32 & 1 & 0.0461 & 0.0956 & 0.0266 & 0.0050 & 0.0133 & 0.0017 \\
32 & 2 & 0.0448 & 0.0975 & 0.0232 & 0.0051 & 0.0139 & \textbf{0.0016} \\
64 & 2 & 0.0432 & 0.0921 & 0.0241 & 0.0048 & 0.0123 & 0.0019 \\
128 & 2 & 0.0400 & 0.0895 & 0.0204 & 0.0045 & 0.0119 & \textbf{0.0016} \\
128 & 4 & 0.0398 & 0.0871 & 0.0204 & 0.0044 & 0.0113 & \textbf{0.0016} \\
256 & 4 & 0.0389 & \textbf{0.0826} & 0.0209 & \textbf{0.0042} & \textbf{0.0100} & 0.0018 \\
512 & 4 & \textbf{0.0380} & 0.0869 & \textbf{0.0184} & 0.0044 & 0.0112 & 0.0017 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the fertility probability target across Different Model Parameters for the convolutional LSTM model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_conv_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.0574 & 0.1005 & 0.0427 & 0.0061 & 0.0146 & 0.0032 \\
32 & 1 & 1 & 0.0462 & 0.0963 & 0.0266 & 0.0051 & 0.0135 & 0.0018 \\
64 & 1 & 1 & 0.0546 & 0.1006 & 0.0379 & 0.0059 & 0.0145 & 0.0027 \\
64 & 2 & 2 & 0.0427 & 0.0903 & 0.0237 & 0.0046 & 0.0118 & 0.0018 \\
128 & 2 & 2 & 0.0406 & 0.0868 & 0.0225 & 0.0044 & 0.0113 & 0.0017 \\
128 & 4 & 4 & 0.0411 & 0.0886 & 0.0230 & 0.0044 & 0.0116 & 0.0017 \\
256 & 4 & 4 & 0.0420 & 0.0866 & 0.0240 & \textbf{0.0043} & 0.0113 & 0.0016 \\
512 & 4 & 4 & \textbf{0.0377} & 0.0878 & \textbf{0.0177} & \textbf{0.0043} & 0.0117 & \textbf{0.0013} \\
512 & 8 & 8 & 0.0399 & \textbf{0.0842} & 0.0224 & 0.0044 & \textbf{0.0107} & 0.0019 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the fertility probability target across Different Model Parameters for the convolutional Transformer model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_conv_transformer}
\end{table}
\end{landscape}
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Input-Length in Days} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& OV-Over Overall & OV-Over Before OV & OV-Over After OV & OV-Over Overall & OV-Over Before OV & OV-Over After OV \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\
\midrule
10 & 0.1218 & 0.1044 & 0.1223 & 0.0612 & 0.0289 & 0.0711 \\
20 & 0.1153 & \underline{\textbf{0.0745}} & 0.1312 & 0.0641 & \underline{\textbf{0.0212}} & 0.0822 \\
40 & 0.1066 & 0.0820 & 0.1128 & 0.0616 & 0.0281 & 0.0740 \\
80 & 0.1173 & 0.0842 & 0.1291 & 0.0647 & 0.0263 & 0.0801 \\
160 & \underline{0.1039} & 0.1139 & \underline{0.0973} & \underline{0.0557} & 0.0462 & \underline{0.0580} \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\
\midrule
10 & 0.1137 & 0.1006 & 0.1186 & 0.0618 & 0.0336 & 0.0740 \\
20 & 0.1204 & 0.0771 & 0.1366 & 0.0690 & \underline{0.0255} & 0.0864 \\
40 & \underline{\textbf{0.1017}} & 0.1409 & \underline{\textbf{0.0883}} & \underline{\textbf{0.0533}} & 0.0621 & \underline{\textbf{0.0520}} \\
80 & 0.1138 & \underline{0.0897} & 0.1234 & 0.0654 & 0.0356 & 0.0788 \\
160 & 0.1076 & 0.0959 & 0.1141 & 0.0606 & 0.0379 & 0.0714 \\
\midrule
\multicolumn{7}{c}{\textbf{Convolutional-LSTM}} \\
\midrule
10 & 0.1847 & 0.1878 & 0.1840 & 0.0819 & 0.0581 & 0.0949 \\
20 & 0.1493 & 0.1274 & 0.1562 & \underline{0.0699} & \underline{0.0389} & \underline{0.0833} \\
40 & \underline{0.1455} & \underline{0.1089} & \underline{0.1561} & 0.0722 & 0.0358 & 0.0852 \\
80 & 0.2327 & 0.1796 & 0.2507 & 0.1168 & 0.0686 & 0.1327 \\
160 & 0.2518 & 0.2040 & 0.2757 & 0.1293 & 0.0878 & 0.1503 \\
\midrule
\multicolumn{7}{c}{\textbf{Convolutional-Transformer}} \\
\midrule
10 & 0.1472 & 0.1053 & 0.1651 & 0.0768 & 0.0317 & 0.0966 \\
20 & 0.1530 & 0.1307 & 0.1637 & 0.0745 & 0.0443 & 0.0886 \\
40 & \underline{0.1448} & 0.1228 & \underline{0.1514} & \underline{0.0709} & 0.0435 & \underline{0.0820} \\
80 & 0.1685 & 0.1164 & 0.1889 & 0.0865 & 0.0345 & 0.1089 \\
160 & 0.2440 & \underline{0.1051} & 0.3117 & 0.1403 & \underline{0.0286} & 0.1946 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Architectures and Input Lengths at a fixed Input Resolution of 12 Values per Day.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:ov_over_results_by_window_length}
\end{table}
\end{landscape}
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Values Per Day} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& OV-Over Overall & OV-Over Before OV & OV-Over After OV & OV-Over Overall & OV-Over Before OV & OV-Over After OV \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\
\midrule
1 & 0.1691 & 0.1280 & 0.1819 & 0.0914 & 0.0411 & 0.1099 \\
2 & 0.1431 & 0.1239 & 0.1471 & 0.0747 & 0.0442 & 0.0849 \\
4 & 0.1344 & 0.1130 & 0.1417 & 0.0680 & 0.0371 & 0.0807 \\
12 & \underline{0.1153} & \underline{\textbf{0.0745}} & 0.1312 & 0.0641 & \underline{\textbf{0.0212}} & 0.0822 \\
24 & 0.1192 & 0.0975 & 0.1240 & \underline{0.0633} & 0.0288 & 0.0755 \\
48 & 0.1463 & 0.2493 & \underline{0.0973} & 0.0768 & 0.1203 & \underline{\textbf{0.0550}} \\
72 & 0.1587 & 0.1113 & 0.1844 & 0.0857 & 0.0341 & 0.1126 \\
288 & 0.1353 & 0.1801 & 0.1169 & 0.0726 & 0.0799 & 0.0713 \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\
\midrule
1 & 0.1687 & 0.1582 & 0.1709 & 0.0883 & 0.0578 & 0.0996 \\
2 & 0.1469 & 0.0895 & 0.1676 & 0.0823 & 0.0260 & 0.1044 \\
4 & 0.1282 & 0.0999 & 0.1393 & 0.0704 & 0.0329 & 0.0862 \\
12 & 0.1204 & \underline{0.0771}& 0.1366 & 0.0690 & \underline{0.0255}& 0.0864 \\
24 & 0.1952 & 0.1649 & 0.2102 & 0.0904 & 0.0638 & 0.1040 \\
48 & 0.1137 & 0.1159 & 0.1073 & 0.0610 & 0.0480 & 0.0629 \\
72 & \underline{\textbf{0.1041}}& 0.1180 & \underline{\textbf{0.0947}}& \underline{\textbf{0.0585}}& 0.0538 & 0.0581 \\
288 & 0.1319 & 0.1879 & 0.1097 & 0.0617 & 0.0769 & \underline{0.0578}\\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Architectures and Input Resolutions at a fixed Input-Window-Length of 20 Days.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:ov_over_results_by_resolution}
\end{table}
\end{landscape}
\begin{landscape}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.2253 & 0.1353 & 0.2735 & 0.1196 & 0.0397 & 0.1621 \\
32 & 1 & 0.1746 & 0.1255 & 0.2005 & 0.0860 & 0.0404 & 0.1109 \\
32 & 2 & 0.1349 & 0.1240 & 0.1399 & 0.0674 & 0.0396 & 0.0786 \\
64 & 2 & 0.1270 & 0.0943 & 0.1365 & 0.0645 & 0.0292 & 0.0772 \\
128 & 2 & 0.1151 & \textbf{0.0861} & 0.1243 & 0.0626 & \textbf{0.0274} & 0.0755 \\
128 & 4 & 0.1326 & 0.1064 & 0.1407 & 0.0658 & 0.0291 & 0.0811 \\
256 & 4 & 0.1353 & 0.1111 & 0.1407 & 0.0662 & 0.0360 & 0.0765 \\
512 & 4 & \textbf{0.1120} & 0.1358 & \textbf{0.0983} & \textbf{0.0616} & 0.0603 & \textbf{0.0613} \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the LSTM model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{9}{c}{\textbf{Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.4792 & 0.5280 & 0.4675 & 0.2336 & 0.2820 & 0.2220 \\
32 & 1 & 1 & 0.4406 & 0.4572 & 0.4417 & 0.2046 & 0.2179 & 0.2068 \\
64 & 1 & 1 & 0.3614 & 0.3411 & 0.3796 & 0.1696 & 0.1604 & 0.1800 \\
64 & 2 & 2 & 0.1532 & \textbf{0.0810} & 0.1913 & 0.0904 & 0.0302 & 0.1214 \\
128 & 2 & 2 & 0.1476 & 0.0979 & 0.1739 & 0.0816 & 0.0332 & 0.1064 \\
128 & 4 & 4 & \textbf{0.1114} & 0.0887 & 0.1236 & 0.0668 & 0.0368 & 0.0821 \\
256 & 4 & 4 & 0.1310 & 0.0920 & 0.1433 & 0.0722 & \textbf{0.0293} & 0.0876 \\
512 & 4 & 4 & 0.1222 & 0.1047 & 0.1261 & 0.0610 & 0.0321 & 0.0708 \\
512 & 8 & 8 & 0.1126 & 0.1965 & \textbf{0.0753} & \textbf{0.0543} & 0.0868 & \textbf{0.0410} \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the Transformer model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_transformer}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.2920 & 0.2198 & 0.3344 & 0.1264 & 0.0602 & 0.1653 \\
32 & 1 & 0.2141 & 0.1598 & 0.2377 & 0.0912 & 0.0398 & 0.1149 \\
32 & 2 & 0.1990 & 0.1556 & 0.2135 & 0.0852 & 0.0419 & 0.1025 \\
64 & 2 & 0.1743 & 0.1345 & 0.1845 & 0.0789 & 0.0400 & 0.0923 \\
128 & 2 & 0.1524 & 0.1138 & 0.1633 & 0.0717 & \textbf{0.0357} & 0.0845 \\
128 & 4 & 0.1579 & 0.1185 & 0.1670 & 0.0777 & 0.0401 & 0.0894 \\
256 & 4 & \textbf{0.1424} & 0.1425 & \textbf{0.1369} & \textbf{0.0687} & 0.0546 & \textbf{0.0715} \\
512 & 4 & 0.1436 & \textbf{0.1166} & 0.1523 & 0.0699 & 0.0382 & 0.0820 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the convolutional LSTM model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_conv_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.3759 & 0.3602 & 0.3855 & 0.1597 & 0.1498 & 0.1659 \\
32 & 1 & 1 & 0.1757 & 0.1119 & 0.2017 & 0.0916 & 0.0314 & 0.1167 \\
64 & 1 & 1 & 0.2771 & 0.2395 & 0.2978 & 0.1303 & 0.1133 & 0.1402 \\
64 & 2 & 2 & 0.1610 & 0.1149 & 0.1777 & 0.0816 & \textbf{0.0310} & 0.1021 \\
128 & 2 & 2 & 0.1501 & 0.0997 & 0.1725 & 0.0783 & 0.0316 & 0.0991 \\
128 & 4 & 4 & 0.1668 & 0.1472 & 0.1758 & 0.0801 & 0.0488 & 0.0953 \\
256 & 4 & 4 & 0.1529 & 0.1317 & 0.1597 & 0.0742 & 0.0435 & 0.0861 \\
512 & 4 & 4 & \textbf{0.1495} & 0.1298 & \textbf{0.1551} & \textbf{0.0703} & 0.0409 & \textbf{0.0814} \\
512 & 8 & 8 & 0.1576 & \textbf{0.1025} & 0.1848 & 0.0825 & 0.0339 & 0.1066 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the convolutional Transformer model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_conv_transformer}
\end{table}
\end{landscape}
+12 -1
View File
@@ -4,6 +4,12 @@
\section{Discussion}\label{sec:discussion}
\paragraph{Limitations.}
This analysis reports aggregate test-set metrics without uncertainty quantification.
Because we did not retain per-user predictions, we cannot compute user-level bootstrap confidence intervals or perform paired significance testing.
As a result, apparent performance differences—especially small ones—may reflect sampling variability.
Future re-evaluation that stores per-user predictions will enable user-level bootstrapping, calibration assessment, and formal comparisons.
%In this study, we investigated the performance of different machine learning architectures on the task of fertility prediction,
%with the aim to find a model that performs well for natural family planning and natural contraception on regular and irregular cycles.
%
@@ -23,6 +29,8 @@
%Results do not show any clear indication that the temperature contains any patterns useful for the prediction of
%fertility or the ovulation.
% regarding the different performance increases on historical contexts: It might have been useful to take a closer look
% at the characteristics / differences for users with many cycles available
% talk about whether bbt / temperature can be used for such a task, discuss bbt doubt papers
% While previous work has argued against the predictive value of BBT~\cite{some_author_2010}, our findings suggest otherwise.
@@ -77,4 +85,7 @@ Alternatively, a custom architecture could be developed to better reflect the do
Future work may incorporate more advanced hyperparameter optimization techniques,
such as Bayesian Optimization, Genetic Algorithms, or Neural Architecture Search (NAS),
to better explore the joint parameter space in a more efficient and principled manner.
to better explore the joint parameter space in a more efficient and principled manner.
% add improvements in experiments / comparison
% add better decision base
+5
View File
@@ -703,6 +703,11 @@ but the Fertility-Overall MSE was only marginally better for a shorter window, w
This selection process was applied to all tested parameters—input window length, input resolution, and model complexity.
The resulting configurations were then used in the irregular cycles study and the use case evaluation.
\paragraph{Uncertainty estimation.}
We report point estimates on a held-out test set.
Because per-user (or per-cycle/day) predictions were not retained, we cannot compute confidence intervals or paired significance tests.
All model comparisons are therefore descriptive rather than inferential.
\subsubsection{Regular and Irregular Cycles}\label{subsubsec:methodology_regular_and_irregular_cycles}
A perfectly regular menstrual pattern does not require a sophisticated algorithm to predict ovulation—
+336 -565
View File
@@ -3,598 +3,315 @@
\section{Results}\label{sec:results}
We summarize the main findings from our modeling experiments,
beginning with overall model performance across architectures,
followed by a detailed analysis of the individual architectures' performances for irregular and regular cycles and the use cases
introduced in the last section.
These results will also be compared with the three baseline methods to evaluate their performance versus less sophisticated methods.
We summarize the main findings from our modeling experiments, beginning with overall model performance across architectures.
We then provide a detailed analysis of model performance for irregular and regular cycles, as well as for
the pregnancy and contraception use-cases described earlier.
Additionally, these results will be compared to those of the three baseline methods to evaluate the benefit of more advanced modeling approaches.
We report results for two targets: (i) fertility probability and (ii) an indicator that ovulation has already occurred (OV-Over).
Unless stated otherwise, \textbf{MSE} is the primary metric (equivalent to the Brier score for probabilistic targets),
and \textbf{MAE} is secondary.
We first summarize overall performance across architectures, then analyze sensitivity to input window length,
input resolution, and model capacity.
Finally, we compare the best configurations to three baselines and present stratified and use-case analyses.
\subsection{Overall Model Performance Across Architectures}\label{subsec:overall_model_performance_across_architectures}
We evaluated multiple model architectures to compare their effectiveness in predicting the fertility-probability and ovulation-over targets.
We evaluated multiple model architectures to compare their effectiveness in predicting the fertility probability and ovulation-over targets.
Based on these results, we selected the best-performing configuration for each architecture for further analysis.
All metrics below are point estimates without uncertainty bounds; differences between models should be interpreted descriptively.
\subsubsection{Fertility-Probability Prediction}\label{subsec:fertility_probability_prediction}
This section examines model performance in predicting the probability of fertility,
focusing on the effects of input window length, input resolution, and key architecture parameters.
\paragraph{Impact of Input Window Length:}\label{subsubsec:fert_impact_of_historical_context}
Table~\ref{tab:fertility_results_by_window_length} summarizes the effect of varying the input sequence length on model performance for the fertility-probability target.
Across all architectures, no single window length consistently outperformed others across all metrics.
\paragraph{Impact of input window length.}
Across architectures, the optimal context is model-dependent.
Intermediate windows (2040\,days) often minimize overall error, with the \textbf{Convolutional Transformer}
achieving the best withing grid at 40\,days (MAE 0.0376; MSE 0.0041).
The \textbf{LSTM} benefits from long context (160\,days: overall MAE 0.0378; MSE 0.0043) and ties the
global-best fertile-day MSE (0.0102), whereas the lowest non-fertile-day MSE occurs at 20\,days (0.0013; LSTM/Convolutional LSTM).
For the \textbf{Transformer}, overall MAE is lowest at 160\,days (0.0411), fertile-day error at 80\,days (MAE 0.0859; MSE 0.0108),
and non-fertile-day MSE at 160\,days (0.0016).
The \textbf{Convolutional LSTM} peaks at 40\,days (MAE 0.0394; MSE 0.0045), with non-fertile-day MSE best at 20\,days (0.0013).
Table~\ref{tab:fertility_windows_compact_mse} shows the compact results for the different architectures,
full grids (incl.\ MAE) are in Appendix, Table~\ref{tab:fertility_results_by_window_length}.
For the \textbf{LSTM}, the longest input (160~days) yielded the lowest overall MAE (0.0378) and the best
fertile-day performance (MAE~$=0.0834$, MSE~$=0.0102$), while shorter sequences tended to perform slightly worse
, particularly for fertile-day prediction.
Non-fertile day performance was best at 20~days (MSE~$=0.0013$).
In the \textbf{Transformer}, the optimal MAE for overall fertility occurred at 160~days (0.0411),
but the lowest fertile-day error was achieved at 80~days (MAE~$=0.0859$).
The best non-fertile-day performance was seen with 160~days (MSE~$=0.0016$).
\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]{Fertile-day best\\(days / MSE)}
& \shortstack[c]{Non-fertile-day best\\(days / MSE)} \\
\midrule
LSTM
& 160 / 0.0043
& \textbf{160 / 0.0102}
& \textbf{20 / 0.0013} \\
Transformer
& 40 / 0.0044
& 80 / 0.0108
& 160 / 0.0016 \\
Convolutional LSTM
& 40 / 0.0045
& 40 / 0.0122
& \textbf{20 / 0.0013} \\
Convolutional Transformer
& \textbf{40 / 0.0041}
& \textbf{20 / 0.0102}
& 10, 40 / 0.0015 \\
\bottomrule
\end{tabularx}
\caption{Fertility probability: best input window per architecture (MSE only) at a fixed input resolution of 12 values/day.
Bold entries are bests within a column; ties are shown with commas.
Full grid (incl.\ MAE) in Appendix, Table~\ref{tab:fertility_results_by_window_length}.}
\label{tab:fertility_windows_compact_mse}
\end{table}
For the \textbf{Convolution-LSTM}, the shortest windows generally underperformed, with the best overall MAE (0.0394) and MSE (0.0045) obtained at 40~days.
Fertile-day metrics were optimal at 40~days as well, while non-fertile-day performance peaked at 20~days (MSE~$=0.0013$).
\paragraph{Impact of input resolution.}
We vary input resolution at a fixed 20\,day window and exclude convolutional architectures (they consume the full 288 values/day and learn downsampling internally).
For \textbf{LSTM}, overall MAE is lowest at 48 values/day (0.0402), while overall MSE is globally best at 4/day (0.0046).
Fertile-day errors are minimized at 288/day (MAE 0.0872; MSE 0.0110, best within grid), whereas non-fertile days are best at 12/day (MAE 0.0180; MSE 0.0013, both within grid).
For the \textbf{Transformer}, overall MAE is lowest at 48/day (0.0447); overall MSE ties at 48 and 288/day (0.0048).
Its fertile-day best is at 4/day (MAE 0.0891; MSE 0.0115), and non-fertile-day bests occur at 48/day (MAE 0.0254) and 72/day (MSE 0.0014).
In summary, intermediate resolutions (448/day) tend to minimize overall error, while an extreme (288/day) benefits LSTM on fertile-day performance.
Table~\ref{tab:fertility_resolution_compact_mse} shows the condensed results per architecture,
full grids (incl.\ MAE) are in Appendix, Table~\ref{tab:fertility_results_by_window_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]{Fertile-day best\\(values/day / MSE)}
& \shortstack[c]{Non-fertile-day best\\(values/day / MSE)} \\
\midrule
LSTM
& \textbf{4 / 0.0046}
& \textbf{288 / 0.0110}
& \textbf{12 / 0.0013} \\
Transformer
& 48, 288 / 0.0048
& 4 / 0.0115
& 72 / 0.0014 \\
\bottomrule
\end{tabularx}
\caption{Fertility probability: best input resolution per architecture (MSE only) at a fixed input-window length of 20\,days.
Bold entries are bests within a column; ties are shown with commas. Convolutional models are excluded (fixed at 288/day).}
\label{tab:fertility_resolution_compact_mse}
\end{table}
The \textbf{Convolution-Transformer} achieved the global best MAE (0.0376) and MSE (0.0041) for overall fertility at 40~days,
indicating that intermediate historical context was most effective for this architecture.
Fertile-day performance was strongest at 20~days (MSE~$=0.0102$), while non-fertile-day predictions benefited from shorter inputs (10 or 40~days).
\paragraph{Impact of model parameters.}
At fixed input settings (LSTM/Transformer: 160\,days, 12 values/day; Convolutional models: 40\,days),
larger capacities generally improve performance.
For \textbf{LSTM}, the best overall MSE is at \(512\times4\) (Hidden Layer Size, Number of LSTM Layers) (0.0047),
with the lowest fertile-day MSE also at \(512\times4\) (0.0122); the best non-fertile-day MSE occurs at \(256\times4\) (\,0.0011\,).
For the \textbf{Transformer}, overall MSE is minimized at \(512\times4\times4\) (Size of Embeddings, Number of Encoders, Number of Attention Heads)
(0.0043), fertile-day MSE at the same setting (0.0103), and non-fertile-day MSE at \(512\times8\times8\) (\,0.0011\,).
For the \textbf{Convolutional LSTM}, \(256\times4\) (Hidden Layer Size, Number of LSTM Layers) yields the lowest overall MSE (0.0042)
and the global-best fertile-day MSE (0.0100), while several smaller settings tie for the best non-fertile-day MSE (0.0016).
For the \textbf{Convolutional Transformer}, overall MSE ties at \(256\times4\times4\) and \(512\times4\times4\)
(Size of Embeddings, Number of Encoders, Number of Attention Heads) (\,0.0043\,);
fertile-day MSE is best at \(512\times8\times8\) (0.0107), and the non-fertile-day MSE is minimized at \(512\times4\times4\) (0.0013).
Table~\ref{tab:fertility_params_compact_mse} shows the compact results for the parameter search per architecture,
full parameter grids (incl.\ MAE) are in Appendix, Tables~\ref{tab:fertility_results_by_model_parameters_lstm}\ref{tab:fertility_results_by_model_parameters_conv_transformer}.
Overall, results suggest that the optimal input length is architecture-dependent, with intermediate windows (20--40~days)
frequently yielding competitive or best performance, while extremely long sequences (160~days) only benefited certain architectures such as the LSTM\@.
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Input-Length in Days} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& Fertility Overall & Fertile Days & Non-Fertile Days & Fertility Overall & Fertile Days & Non-Fertile Days \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\ \midrule
10 & 0.0399 & 0.0857 & 0.0212 & 0.0045 & 0.0105 & 0.0021 \\
20 & 0.0421 & 0.0994 & 0.0180 & 0.0052 & 0.0144 & \underline{\textbf{0.0013}} \\
40 & 0.0406 & 0.0938 & 0.0184 & 0.0049 & 0.0128 & 0.0016 \\
80 & 0.0420 & 0.1006 & \underline{\textbf{0.0176}} & 0.0053 & 0.0147 & 0.0014 \\
160 & \underline{0.0378} & \underline{\textbf{0.0834}} & 0.0192 & \underline{0.0043} & \underline{\textbf{0.0102}} & 0.0019 \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\ \midrule
10 & 0.0443 & 0.0868 & 0.0273 & 0.0046 & 0.0110 & 0.0021 \\
20 & 0.0472 & 0.0949 & 0.0274 & 0.0051 & 0.0133 & 0.0018 \\
40 & 0.0413 & 0.0861 & 0.0233 & \underline{0.0044} & 0.0111 & 0.0017 \\
80 & 0.0437 & \underline{0.0859} & 0.0269 & 0.0045 & \underline{0.0108} & 0.0021 \\
160 & \underline{0.0411} & 0.0882 & \underline{0.0218} & 0.0045 & 0.0116 & \underline{0.0016} \\
\midrule
\multicolumn{7}{c}{\textbf{Convolution-LSTM}} \\ \midrule
10 & 0.0435 & 0.0954 & 0.0224 & 0.0050 & 0.0133 & 0.0017 \\
20 & 0.0414 & 0.0996 & \underline{0.0179} & 0.0050 & 0.0145 & \underline{\textbf{0.0013}} \\
40 & \underline{0.0394} & \underline{0.0911} & 0.0184 & \underline{0.0045} & \underline{0.0122} & 0.0014 \\
80 & 0.0481 & 0.1005 & 0.0278 & 0.0054 & 0.0146 & 0.0019 \\
160 & 0.0505 & 0.1067 & 0.0290 & 0.0060 & 0.0166 & 0.0020 \\
\midrule
\multicolumn{7}{c}{\textbf{Convolution-Transformer}} \\ \midrule
10 & 0.0459 & 0.0962 & 0.0256 & 0.0049 & 0.0136 & \underline{0.0015} \\
20 & 0.0423 & \underline{0.0848} & 0.0257 & 0.0045 & \underline{\textbf{0.0102}} & 0.0022 \\
40 & \underline{\textbf{0.0376}} & 0.0854 & \underline{0.0186} & \underline{\textbf{0.0041}} & 0.0108 & \underline{0.0015} \\
80 & 0.0414 & 0.0932 & 0.0210 & 0.0048 & 0.0128 & 0.0018 \\
160 & 0.0523 & 0.1018 & 0.0337 & 0.0059 & 0.0148 & 0.0026 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Architectures and Input Lengths on a fixed Input Resolution of 12 Values per Day.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:fertility_results_by_window_length}
\end{table}
\end{landscape}
\paragraph{Impact of Input Resolution:}\label{subsubsec:fert_impact_of_input_resolution}
Table~\ref{tab:fertility_results_by_window_resolution} shows the effect of varying the input resolution (values per day)
on model performance for the fertility-probability target.
Note, that the convolutional models are not included here, as they have their own learned input representation via convolution.
No single resolution consistently outperformed others across all metrics, and optimal settings varied by architecture.
For the \textbf{LSTM}, the lowest overall MAE (0.0402) was obtained at 48~values/day, while the best overall MSE (0.0046) occurred at 4~values/day.
Fertile-day performance was optimal at 288~values/day (MAE~$=0.0872$, MSE~$=0.0110$), and non-fertile-day metrics were best at
12~values/day (MAE~$=0.0180$, MSE~$=0.0013$), both of which represent the global best values for these categories.
In the \textbf{Transformer}, the lowest overall MAE (0.0447) occurred at 48~values/day, while the best overall MSE (0.0048) was shared between 48~and 288~values/day.
Fertile-day performance peaked at 4~values/day (MAE~$=0.0891$, MSE~$=0.0115$),
whereas non-fertile-day metrics were best at 48~values/day (MAE~$=0.0254$) and 72~values/day (MSE~$=0.0014$).
Overall, the results indicate that intermediate input resolutions (4--48~values/day) often yielded the best overall performance,
while extreme resolutions (1 or 288~values/day) only benefited specific metrics such as fertile-day prediction for the LSTM\@.
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Values Per Day} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& Fertility Overall & Fertile Days & Non-Fertile Days & Fertility Overall & Fertile Days & Non-Fertile Days \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\
\midrule
1 & 0.0471 & 0.0987 & 0.0220 & 0.0062 & 0.0145 & 0.0022 \\
2 & 0.0457 & 0.0962 & 0.0231 & 0.0052 & 0.0133 & 0.0016 \\
4 & 0.0421 & 0.0898 & 0.0223 & \underline{\textbf{0.0046}}& 0.0116 & 0.0018 \\
12 & 0.0421 & 0.0994 & \underline{\textbf{0.0180}}& 0.0052 & 0.0144 & \underline{\textbf{0.0013}}\\
24 & 0.0419 & 0.0949 & 0.0201 & 0.0050 & 0.0132 & 0.0017 \\
48 & \underline{\textbf{0.0402}}& 0.0929 & 0.0182 & 0.0049 & 0.0126 & 0.0018 \\
72 & 0.0433 & 0.0972 & 0.0216 & 0.0052 & 0.0137 & 0.0018 \\
288 & 0.0410 & \underline{\textbf{0.0872}}& 0.0223 & 0.0049 & \underline{\textbf{0.0110}}& 0.0025 \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\
\midrule
1 & 0.0541 & 0.1015 & 0.0313 & 0.0063 & 0.0146 & 0.0023 \\
2 & 0.0468 & 0.0946 & 0.0259 & 0.0054 & 0.0128 & 0.0021 \\
4 & 0.0456 & \underline{0.0891}& 0.0277 & 0.0050 & \underline{0.0115}& 0.0023 \\
12 & 0.0472 & 0.0949 & 0.0274 & 0.0051 & 0.0133 & 0.0018 \\
24 & 0.0502 & 0.0960 & 0.0323 & 0.0052 & 0.0133 & 0.0021 \\
48 & 0.0447 & 0.0912 & \underline{0.0254}& \underline{0.0048}& 0.0122 & 0.0017 \\
72 & 0.0468 & 0.0975 & 0.0257 & 0.0051 & 0.0140 & \underline{0.0014} \\
288 & \underline{0.0449}& 0.0937 & 0.0257 & \underline{0.0048}& 0.0128 & 0.0017 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Architectures and Input Resolutions on a fixed Input-Window-Length of 20 Days.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:fertility_results_by_window_resolution}
\end{table}
\end{landscape}
\paragraph{Impact of Model Parameters:}\label{subsubsec:fert_impaoct_of_model_parameters}
Tables~\ref{tab:fertility_results_by_model_parameters_lstm}--\ref{tab:fertility_results_by_model_parameters_conv_transformer} report
the results of the model parameter search across all architectures.
Each table shows the effect of varying hidden layer size and number of LSTM layers (for recurrent models),
or embedding size, number of encoder layers, and attention heads (for Transformer-based models).
For the \textbf{LSTM}, performance improved with increasing hidden layer size,
reaching the best overall values at 512 units with four layers (MAE~$=0.0399$, MSE~$=0.0047$). The lowest fertile-day errors were also
observed in this configuration, while non-fertile-day performance peaked at 256 units (MAE~$=0.0175$, MSE~$=0.0011$).
In the \textbf{Transformer}, larger embeddings and deeper networks generally improved performance.
The best overall MAE (0.0395) was achieved with a 512-dimensional embedding, eight encoder layers, and eight attention heads.
The lowest fertile-day errors occurred with a 512-dimensional embedding and four layers (MAE~$=0.0831$,
MSE~$=0.0103$), whereas non-fertile-day performance was strongest at 512~×~8 (MAE~$=0.0159$, MSE~$=0.0011$).
For the \textbf{Convolution-LSTM}, the best overall configuration was 256 hidden units with four layers,
yielding the lowest overall MSE (0.0042) and fertile-day MSE (0.0100).
Increasing to 512 units slightly reduced overall MAE (0.0380) and non-fertile-day MAE (0.0184).
In the \textbf{Convolution-Transformer}, the optimal configuration used a 512-dimensional embedding with four encoder layers and four attention heads,
achieving the best overall MAE (0.0377) and non-fertile-day performance (MAE~$=0.0177$, MSE~$=0.0013$).
Fertile-day prediction was strongest with eight encoder layers (MAE~$=0.0842$, MSE~$=0.0107$).
Taken together, these results indicate that larger model capacities generally improved performance across all architectures,
with the best configurations typically found at the higher end of the tested parameter ranges.
\begin{landscape}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.0485 & 0.1050 & 0.0252 & 0.0059 & 0.0161 & 0.0016 \\
32 & 1 & 0.0477 & 0.1029 & 0.0248 & 0.0057 & 0.0155 & 0.0016 \\
32 & 2 & 0.0458 & 0.0922 & 0.0269 & 0.0052 & \textbf{0.0122} & 0.0024 \\
64 & 2 & 0.0447 & 0.0925 & 0.0250 & 0.0051 & 0.0123 & 0.0021 \\
128 & 2 & 0.0424 & 0.0951 & 0.0201 & 0.0051 & 0.0131 & 0.0018 \\
128 & 4 & 0.0427 & 0.0989 & 0.0191 & 0.0053 & 0.0145 & 0.0014 \\
256 & 4 & 0.0433 & 0.1050 & \textbf{0.0175} & 0.0055 & 0.0161 & \textbf{0.0011} \\
512 & 4 & \textbf{0.0399} & \textbf{0.0911} & 0.0189 & \textbf{0.0047} & \textbf{0.0122} & 0.0016 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Parameters for the LSTM model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{9}{c}{\textbf{Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.0708 & 0.1262 & 0.0475 & 0.0084 & 0.0227 & 0.0024 \\
32 & 1 & 1 & 0.0599 & 0.1163 & 0.0378 & 0.0070 & 0.0196 & 0.0019 \\
64 & 1 & 1 & 0.0601 & 0.1178 & 0.0373 & 0.0071 & 0.0200 & 0.0020 \\
64 & 2 & 2 & 0.0477 & 0.0908 & 0.0301 & 0.0049 & 0.0121 & 0.0020 \\
128 & 2 & 2 & 0.0449 & 0.0904 & 0.0263 & 0.0047 & 0.0119 & 0.0017 \\
128 & 4 & 4 & 0.0461 & 0.0979 & 0.0247 & 0.0050 & 0.0143 & 0.0013 \\
256 & 4 & 4 & 0.0475 & 0.0919 & 0.0293 & 0.0048 & 0.0125 & 0.0017 \\
512 & 4 & 4 & 0.0403 & \textbf{0.0831} & 0.0229 & \textbf{0.0043} & \textbf{0.0103} & 0.0018 \\
512 & 8 & 8 & \textbf{0.0395} & 0.0967 & \textbf{0.0159} & 0.0048 & 0.0139 & \textbf{0.0011} \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Parameters for the Transformer model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_transformer}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.0487 & 0.1029 & 0.0264 & 0.0056 & 0.0154 & \textbf{0.0016} \\
32 & 1 & 0.0461 & 0.0956 & 0.0266 & 0.0050 & 0.0133 & 0.0017 \\
32 & 2 & 0.0448 & 0.0975 & 0.0232 & 0.0051 & 0.0139 & \textbf{0.0016} \\
64 & 2 & 0.0432 & 0.0921 & 0.0241 & 0.0048 & 0.0123 & 0.0019 \\
128 & 2 & 0.0400 & 0.0895 & 0.0204 & 0.0045 & 0.0119 & \textbf{0.0016} \\
128 & 4 & 0.0398 & 0.0871 & 0.0204 & 0.0044 & 0.0113 & \textbf{0.0016} \\
256 & 4 & 0.0389 & \textbf{0.0826} & 0.0209 & \textbf{0.0042} & \textbf{0.0100} & 0.0018 \\
512 & 4 & \textbf{0.0380} & 0.0869 & \textbf{0.0184} & 0.0044 & 0.0112 & 0.0017 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Parameters for the convolutional LSTM model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_conv_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.0574 & 0.1005 & 0.0427 & 0.0061 & 0.0146 & 0.0032 \\
32 & 1 & 1 & 0.0462 & 0.0963 & 0.0266 & 0.0051 & 0.0135 & 0.0018 \\
64 & 1 & 1 & 0.0546 & 0.1006 & 0.0379 & 0.0059 & 0.0145 & 0.0027 \\
64 & 2 & 2 & 0.0427 & 0.0903 & 0.0237 & 0.0046 & 0.0118 & 0.0018 \\
128 & 2 & 2 & 0.0406 & 0.0868 & 0.0225 & 0.0044 & 0.0113 & 0.0017 \\
128 & 4 & 4 & 0.0411 & 0.0886 & 0.0230 & 0.0044 & 0.0116 & 0.0017 \\
256 & 4 & 4 & 0.0420 & 0.0866 & 0.0240 & \textbf{0.0043} & 0.0113 & 0.0016 \\
512 & 4 & 4 & \textbf{0.0377} & 0.0878 & \textbf{0.0177} & \textbf{0.0043} & 0.0117 & \textbf{0.0013} \\
512 & 8 & 8 & 0.0399 & \textbf{0.0842} & 0.0224 & 0.0044 & \textbf{0.0107} & 0.0019 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Parameters for the convolutional Transformer model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:fertility_results_by_model_parameters_conv_transformer}
\end{table}
\end{landscape}
\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]{Fertile-day best\\(params / MSE)}
& \shortstack[c]{Non-fertile-day best\\(params / MSE)} \\
\midrule
LSTM
& \(512\times4\) / 0.0047
& \(512\times4\) / 0.0122
& \textbf{\(256\times4\) / 0.0011} \\
Transformer
& \textbf{\(512\times4\times4\) / 0.0043}
& \(512\times4\times4\) / 0.0103
& \textbf{\(512\times8\times8\) / 0.0011} \\
Convolutional LSTM
& \(256\times4\) / 0.0042
& \textbf{\(256\times4\) / 0.0100}
& \(16\times1,\,32\times2,\,128\times2,\,128\times4\) / 0.0016 \\
Convolutional Transformer
& \textbf{\(256\times4\times4,\,512\times4\times4\) / 0.0043}
& \(512\times8\times8\) / 0.0107
& \(512\times4\times4\) / 0.0013 \\
\bottomrule
\end{tabularx}
\caption{Fertility probability: 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 entries are bests within a column; ties are shown with commas.
Fixed input settings: 160\,days with 12 values/day for LSTM/Transformer; 40\,days for convolutional models.}
\label{tab:fertility_params_compact_mse}
\end{table}
\subsubsection{Ovulation-Over Prediction}\label{subsubsec:ov_over_prediction}
This section examines model performance in predicting the indicator for a passed ovulation, with attention to the influence of input window length,
the input resolution and the individual model architecture parameters.
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:}\label{subsubsec:ov_over_impact_of_historical_context}
\paragraph{Impact of input window length.}
At a fixed input resolution of 12 values/day, the optimal window length for OV-Over is architecture- and phase-dependent.
The \textbf{Transformer} achieves the best overall and after-ovulation errors at 40\,days
(MAE 0.1017; MSE 0.0533 overall; MAE 0.0883; MSE 0.0520 after-OV).
The \textbf{LSTM} benefits from long context (160\,days: overall MAE 0.1039; MSE 0.0557; after-OV MSE 0.0580)
but attains the best before-ovulation scores at 20\,days (MAE 0.0745; MSE 0.0212).
For the \textbf{Convolutional LSTM}, short/intermediate windows work best (2040\,days):
overall MSE 0.0699 at 20\,days; before-OV MSE 0.0389 and after-OV MSE 0.0833 at 20\,days.
The \textbf{Convolutional Transformer} peaks overall at 40\,days (MSE 0.0709; after-OV MSE 0.0820),
with its best before-OV MSE at 160\,days (0.0286).
In summary, \textit{intermediate} windows (2040\,days) are often optimal—especially
pre-ovulation—while \textit{long} windows (160\,days) can improve post-ovulation for LSTM (and Convolutional Transformer before-OV MSE).
Table~\ref{tab:ovover_windows_compact_mse} shows the compact results per architecture,
full parameter grids (incl.\ MAE) are in Appendix, Tables~\ref{tab:ov_over_results_by_window_length}.
Table~\ref{tab:ov_over_results_by_window_length} reports the impact of input sequence length on performance for the ovulation-over target.
The optimal length varied across architectures and prediction phases.
\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}
For the \textbf{LSTM}, the best overall MAE (0.1039) and MSE (0.0557) were obtained with 160~days,
which also gave the lowest after-ovulation errors (MAE~$=0.0973$, MSE~$=0.0580$). However, the best before-ovulation
performance occurred at 20~days (MAE~$=0.0745$, MSE~$=0.0212$), which were the global bests for this phase.
\paragraph{Impact of input resolution.}
With the window fixed at 20\,days, optimal resolution for OV-Over is architecture- and phase-specific.
For \textbf{LSTM}, overall MAE is lowest at 12/day (0.1153) and overall MSE at 24/day (0.0633);
the \emph{before-ovulation} MSE reaches the best within grid at 12/day (0.0212) and
the \emph{after-ovulation} MSE reaches the best within grid at 48/day (0.0550).
For the \textbf{Transformer}, both overall MAE (0.1041) and overall MSE achieve bests within grid at 72/day (0.0585),
with the best before-OV MSE at 12/day (0.0255) and the best after-OV MSE at 288/day (0.0578).
Overall, intermediate resolutions (1272/day) tend to minimize overall error; 12/day favors pre-ovulation,
while 4872/day improves post-ovulation, with 288/day giving a modest after-OV edge for the Transformer.
Table~\ref{tab:ovover_resolution_compact_mse} shows the condensed results per architecture,
full grids (incl.\ MAE) are in Appendix, Table~\ref{tab:ov_over_results_by_resolution}.
In the \textbf{Transformer}, 40~days yielded the lowest overall MAE (0.1017) and MSE (0.0533),
as well as the lowest after-ovulation errors (MAE~$=0.0883$, MSE~$=0.0520$), all of which were global bests.
The best before-ovulation results were achieved at 80~days (MAE~$=0.0897$) and 20~days (MSE~$=0.0255$).
\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}
For the \textbf{Convolution-LSTM}, the shortest effective length was 40~days,
which achieved the lowest overall MAE (0.1455) and before-ovulation MAE (0.1089).
The best overall MSE (0.0699) and before-ovulation MSE (0.0389) were observed at 20~days.
After-ovulation errors were smallest at 20~days (MSE~$=0.0833$) and 40~days (MAE~$=0.1561$).
\paragraph{Impact of model parameters.}
At fixed input settings (LSTM/Transformer: 160 days with 12 values/day; Convolutional models: 40 days),
larger capacities generally improve OV-Over performance.
For \textbf{LSTM}, the best overall MSE is at \(512\times4\) (Hidden Layer Size, Number of LSTM Layers)
(0.0616) with the global-best \emph{before-OV} MSE at \(128\times2\) (0.0274) and the best \emph{after-OV} MSE at \(512\times4\) (0.0613).
For the \textbf{Transformer}, scaling to \(512\times8\times8\) (Size of Embeddings, Number of Encoders, Number of Attention Heads)
yields the global-best overall MSE (0.0543) and \emph{after-OV} MSE (0.0410); the best \emph{before-OV} MSE is at \(256\times4\times4\) (0.0293).
For the \textbf{Convolutional LSTM}, \(256\times4\) (Hidden Layer Size, Number of LSTM Layers) minimizes
overall (0.0687) and \emph{after-OV} MSE (0.0715), while \(128\times2\) is best \emph{before-OV} (0.0357).
For the \textbf{Convolutional Transformer}, \(512\times4\times4\) (Size of Embeddings, Number of Encoders, Number of Attention
Heads) is best overall (0.0703) and \emph{after-OV} (0.0814), with \(512\times8\times8\) best \emph{before-OV} (0.0339).
Table~\ref{tab:ovover_params_compact_mse} shows the compact results for the parameter search per architecture,
full parameter grids (incl.\ MAE) are in Appendix, Tables~\ref{tab:ov_over_results_by_model_parameters_lstm}\ref{tab:ov_over_results_by_model_parameters_conv_transformer}.
In the \textbf{Convolution-Transformer}, the best overall MAE (0.1448) and MSE (0.0709) occurred at 40~days,
which also minimized after-ovulation MAE (0.1514) and MSE (0.0820).
The best before-ovulation performance came from 160~days for MAE (0.1051) and 10~days for MSE (0.0317).
Overall, intermediate input lengths (20--40~days) were often optimal, particularly for before-ovulation prediction,
while longer sequences (160~days) occasionally improved after-ovulation accuracy.
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Input-Length in Days} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& OV-Over Overall & OV-Over Before OV & OV-Over After OV & OV-Over Overall & OV-Over Before OV & OV-Over After OV \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\
\midrule
10 & 0.1218 & 0.1044 & 0.1223 & 0.0612 & 0.0289 & 0.0711 \\
20 & 0.1153 & \underline{\textbf{0.0745}} & 0.1312 & 0.0641 & \underline{\textbf{0.0212}} & 0.0822 \\
40 & 0.1066 & 0.0820 & 0.1128 & 0.0616 & 0.0281 & 0.0740 \\
80 & 0.1173 & 0.0842 & 0.1291 & 0.0647 & 0.0263 & 0.0801 \\
160 & \underline{0.1039} & 0.1139 & \underline{0.0973} & \underline{0.0557} & 0.0462 & \underline{0.0580} \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\
\midrule
10 & 0.1137 & 0.1006 & 0.1186 & 0.0618 & 0.0336 & 0.0740 \\
20 & 0.1204 & 0.0771 & 0.1366 & 0.0690 & \underline{0.0255} & 0.0864 \\
40 & \underline{\textbf{0.1017}} & 0.1409 & \underline{\textbf{0.0883}} & \underline{\textbf{0.0533}} & 0.0621 & \underline{\textbf{0.0520}} \\
80 & 0.1138 & \underline{0.0897} & 0.1234 & 0.0654 & 0.0356 & 0.0788 \\
160 & 0.1076 & 0.0959 & 0.1141 & 0.0606 & 0.0379 & 0.0714 \\
\midrule
\multicolumn{7}{c}{\textbf{Convolution-LSTM}} \\
\midrule
10 & 0.1847 & 0.1878 & 0.1840 & 0.0819 & 0.0581 & 0.0949 \\
20 & 0.1493 & 0.1274 & 0.1562 & \underline{0.0699} & \underline{0.0389} & \underline{0.0833} \\
40 & \underline{0.1455} & \underline{0.1089} & \underline{0.1561} & 0.0722 & 0.0358 & 0.0852 \\
80 & 0.2327 & 0.1796 & 0.2507 & 0.1168 & 0.0686 & 0.1327 \\
160 & 0.2518 & 0.2040 & 0.2757 & 0.1293 & 0.0878 & 0.1503 \\
\midrule
\multicolumn{7}{c}{\textbf{Convolution-Transformer}} \\
\midrule
10 & 0.1472 & 0.1053 & 0.1651 & 0.0768 & 0.0317 & 0.0966 \\
20 & 0.1530 & 0.1307 & 0.1637 & 0.0745 & 0.0443 & 0.0886 \\
40 & \underline{0.1448} & 0.1228 & \underline{0.1514} & \underline{0.0709} & 0.0435 & \underline{0.0820} \\
80 & 0.1685 & 0.1164 & 0.1889 & 0.0865 & 0.0345 & 0.1089 \\
160 & 0.2440 & \underline{0.1051} & 0.3117 & 0.1403 & \underline{0.0286} & 0.1946 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Architectures and Input Lengths on a fixed Input Resolution of 12 Values per Day.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:ov_over_results_by_window_length}
\end{table}
\end{landscape}
\paragraph{Impact of Input Resolution:}\label{subsubsec:ov_over_impact_of_input_resolution}
Table~\ref{tab:ov_over_results_by_resolution} presents the effect of varying input resolution (values per day)
on performance for the ovulation-over target.
Note, that the convolutional models are not included here, as they have their own learned input representation via convolution.
The best-performing resolution differed across architectures and prediction phases.
For the \textbf{LSTM}, the lowest overall MAE (0.1153) was achieved at 12~values/day,
which also produced the global best before-ovulation results (MAE~$=0.0745$, MSE~$=0.0212$).
The best overall MSE (0.0633) was observed at 24~values/day.
After-ovulation performance was strongest at 48~values/day (MAE~$=0.0973$, MSE~$=0.0550$), the latter being a global best.
In the \textbf{Transformer}, the optimal overall MAE (0.1041) and MSE (0.0585) were both achieved at 72~values/day, which also yielded the
lowest after-ovulation MAE (0.0947), all of which were global bests.
The best before-ovulation MAE (0.0771) and MSE (0.0255) were found at 12~values/day.
The lowest after-ovulation MSE (0.0578) occurred at 288~values/day.
Overall, intermediate input resolutions (12--72~values/day) tended to perform best for ovulation-over prediction,
with 12~values/day favouring before-ovulation performance and 48--72~values/day improving after-ovulation accuracy.
\begin{landscape}
\begin{table}
\small
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{2}{*}{Values Per Day} & \multicolumn{3}{c}{MAE} & \multicolumn{3}{c}{MSE} \\
\cmidrule(r){2-4} \cmidrule(r){5-7}
& OV-Over Overall & OV-Over Before OV & OV-Over After OV & OV-Over Overall & OV-Over Before OV & OV-Over After OV \\
\midrule
\multicolumn{7}{c}{\textbf{LSTM}} \\
\midrule
1 & 0.1691 & 0.1280 & 0.1819 & 0.0914 & 0.0411 & 0.1099 \\
2 & 0.1431 & 0.1239 & 0.1471 & 0.0747 & 0.0442 & 0.0849 \\
4 & 0.1344 & 0.1130 & 0.1417 & 0.0680 & 0.0371 & 0.0807 \\
12 & \underline{0.1153} & \underline{\textbf{0.0745}} & 0.1312 & 0.0641 & \underline{\textbf{0.0212}} & 0.0822 \\
24 & 0.1192 & 0.0975 & 0.1240 & \underline{0.0633} & 0.0288 & 0.0755 \\
48 & 0.1463 & 0.2493 & \underline{0.0973} & 0.0768 & 0.1203 & \underline{\textbf{0.0550}} \\
72 & 0.1587 & 0.1113 & 0.1844 & 0.0857 & 0.0341 & 0.1126 \\
288 & 0.1353 & 0.1801 & 0.1169 & 0.0726 & 0.0799 & 0.0713 \\
\midrule
\multicolumn{7}{c}{\textbf{Transformer}} \\
\midrule
1 & 0.1687 & 0.1582 & 0.1709 & 0.0883 & 0.0578 & 0.0996 \\
2 & 0.1469 & 0.0895 & 0.1676 & 0.0823 & 0.0260 & 0.1044 \\
4 & 0.1282 & 0.0999 & 0.1393 & 0.0704 & 0.0329 & 0.0862 \\
12 & 0.1204 & \underline{0.0771}& 0.1366 & 0.0690 & \underline{0.0255}& 0.0864 \\
24 & 0.1952 & 0.1649 & 0.2102 & 0.0904 & 0.0638 & 0.1040 \\
48 & 0.1137 & 0.1159 & 0.1073 & 0.0610 & 0.0480 & 0.0629 \\
72 & \underline{\textbf{0.1041}}& 0.1180 & \underline{\textbf{0.0947}}& \underline{\textbf{0.0585}}& 0.0538 & 0.0581 \\
288 & 0.1319 & 0.1879 & 0.1097 & 0.0617 & 0.0769 & \underline{0.0578}\\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Architectures and Input Resolutions on a fixed Input-Window-Length of 20 Days.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\label{tab:ov_over_results_by_resolution}
\end{table}
\end{landscape}
\paragraph{Impact of Model Parameters:}\label{subsubsec:ov_over_impaoct_of_model_parameters}
Tables~\ref{tab:ov_over_results_by_model_parameters_lstm}--\ref{tab:ov_over_results_by_model_parameters_conv_transformer}
show the results of the parameter exploration for the ovulation-over target.
Each table reports the effect of varying hidden layer size and number of LSTM layers (for recurrent models),
or embedding size, number of encoder layers, and number of attention heads (for Transformer-based models).
For the \textbf{LSTM}, performance improved with increasing hidden layer size,
with the best overall MAE (0.1120) and MSE (0.0616) obtained at 512 units with four layers.
This configuration also yielded the lowest after-ovulation errors (MAE~$=0.0983$, MSE~$=0.0613$).
The lowest before- ovulation errors were observed at 128 units with two layers (MAE~$=0.0861$, MSE~$=0.0274$).
In the \textbf{Transformer}, smaller configurations performed poorly, while larger ones markedly improved results.
The best overall MAE (0.1114) was achieved with a 128-dimensional embedding and four encoder layers,
whereas the best overall MSE (0.0543) occurred with a 512-dimensional embedding and eight encoder layers.
The lowest before-ovulation errors were found at 64 dimensions with two layers (MAE~$=0.0810$, MSE~$=0.0302$),
while after-ovulation performance was best at 512 dimensions with eight layers (MAE~$=0.0753$, MSE~$=0.0410$).
For the \textbf{Convolution-LSTM}, the best overall configuration used 256 hidden units with four layers,
reaching the lowest overall MAE (0.1424) and MSE (0.0687).
This configuration also minimized after-ovulation errors (MAE~$=0.1369$, MSE~$=0.0715$).
Before-ovulation performance was strongest with 128 units and two layers (MAE~$=0.1138$, MSE~$=0.0357$).
In the \textbf{Convolution-Transformer}, the best overall MAE (0.1495) and MSE (0.0703)
were achieved with a 512-dimensional embedding and four encoder layers.
This configuration also gave the lowest after-ovulation errors (MAE~$=0.1551$, MSE~$=0.0814$).
Before-ovulation errors were lowest at 512 dimensions with eight layers (MAE~$=0.1025$, MSE~$=0.0339$).
Overall, the results show that larger configurations generally improved performance across architectures for the ovulation-over target,
with the best outcomes typically found at the higher-capacity settings.
\begin{landscape}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.2253 & 0.1353 & 0.2735 & 0.1196 & 0.0397 & 0.1621 \\
32 & 1 & 0.1746 & 0.1255 & 0.2005 & 0.0860 & 0.0404 & 0.1109 \\
32 & 2 & 0.1349 & 0.1240 & 0.1399 & 0.0674 & 0.0396 & 0.0786 \\
64 & 2 & 0.1270 & 0.0943 & 0.1365 & 0.0645 & 0.0292 & 0.0772 \\
128 & 2 & 0.1151 & \textbf{0.0861} & 0.1243 & 0.0626 & \textbf{0.0274} & 0.0755 \\
128 & 4 & 0.1326 & 0.1064 & 0.1407 & 0.0658 & 0.0291 & 0.0811 \\
256 & 4 & 0.1353 & 0.1111 & 0.1407 & 0.0662 & 0.0360 & 0.0765 \\
512 & 4 & \textbf{0.1120} & 0.1358 & \textbf{0.0983} & \textbf{0.0616} & 0.0603 & \textbf{0.0613} \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the LSTM model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{9}{c}{\textbf{Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.4792 & 0.5280 & 0.4675 & 0.2336 & 0.2820 & 0.2220 \\
32 & 1 & 1 & 0.4406 & 0.4572 & 0.4417 & 0.2046 & 0.2179 & 0.2068 \\
64 & 1 & 1 & 0.3614 & 0.3411 & 0.3796 & 0.1696 & 0.1604 & 0.1800 \\
64 & 2 & 2 & 0.1532 & \textbf{0.0810} & 0.1913 & 0.0904 & 0.0302 & 0.1214 \\
128 & 2 & 2 & 0.1476 & 0.0979 & 0.1739 & 0.0816 & 0.0332 & 0.1064 \\
128 & 4 & 4 & \textbf{0.1114} & 0.0887 & 0.1236 & 0.0668 & 0.0368 & 0.0821 \\
256 & 4 & 4 & 0.1310 & 0.0920 & 0.1433 & 0.0722 & \textbf{0.0293} & 0.0876 \\
512 & 4 & 4 & 0.1222 & 0.1047 & 0.1261 & 0.0610 & 0.0321 & 0.0708 \\
512 & 8 & 8 & 0.1126 & 0.1965 & \textbf{0.0753} & \textbf{0.0543} & 0.0868 & \textbf{0.0410} \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the Transformer model with
a fixed input window length of 160 days and an input resolution of 12 values per day.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_transformer}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-LSTM}} \\
\toprule
\multirow{2}{*}{Hidden Layer Size} &
\multirow{2}{*}{\# LSTM Layers} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){3-5} \cmidrule(lr){6-8}
& & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 0.2920 & 0.2198 & 0.3344 & 0.1264 & 0.0602 & 0.1653 \\
32 & 1 & 0.2141 & 0.1598 & 0.2377 & 0.0912 & 0.0398 & 0.1149 \\
32 & 2 & 0.1990 & 0.1556 & 0.2135 & 0.0852 & 0.0419 & 0.1025 \\
64 & 2 & 0.1743 & 0.1345 & 0.1845 & 0.0789 & 0.0400 & 0.0923 \\
128 & 2 & 0.1524 & 0.1138 & 0.1633 & 0.0717 & \textbf{0.0357} & 0.0845 \\
128 & 4 & 0.1579 & 0.1185 & 0.1670 & 0.0777 & 0.0401 & 0.0894 \\
256 & 4 & \textbf{0.1424} & 0.1425 & \textbf{0.1369} & \textbf{0.0687} & 0.0546 & \textbf{0.0715} \\
512 & 4 & 0.1436 & \textbf{0.1166} & 0.1523 & 0.0699 & 0.0382 & 0.0820 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the convolutional LSTM model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_conv_lstm}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{8}{X}}
\midrule
\multicolumn{8}{c}{\textbf{Convolutional-Transformer}} \\
\toprule
\multirow{2}{*}{Size of Embedding} &
\multirow{2}{*}{\# Encoder Layers} &
\multirow{2}{*}{\# Attention Heads} &
\multicolumn{3}{c}{MAE} &
\multicolumn{3}{c}{MSE} \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & Fert Overall & Fert Days & Non-Fert Days & Fert Overall & Fert Days & Non-Fert Days \\
\midrule
16 & 1 & 1 & 0.3759 & 0.3602 & 0.3855 & 0.1597 & 0.1498 & 0.1659 \\
32 & 1 & 1 & 0.1757 & 0.1119 & 0.2017 & 0.0916 & 0.0314 & 0.1167 \\
64 & 1 & 1 & 0.2771 & 0.2395 & 0.2978 & 0.1303 & 0.1133 & 0.1402 \\
64 & 2 & 2 & 0.1610 & 0.1149 & 0.1777 & 0.0816 & \textbf{0.0310} & 0.1021 \\
128 & 2 & 2 & 0.1501 & 0.0997 & 0.1725 & 0.0783 & 0.0316 & 0.0991 \\
128 & 4 & 4 & 0.1668 & 0.1472 & 0.1758 & 0.0801 & 0.0488 & 0.0953 \\
256 & 4 & 4 & 0.1529 & 0.1317 & 0.1597 & 0.0742 & 0.0435 & 0.0861 \\
512 & 4 & 4 & \textbf{0.1495} & 0.1298 & \textbf{0.1551} & \textbf{0.0703} & 0.0409 & \textbf{0.0814} \\
512 & 8 & 8 & 0.1576 & \textbf{0.1025} & 0.1848 & 0.0825 & 0.0339 & 0.1066 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Parameters for the convolutional Transformer model with
a fixed input window length of 40 days.
\textbf{Bold} values represent the best value for each metric within a model.}
\label{tab:ov_over_results_by_model_parameters_conv_transformer}
\end{table}
\end{landscape}
\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}
\subsubsection{Best Model Configuration Selection}\label{subsubsec:results_best_model_config_selection}
Following the selection procedure described in Section~\ref{subsubsec:methodology_best_model_config_selection}
the best configuration for each model architecture was identified based on the Fertility-Overall MSE and, where applicable,
the best configuration for each model architecture was identified based on the fertility overall MSE and, where applicable,
the general tendencies of the model.
Table~\ref{tab:best_configs_lstm} and~\ref{tab:best_configs_transformer} summarize the selected input window length,
input resolution, and model complexity for each architecture.
These configurations are used in all subsequent experiments, including the irregular cycles analysis and the use case evaluation.
Note, that the convolutional models always get the full resolution data (288 measurements per day).
\begin{table}[htbp]
\centering
@@ -608,7 +325,7 @@ These configurations are used in all subsequent experiments, including the irreg
\textbf{\# LSTM Layers} \\
\midrule
LSTM & 160 & 12 & 512 & 4 \\
Convolution-LSTM & 40 & 288 & 512 & 4 \\
Convolutional LSTM & 40 & 288 & 512 & 4 \\
\bottomrule
\end{tabularx}
\caption{Selected configurations for LSTM-based architectures. Input Window Length is given in days and input resolution in values per day.}
@@ -628,17 +345,70 @@ These configurations are used in all subsequent experiments, including the irreg
\textbf{\# Attention Heads} \\
\midrule
Transformer & 160 & 12 & 512 & 4 & 4 \\
Convolution-Transformer & 40 & 288 & 512 & 4 & 4 \\
Convolutional Transformer & 40 & 288 & 512 & 4 & 4 \\
\bottomrule
\end{tabularx}
\caption{Selected configurations for Transformer-based architectures. Input Window Length is given in days and input resolution in values per day.}
\label{tab:best_configs_transformer}
\end{table}
\begin{table}
\scriptsize
\begin{tabularx}{\linewidth}{l*{6}{X}}
\toprule
\multirow{1}{*}{Model} & \multicolumn{6}{c}{MSE} \\
\cmidrule(r){2-7}
& Fertility Overall & Fertile Days & Non-Fertile Days & OV-Over Overall & OV-Over Before OV & OV-Over After OV \\
\midrule
Transformer & 0.0037 & \textbf{0.0089} & 0.0017 & 0.0508 & 0.0236 & 0.0581 \\
Convolutional Transformer & 0.0038 & 0.0098 & 0.0014 & 0.0517 & 0.0305 & 0.0566 \\
LSTM & \textbf{0.0036} & 0.0104 & \textbf{0.0008} & \textbf{0.0437} & \textbf{0.0233} & \textbf{0.0492} \\
Convolutional LSTM & 0.0037 & 0.0092 & 0.0014 & 0.0499 & 0.0281 & 0.0563 \\
User-Based-Mean Baseline & 0.0064 & 0.0154 & 0.0028 & 0.1072 & 0.0872 & 0.0983 \\
Last-Cycle Baseline & 0.0080 & 0.0202 & 0.0031 & 0.1453 & 0.1099 & 0.1762 \\
Population-Mean Baseline & 0.0127 & 0.0258 & 0.0074 & 0.2145 & 0.0400 & 0.3749 \\
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the fertility probability and OV-over targets (MSE) for the best model selection and the baselines for comparison.
\textbf{Bold} values represent the best values across all models for a given metric.}
\label{tab:results_model_selection_metrics}
\end{table}
Table~\ref{tab:results_model_selection_metrics} shows the performance of the best selected models for each architecture,
as well as the baselines for comparison.
The final numbers in Table~\ref{tab:results_model_selection_metrics} are on a held-out test set with no reuse.
All trained model architectures outperform the baselines across all metrics.
The LSTM achieves the global best MSE for both targets (\mbox{0.0036} fertility; \mbox{0.0437} OV-Over)
and the best non-fertile-day MSE (\mbox{0.0008}).
The Transformer attains the global best fertile-day MSE (\mbox{0.0089}).
Relative to the User-Mean baseline, the best LSTM reduces fertility MSE by \mbox{44\%} and OV-Over MSE by \mbox{59\%}.
\subsection{Stratified Analysis}\label{subsec:stratified_analysis}
\subsubsection{Influence of User History Depth}\label{subsubsec:influence_of_past_user_data}
% don't forget to also add baseline to tables
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{resources/figures/results/performance_on_different_historical_contexts}
\caption{
Plots showing the MSE for the fertility probability and OV-over targets over a growing size of past cycles available
for each model architecture, as well as a trend line for each metric.
}
\label{fig:results_performance_on_different_historical_context}
\end{figure}
Figure~\ref{fig:results_performance_on_different_historical_context} shows the MSE for the fertility probability
and OV-over targets as a function of the number of past cycles available per user, for all model architectures and baselines.
All four models improve on both metrics as the amount of historical data increases.
The LSTM-based models show a larger relative improvement with longer user history than the Transformer-based variants.
The User-Mean Baseline also improves substantially, with the Last-Cycle Baseline showing a smaller but still notable gain.
In contrast, the Population-Mean Baseline performs worse (i.e., MSE increases) as more historical cycles are included.
Across all models and baselines, the variability of results increases with greater history depth:
results are more tightly clustered around the trend line with short histories,
but show greater scatter for users with longer data records.
This suggests that longer histories introduce additional heterogeneity, which may reflect increased user-specific variability.
\subsubsection{Regular vs Irregular Cycles}\label{subsubsec:regular_vs_irregular_cycles}
\begin{landscape}
@@ -659,9 +429,9 @@ These configurations are used in all subsequent experiments, including the irreg
\bottomrule
\end{tabularx}
\caption{Evaluation Metrics for the Fertility-Probability Target across Different Model Architectures for the Regular and Irregular Cycle Groups.
\caption{Evaluation Metrics for the fertility probability target across Different Model Architectures for the Regular and Irregular Cycle Groups.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\textbf{\underline{Bold + Underlined}} values represent the best values across all models for a given metric.}
\label{tab:regular_vs_irregular_fertility_results}
\end{table}
\end{landscape}
@@ -685,7 +455,7 @@ These configurations are used in all subsequent experiments, including the irreg
\end{tabularx}
\caption{Evaluation Metrics for the Ovulation-Over Target across Different Model Architectures for the Regular and Irregular Cycle Groups.
\underline{Underlined} values represent the best value for each metric within a model.
\textbf{\underline{Bold + Underlined}} values represent the global best values across all models for a given metric.}
\textbf{\underline{Bold + Underlined}} values represent the best values across all models for a given metric.}
\label{tab:regular_vs_irregular_ov_over_results}
\end{table}
\end{landscape}
@@ -697,3 +467,4 @@ These configurations are used in all subsequent experiments, including the irreg
\subsubsection{Pregnancy Use-Case Results}\label{subsubsec:use_case_pregnancy_results}
\subsection{Summary of Key Findings}\label{subsec:summary_of_key_findings}
%best model per target, typical window lengths (2040 d often optimal; LSTM benefits from 160 d), best resolutions (448/day for fertility; 1272/day for OV-Over), and %-gains over baselines.