-1 across multiple features| Rank | Model | ROC-AUC | F1-Score | Accuracy |
|---|---|---|---|---|
| 1 | Gradient Boosting | 0.6276 | 0.0009 | 0.9635 |
| 2 | Random Forest | 0.6222 | 0.0975 | 0.6818 |
| 3 | Logistic Regression | 0.6162 | 0.0000 | 0.9635 |
| 4 | LightGBM | 0.6102 | 0.0730 | 0.1278 |
| 5 | Naive Bayes | 0.6093 | 0.0962 | 0.8588 |
| 6 | XGBoost | 0.6049 | 0.0737 | 0.1436 |
| 7 | Decision Tree | 0.5810 | 0.0000 | 0.9636 |
| 8 | K-Nearest Neighbors | 0.5336 | 0.0233 | 0.9549 |
| Challenge | Technique | Reason |
|---|---|---|
Missing values encoded as -1 | Replace with NaN, median/mode imputation | Standardizes missing handling; prevents sentinel distortion |
| Severe class imbalance (96.4/3.6) | Class weights, scale_pos_weight=26, ROC-AUC metric | Prevents majority-class bias; measures ranking quality |
| Anonymized features | Group-based feature engineering (ps_ind_sum, ps_car_sum, missing_count) | Extracts structural signal without semantic meaning |
| Large dataset (595K rows) | Stratified subsampling for training; full test for evaluation | Balances speed vs. reliable metrics |
| High cardinality categoricals | Tree-based models (native categorical handling) | Avoids one-hot dimensionality explosion |
| Noisy calculated features | Monitor feature importance empirically | Tree models ignore irrelevant features automatically |
| Metric selection | ROC-AUC as primary (ranking), F1/Accuracy as secondary | Aligns with marketing prioritization objective |
PRCP_1010_Insurance_Claim_Prediction.ipynb — Main Jupyter notebook with all tasksbest_insurance_claim_model.pkl — Trained production modelfeature_scaler.pkl — StandardScaler artifactfeature_names.pkl — Expected feature order.png — Analysis and visualization plots1import joblib
2import pandas as pd
3
4model = joblib.load('best_insurance_claim_model.pkl')
5features = joblib.load('feature_names.pkl')
6
7# Predict claim probability for new customers
8proba = model.predict_proba(new_data[features])[:, 1]