HEMA_CLASS / README.md
MABONGALABS's picture
Update README.md
25eaacd verified
---
language:
- en
license: mit
tags:
- medical
- clinical-decision-support
- tabular-classification
- scikit-learn
- xgboost
- shap
- ensemble-learning
- global-health
datasets:
- private-western-kenya-clinical-cohort
metrics:
- accuracy
- f1
- sensitivity
- specificity
---
# Hemaclass XAI: Deep Stacking Ensemble for Malaria and Sickle Cell Anemia
## Model Description
The **Hemaclass XAI** model is a phase-4 prototype Clinical Decision Support System (CDSS) designed to classify **Malaria, Sickle Cell Anemia (SCA), Co-infections, and Negative (Healthy/Other)** patient states. Developed specifically for deployment in resource-constrained settings in Western Kenya, the model utilizes a robust Deep Stacking Ensemble architecture coupled with SHAP (SHapley Additive exPlanations) for transparent, clinician-friendly interpretability.
- **Developer:** Mabonga Labs / Hemaclass Project
- **Model Type:** Multi-Class Tabular Classification (Deep Stacking Ensemble)
- **Primary Architecture:** Random Forest, Support Vector Machine (RBF), and XGBoost (Base Learners) -> Logistic Regression (Meta-Learner).
- **Hyperparameter Tuning:** Nested Cross-Validation with Bayesian Search (`skopt`).
## Intended Use & Target Audience
- **Primary Use Case:** Triage and secondary diagnostic validation for clinicians operating in malaria-endemic regions with high SCA prevalence.
- **Target Audience:** Medical doctors, clinical officers, and healthcare technicians.
- **Out-of-Scope Uses:** This model is **not** a standalone diagnostic device. It is designed for *decision support*. It should not override human clinical judgment or be used as a replacement for definitive laboratory protocols (e.g., blood smears, Hb electrophoresis).
## Clinical Protocol & Hardcoded Overrides
To prioritize patient safety, the inference pipeline integrates hardcoded clinical rules that override the AI's probability outputs in critical, life-threatening scenarios:
1. **Severe Hyperhemolytic Crisis:** Hemoglobin (Hb) < 5.0 g/dL.
2. **Acute Hemolytic Malarial Crisis:** Reticulocyte Count > 8.0% + Positive Malaria RDT.
3. **Rapidly Progressing Vaso-occlusive Malarial Crisis:** Rapid Hb decline (>1.5g/dL in 48h) + Positive Malaria RDT + Presence of HbS genotype.
*When triggered, the system flags the diagnosis as "Co-infection" with 100% confidence and alerts the clinician to admit the patient to a high-dependency unit.*
## Model Input Features
The model ingests 24 clinical biomarkers and autonomously engineers 3 derived features:
* **Demographics:** Age, Sex
* **Vitals & Symptoms:** Body Temperature, Fever, Chills, Headache, Muscle Aches, Fatigue, Loss of Appetite, Jaundice, Abdominal Pain, Joint Pain, Splenomegaly, Severe Pallor, Lymphadenopathy.
* **Laboratory Markers:** Malaria RDT (Binary), Hemoglobin (Hb), WBC Count, Platelet Count, Reticulocyte Count, Rapid Hb Decline Alert.
* **Hemoglobin Fractions:** HbA, HbS, HbF.
* **Engineered Features:** Symptom Severity Score, Age Group (Categorical), Infection-to-Anemia Ratio (WBC / Hb).
## Data Preprocessing & Augmentation
* **Missing Data:** Handled using Multiple Imputation by Chained Equations (MICE) up to 30 iterations to preserve complex clinical covariances.
* **Class Imbalance:** The foundational dataset (~350 retrospective patient records from Western Kenya) was highly imbalanced. **Extreme SMOTE** (Synthetic Minority Over-sampling Technique) was applied to map boundaries and synthesize a robust, balanced training matrix of 6,000 clinical profiles (1,500 per target class).
* **Encoding:** Deterministic Ordinal Encoding for categorical values; Z-Score Normalization for numerical features.
## Explainability (XAI)
The system integrates **SHAP (TreeExplainer)** applied to the XGBoost component of the stacking ensemble. Local explanations (Waterfall plots) are generated for every inference, providing clinicians with exact quantification of how individual biomarkers (e.g., *HbS%* or *Symptom Severity*) contributed to the final predicted risk score.
## Evaluation & Metrics
The model was evaluated on an isolated, unseen clinical test set prior to SMOTE augmentation.
* **Metrics Tracked:** Macro-F1 Score, Macro-Sensitivity (Recall), Macro-Specificity, and overall Accuracy.
* **Statistical Significance:** Friedman/Nemenyi post-hoc testing confirmed the Stacking Ensemble significantly outperforms isolated baseline models (p < 0.05).
*(Note: Refer to the specific model logs or the connected Gradio dashboard for live metrics).*
## Ethical Considerations & Limitations
* **Geographic Bias:** The base dataset reflects the epidemiology of Western Kenya. Prevalence features (like overlapping splenomegaly in SCA and Malaria) may not generalize accurately to populations outside of Sub-Saharan Africa or regions with varying Plasmodium falciparum endemicity.
* **Synthetic Data Artifacts:** Because SMOTE was used extensively to augment the data for deep learning convergence, extreme edge-case boundaries may occasionally display synthetic bias. Prospective validation on a large-scale real-world clinical trial is required before Phase 5 medical device certification.
* **Explainability Proxy:** The SHAP explanations are derived from the XGBoost sub-estimator rather than the entire Stacking Classifier boundary, serving as a highly accurate proxy rather than an absolute mathematical reflection of the meta-learner.
## How to Get Started
To interact with the model via the UI, please visit the connected [Hugging Face Space](#).
For programmatic inference using Python:
```python
import joblib
import pandas as pd
# 1. Load Artifacts
model = joblib.load('ensemble_model.pkl')
scaler = joblib.load('scaler.pkl')
imputer = joblib.load('imputer.pkl')
# 2. Prepare patient data (ensure columns match FEATURE_NAMES)
# patient_df = pd.DataFrame({...})
# 3. Preprocess
# X_imp = imputer.transform(patient_df)
# X_scaled = scaler.transform(X_imp)
# 4. Predict
# predictions = model.predict(X_scaled)
# probabilities = model.predict_proba(X_scaled)