Implements MLP (Multi-Layer Perceptron) based on PyTorch for binary classification modeling.
Core Pipeline: Feature standardization → MLP training (BatchNorm + Dropout + Early Stopping) → Probability prediction → Three-stage evaluation
Use Cases:
- High-dimensional feature interaction modeling
- Complex nonlinear relationships exist between features
- Sufficient data volume (>10k samples)
- Pursuit of ultimate model performance (can be ensembled with XGBoost)
Parameter Description
| Parameter | Required | Default Value | Description |
|---|---|---|---|
--data_path / -d |
✅ | - | Data file path (parquet/csv) |
--target / -t |
✅ | - | Target variable column name (0/1 binary classification) |
--time_col |
busi_dt |
Time column name | |
--train_filter |
Automatic split | Training set filter condition (pandas query) | |
--oot_filter |
Split by time | OOT cross-time test set condition | |
--oot_ratio |
0.20 |
If not provided --oot_filter ratio for splitting OOT by time |
|
--val_ratio |
0.25 |
Ratio for splitting val from train_full | |
--random_seed |
42 |
Random seed | |
--exclude_cols |
- | Excluded columns, comma-separated | |
--features |
- | Specified feature list, comma-separated; if not provided, inferred automatically | |
--hidden_dims |
128,64,32 |
Hidden layer dimensions, comma-separated | |
--dropout |
0.3 |
Dropout ratio | |
--learning_rate |
0.001 |
Learning rate | |
--batch_size |
512 |
Batch size | |
--epochs |
100 |
Maximum training epochs | |
--patience |
10 |
Early stopping patience epochs | |
--weight_decay |
1e-4 |
Weight decay (L2 regularization) | |
--pos_weight |
auto |
Positive sample weight (auto=automatically calculated) | |
--model_name |
Automatically generated | Model name | |
--report_output |
Automatically generated | Report output path | |
--output_dir |
./outputs/<ts> |
Artifact output directory | |
--config |
- | JSON configuration file path |
Execution Method
Run with default parameters:
python scripts/modeling.py \
--data_path ./data.parquet --target y_label \
--time_col busi_dt \
--exclude_cols "cust_code,busi_dt" \
--output_dir ./outputs/dnn_run
Custom network architecture:
python scripts/modeling.py \
--data_path ./data.parquet --target y_label \
--hidden_dims "256,128,64" \
--dropout 0.4 \
--learning_rate 0.0005 \
--epochs 200 \
--output_dir ./outputs/dnn_run
Common Scenarios
Scenario 1: Quick modeling with default parameters
python scripts/modeling.py --data_path ./data.parquet --target y_label --output_dir ./outputs/dnn_run
Scenario 2: Custom network architecture
python scripts/modeling.py --data_path ./data.parquet --target y_label \
--hidden_dims "256,128,64" --dropout 0.4 --learning_rate 0.0005 \
--output_dir ./outputs/dnn_run
Scenario 3: Modeling with specified features
python scripts/modeling.py --data_path ./data.parquet --target y_label \
--features "feat1,feat2,feat3" --output_dir ./outputs/dnn_run
Output Artifacts
- Modeling report(Markdown) — includes data splitting, network architecture, training curves, three-stage evaluation metrics, stability analysis
- Model file(.pt) — PyTorch state_dict + model configuration
- Training log(JSON) — loss/AUC/KS records for each epoch
- result.json — structured artifact manifest
Comparison with Other Modeling Skills
| Dimension | dnn-modeling | xgb-modeling | lr-modeling |
|---|---|---|---|
| Algorithm | MLP (PyTorch) | XGBoost | LR + WoE |
| Feature Processing | StandardScaler | Raw values | WoE binning |
| Nonlinear capability | Strong (multi-layer activation) | Strong (tree structure) | Weak |
| Interpretability | Weak | Medium (SHAP) | Strong (coefficients) |
| Training speed | Slow | Fast | Very fast |
| Applicable data volume | >10k | Any | Any |
| Evaluation system | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |
Upstream/downstream relationships
- Predecessor:
data-profiling→feature-analysis(feature selection) - Subsequent:
dnn-tuning(hyperparameter tuning optimization),model-comparison(multi-algorithm comparison) - Parallel: with
xgb-modeling/lr-modelingcan be compared horizontally
Notes
- Data requirements: The target variable must be 0/1 binary classification
- Data volume: It is recommended that training samples > 10k; DNN is prone to overfitting on small samples
- Missing values: The script automatically uses median imputation + adds missing indicator columns
- Standardization: Automatically applies StandardScaler to numerical features
- Early stopping: When val loss remains unchanged for
patienceconsecutive rounds, it stops automatically - No hyperparameter tuning provided: If you need hyperparameter tuning, please switch to
dnn-tuning(search network architecture + training parameters) - GPU: Automatically detects CUDA, and falls back to CPU when there is no GPU
- Model saving: Model files are saved to
<output_dir>/models/