Wildfire PySpark
I worked with 1.88 million US wildfire records for a university project, and got into how a model could look accurate while missing the larger fires.
University project, done solo: preprocessing, features, training and evaluation.
PySpark experiment
1.88M records
- Class G recall
- 0 → 0.7518 With class weighting
- Weighted class G precision
- 0.0099
- Weighted overall accuracy
- 32%
1.88 million records, seven very uneven classes
The 1.88 million-record dataset made Spark appropriate, while the seven wildfire-size classes created a much harder evaluation problem than overall accuracy suggested.
Removing the leakage
I took out containment date and final fire size, as neither would be known when a fire was discovered. Then I built the temporal and geographic features into the shared Spark ML pipeline.
The model comparison
Random forest, decision tree, logistic regression, and gradient-boosted trees were compared. Scaling reduced one random-forest training run from 52.55 to 27.14 seconds, while PCA reduced one GBT run from 154.69 to 47.09 seconds with near-equivalent reported accuracy.
Where it fell over
The baseline random forest had zero recall for classes C through G. Weighting raised class G recall to 0.7518, but precision fell to 0.0099 and overall accuracy to 32%.
The trade-off doesn’t work
The weighted model found more of the rare fires, though the false positives were too high for me to treat it as something anyone should deploy.
Outcome
Class G recall rose from 0 to 0.7518 in the weighted run, precision was 0.0099, and overall accuracy fell to 32%. It found more of the rare fires and got a lot more predictions wrong.