# ============================================================================= # Experiment config: enhanced ML/DL tuning + automatic HTML report # ============================================================================= # Paths data_dir: /home/tanpv/Progs/562_VNU/Data/For_BC mask_file: /home/tanpv/Data/AWC/Mask_VN_0.25_Corrected.nc output_dir: outputs # File pattern file_pattern: "lead{lead}_{source_model}_01_BL_Test_VN.nc" # Data conventions year_start: 1982 year_end: 2021 missing_value: -99.0 valid_regions: [1, 2, 3, 4, 5, 6, 7] # Experiment dimensions source_models: [RegCM, clWRF] leads: [1, 2, 3, 4, 5, 6] targets: [pr_o, t2_o] spatial_modes: [regional, national] # Keep P2 and P4 as the main predictor sets because the previous experiment showed # that P_fortran22 was not consistently better. Add P_fortran22 here if needed. predictor_sets: [P2, P4] # predictor_sets: [P2, P4, P_fortran22] # Ridge is the benchmark. XGBoost and MLP/ANN are tested with several variants. # CNN is optional and disabled by default because it requires PyTorch. methods: - raw - ridge - xgb_d2 - xgb_d3 - xgb_d4 - xgb_slow - xgb_regularized - mlp_small - mlp_medium - mlp_deep - ann_tanh - ann_lbfgs # Optional, only if PyTorch is installed and tested: # - cnn1d_small # Split by target year train_years: [1982, 2013] test_years: [2014, 2021] # Modeling style # monthly_anomaly trains separate models for each calendar month and uses anomalies # relative to training-period monthly climatology. modeling_style: monthly_anomaly include_lat_lon: true include_region_feature: true clip_precipitation_to_zero: true rmae_percent: true # Runtime n_jobs: 20 overwrite: false save_predictions: true random_seed: 42 # Ridge benchmark ridge_alpha: 1.0 # XGBoost global parameters and variants. Each task uses n_jobs=1 to avoid # oversubscription because SLURM runs many tasks in parallel. xgboost_base_params: objective: reg:squarederror n_jobs: 1 tree_method: hist verbosity: 0 xgboost_variants: xgb_d2: n_estimators: 500 max_depth: 2 learning_rate: 0.03 subsample: 0.90 colsample_bytree: 0.90 reg_lambda: 5.0 reg_alpha: 0.0 min_child_weight: 3.0 xgb_d3: n_estimators: 500 max_depth: 3 learning_rate: 0.03 subsample: 0.90 colsample_bytree: 0.90 reg_lambda: 5.0 reg_alpha: 0.0 min_child_weight: 3.0 xgb_d4: n_estimators: 500 max_depth: 4 learning_rate: 0.03 subsample: 0.85 colsample_bytree: 0.85 reg_lambda: 8.0 reg_alpha: 0.0 min_child_weight: 4.0 xgb_slow: n_estimators: 900 max_depth: 3 learning_rate: 0.015 subsample: 0.90 colsample_bytree: 0.90 reg_lambda: 8.0 reg_alpha: 0.0 min_child_weight: 3.0 xgb_regularized: n_estimators: 700 max_depth: 2 learning_rate: 0.02 subsample: 0.75 colsample_bytree: 0.75 reg_lambda: 15.0 reg_alpha: 0.5 min_child_weight: 5.0 # MLP/ANN base parameters and variants. The lbfgs variant is often useful for # small tabular datasets and can be more stable than Adam in short samples. mlp_base_params: max_iter: 700 early_stopping: true validation_fraction: 0.15 n_iter_no_change: 40 learning_rate_init: 0.001 alpha: 0.001 solver: adam activation: relu mlp_variants: mlp_small: hidden_layer_sizes: [32] alpha: 0.001 mlp_medium: hidden_layer_sizes: [64, 32] alpha: 0.001 mlp_deep: hidden_layer_sizes: [128, 64, 32] alpha: 0.003 ann_tanh: hidden_layer_sizes: [64, 32] activation: tanh alpha: 0.001 ann_lbfgs: hidden_layer_sizes: [32] activation: tanh solver: lbfgs alpha: 0.01 max_iter: 700 # Optional CNN settings. Requires PyTorch; not installed by requirements.txt. cnn1d_small_params: n_epochs: 120 batch_size: 512 learning_rate: 0.001 weight_decay: 0.0001 channels: 16 patience: 20 validation_fraction: 0.15