ML-Based Risk Scoring

The formula-based hazard score weights factors by fixed rules. This page adds a Random Forest classifier trained on confirmed GLOF events, letting the data determine which factors matter most. Where the two scores diverge, the scatter plot below highlights lakes the formula may be over- or under-rating.

These probabilities do not measure GLOF risk. Positive examples come from the event catalogue and negative examples from the simulated lake inventory, so the classifier can separate the two classes on artefacts of how each file was written rather than on hazard: a model trained only on "is this value a round number?" separates them perfectly (AUC 1.00). Cross-validation scores from this setup measure provenance, not skill. Treat the page as a demonstration of the workflow.

Feature importance

Formula score vs ML probability

Lake comparison

IDLakeFormula score ML probabilityRisk classDam type

Model card

Model: RandomForestClassifier (scikit-learn), n_estimators=100, random_state=42, class_weight='balanced'.

Training data: positive examples from the GLOF event catalogue (data/glof_events.csv) β€” real events across the wider Hindu Kush Himalaya (Nepal, Bhutan, Tibet, Sikkim), with unverified attribute values. Negative examples are inventory lakes with no documented event, matched by normalised name so that e.g. 'Lower Barun Lake' and 'Lower Barun' are recognised as the same lake.

Features: area_km2, area_growth_rate, dam_type_encoded, slope_downstream, distance_to_settlement_km, elevation_m. Dam type encoding: moraine=2, ice=1, bedrock=0.

Known limitation: the positive and negative rows come from separately authored files whose numeric formatting differs, which leaks class membership. Any accuracy figure from this setup overstates real predictive skill.

Retrain: python data/train_model.py.