rework of results section
This commit is contained in:
+7
-4
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -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
@@ -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 (20–40\,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 (4–48/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 (20–40\,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 (20–40\,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 (12–72/day) tend to minimize overall error; 12/day favors pre-ovulation,
|
||||
while 48–72/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 (20–40 d often optimal; LSTM benefits from 160 d), best resolutions (4–48/day for fertility; 12–72/day for OV-Over), and %-gains over baselines.
|
||||
Reference in New Issue
Block a user