=== Fold 0 ===
[Train] Fold 0 Epoch 1/200 | Loss: 2.7811 | AUC: 0.3345 | AUPR: 0.2713 | RI: 0.6103
[Train] Fold 0 Epoch 20/200 | Loss: 3.2406 | AUC: 0.8337 | AUPR: 0.6085 | RI: 0.2777
[Train] Fold 0 Epoch 40/200 | Loss: 2.3194 | AUC: 0.9638 | AUPR: 0.8928 | RI: 0.1911
[Train] Fold 0 Epoch 60/200 | Loss: 1.3468 | AUC: 0.9749 | AUPR: 0.9339 | RI: 0.1837
[Train] Fold 0 Epoch 80/200 | Loss: 1.1204 | AUC: 0.9825 | AUPR: 0.9546 | RI: 0.1787
[Train] Fold 0 Epoch 100/200 | Loss: 1.2218 | AUC: 0.9831 | AUPR: 0.9603 | RI: 0.1783
[Train] Fold 0 Epoch 120/200 | Loss: 1.1186 | AUC: 0.9844 | AUPR: 0.9612 | RI: 0.1774
[Train] Fold 0 Epoch 140/200 | Loss: 1.0023 | AUC: 0.9871 | AUPR: 0.9696 | RI: 0.1756
[Train] Fold 0 Epoch 160/200 | Loss: 1.0415 | AUC: 0.9859 | AUPR: 0.9670 | RI: 0.1764
[Train] Fold 0 Epoch 180/200 | Loss: 1.0481 | AUC: 0.9839 | AUPR: 0.9616 | RI: 0.1777
[Train] Fold 0 Epoch 200/200 | Loss: 0.9336 | AUC: 0.9876 | AUPR: 0.9726 | RI: 0.1753
Model weights saved: mmoe_han_fold0.pt
[Test]  Fold 0 | AUC: 0.9865 | AUPR: 0.9834 | RI: 0.2572

=== Fold 1 ===
[Train] Fold 1 Epoch 1/200 | Loss: 2.8850 | AUC: 0.5318 | AUPR: 0.3174 | RI: 0.4788
[Train] Fold 1 Epoch 20/200 | Loss: 3.0255 | AUC: 0.9700 | AUPR: 0.9374 | RI: 0.1871
[Train] Fold 1 Epoch 40/200 | Loss: 2.8947 | AUC: 0.8617 | AUPR: 0.8380 | RI: 0.2589
[Train] Fold 1 Epoch 60/200 | Loss: 2.1166 | AUC: 0.9643 | AUPR: 0.9313 | RI: 0.1830
[Train] Fold 1 Epoch 80/200 | Loss: 2.0292 | AUC: 0.9606 | AUPR: 0.9261 | RI: 0.1832
[Train] Fold 1 Epoch 100/200 | Loss: 1.7487 | AUC: 0.9678 | AUPR: 0.9285 | RI: 0.1882
[Train] Fold 1 Epoch 120/200 | Loss: 1.6663 | AUC: 0.9708 | AUPR: 0.9336 | RI: 0.1862
[Train] Fold 1 Epoch 140/200 | Loss: 1.6597 | AUC: 0.9649 | AUPR: 0.9346 | RI: 0.1803
[Train] Fold 1 Epoch 160/200 | Loss: 1.0348 | AUC: 0.9853 | AUPR: 0.9643 | RI: 0.1768
[Train] Fold 1 Epoch 180/200 | Loss: 1.4774 | AUC: 0.9734 | AUPR: 0.9477 | RI: 0.1845
[Train] Fold 1 Epoch 200/200 | Loss: 1.1878 | AUC: 0.9844 | AUPR: 0.9607 | RI: 0.1774
Model weights saved: mmoe_han_fold1.pt
[Test]  Fold 1 | AUC: 0.9851 | AUPR: 0.9797 | RI: 0.2578

=== Fold 2 ===
[Train] Fold 2 Epoch 1/200 | Loss: 2.7468 | AUC: 0.6959 | AUPR: 0.4273 | RI: 0.3695
[Train] Fold 2 Epoch 20/200 | Loss: 1.5610 | AUC: 0.9786 | AUPR: 0.9390 | RI: 0.1813
[Train] Fold 2 Epoch 40/200 | Loss: 1.3194 | AUC: 0.9874 | AUPR: 0.9687 | RI: 0.1754
[Train] Fold 2 Epoch 60/200 | Loss: 1.0239 | AUC: 0.9888 | AUPR: 0.9703 | RI: 0.1744
[Train] Fold 2 Epoch 80/200 | Loss: 0.9004 | AUC: 0.9874 | AUPR: 0.9671 | RI: 0.1754
[Train] Fold 2 Epoch 100/200 | Loss: 0.8591 | AUC: 0.9887 | AUPR: 0.9744 | RI: 0.1745
[Train] Fold 2 Epoch 120/200 | Loss: 0.8507 | AUC: 0.9895 | AUPR: 0.9741 | RI: 0.1740
[Train] Fold 2 Epoch 140/200 | Loss: 0.8398 | AUC: 0.9907 | AUPR: 0.9794 | RI: 0.1732
[Train] Fold 2 Epoch 160/200 | Loss: 0.8150 | AUC: 0.9907 | AUPR: 0.9794 | RI: 0.1732
[Train] Fold 2 Epoch 180/200 | Loss: 0.8022 | AUC: 0.9912 | AUPR: 0.9797 | RI: 0.1729
[Train] Fold 2 Epoch 200/200 | Loss: 0.8159 | AUC: 0.9904 | AUPR: 0.9760 | RI: 0.1734
Model weights saved: mmoe_han_fold2.pt
[Test]  Fold 2 | AUC: 0.9887 | AUPR: 0.9855 | RI: 0.2561

=== Fold 3 ===
[Train] Fold 3 Epoch 1/200 | Loss: 2.9297 | AUC: 0.2178 | AUPR: 0.2307 | RI: 0.6880
[Train] Fold 3 Epoch 20/200 | Loss: 4.0738 | AUC: 0.7690 | AUPR: 0.6746 | RI: 0.3204
[Train] Fold 3 Epoch 40/200 | Loss: 2.2677 | AUC: 0.8220 | AUPR: 0.6528 | RI: 0.2779
[Train] Fold 3 Epoch 60/200 | Loss: 1.8694 | AUC: 0.8874 | AUPR: 0.7773 | RI: 0.2420
[Train] Fold 3 Epoch 80/200 | Loss: 1.4182 | AUC: 0.9430 | AUPR: 0.8874 | RI: 0.2049
[Train] Fold 3 Epoch 100/200 | Loss: 1.4677 | AUC: 0.9165 | AUPR: 0.8589 | RI: 0.2226
[Train] Fold 3 Epoch 120/200 | Loss: 1.1238 | AUC: 0.9873 | AUPR: 0.9703 | RI: 0.1754
[Train] Fold 3 Epoch 140/200 | Loss: 0.9358 | AUC: 0.9884 | AUPR: 0.9727 | RI: 0.1747
[Train] Fold 3 Epoch 160/200 | Loss: 0.8512 | AUC: 0.9899 | AUPR: 0.9770 | RI: 0.1737
[Train] Fold 3 Epoch 180/200 | Loss: 0.8422 | AUC: 0.9887 | AUPR: 0.9716 | RI: 0.1745
[Train] Fold 3 Epoch 200/200 | Loss: 0.7959 | AUC: 0.9909 | AUPR: 0.9800 | RI: 0.1731
Model weights saved: mmoe_han_fold3.pt
[Test]  Fold 3 | AUC: 0.9897 | AUPR: 0.9862 | RI: 0.2556

=== Fold 4 ===
[Train] Fold 4 Epoch 1/200 | Loss: 2.7955 | AUC: 0.5879 | AUPR: 0.3598 | RI: 0.4411
[Train] Fold 4 Epoch 20/200 | Loss: 2.6727 | AUC: 0.9385 | AUPR: 0.8468 | RI: 0.2077
[Train] Fold 4 Epoch 40/200 | Loss: 1.3604 | AUC: 0.9829 | AUPR: 0.9582 | RI: 0.1784
[Train] Fold 4 Epoch 60/200 | Loss: 1.0718 | AUC: 0.9862 | AUPR: 0.9704 | RI: 0.1762
[Train] Fold 4 Epoch 80/200 | Loss: 0.9507 | AUC: 0.9864 | AUPR: 0.9687 | RI: 0.1760
[Train] Fold 4 Epoch 100/200 | Loss: 0.8315 | AUC: 0.9894 | AUPR: 0.9760 | RI: 0.1740
[Train] Fold 4 Epoch 120/200 | Loss: 0.8220 | AUC: 0.9908 | AUPR: 0.9767 | RI: 0.1731
[Train] Fold 4 Epoch 140/200 | Loss: 0.7599 | AUC: 0.9916 | AUPR: 0.9802 | RI: 0.1726
[Train] Fold 4 Epoch 160/200 | Loss: 0.6977 | AUC: 0.9930 | AUPR: 0.9827 | RI: 0.1716
[Train] Fold 4 Epoch 180/200 | Loss: 0.7132 | AUC: 0.9927 | AUPR: 0.9828 | RI: 0.1719
[Train] Fold 4 Epoch 200/200 | Loss: 0.6509 | AUC: 0.9936 | AUPR: 0.9836 | RI: 0.1712
Model weights saved: mmoe_han_fold4.pt
[Test]  Fold 4 | AUC: 0.9918 | AUPR: 0.9911 | RI: 0.2546

=== Overall Validation Performance ===
Mean AUC:  0.9883 ± 0.0024
Mean AUPR: 0.9852 ± 0.0037
Mean RI:   0.2562 ± 0.0012