Non-technical loss is one of the few line items a utility can attack with data it already owns. The reads are there. The theft is in them. What’s missing is a way to point a small inspection team at the right meters — because knocking on doors at random is slower and more expensive than the loss itself.
We took a large, public smart-meter panel — the SGCC dataset, 42,372 customers with more than a thousand daily reads apiece and a realistic theft rate near 8.5% — and ran it through the full detection pipeline exactly as a utility would run its own AMI.
From reads to features
Raw interval reads are noisy: dropouts, spikes, missing days. The pipeline cleans and imputes them, then encodes each customer as 43 behavioural statistics and a 148-point weekly profile — the rhythm of an account, not just its total. Under-reporting, zero-padding and flatline tampering each leave a different fingerprint in those features, and the model is trained to tell them apart.
Scoring and the gate
An imbalance-weighted LightGBM classifier scored every customer. Because theft is rare, the model was measured on PR-AUC and recall rather than headline accuracy, and it had to pass a release gate — beating both a logistic-regression and a prevalence baseline — before its scores counted. On this panel it reached a ROC-AUC around 0.82, with the operating point set to recall the majority of true theft cases at the best precision available.
The deliverable was never a label on a customer. It was an ordering of the whole book — who to visit first.
The audit queue
The output was a ranked audit queue: every customer ordered by theft probability, highest first, so a team that can only inspect a few hundred premises a month spends that capacity where it recovers the most. Each flagged account carried the behavioural signals that raised it, so an inspector arrived informed — and the score stayed a lead, with a person making the final call at the meter.
The theft was always in the data. What changed was the order of the list: instead of a full book and a random walk, the utility got a short, explainable, capacity-aware queue — and a repeatable way to regenerate it every billing cycle.
Key takeaways
- A 42,372-customer meter panel was scored end to end, from raw reads to queue.
- Cleaning and behavioural encoding turned noisy reads into learnable fingerprints.
- An imbalance-tuned model, gated on recall and baselines, produced trustworthy scores.
- The result was a ranked, explainable audit queue matched to real inspection capacity.