Ahmed Doghri Logo Image
Ahmed Doghri

graphpulse

Most anomaly detectors reach for degree because it's the easiest number on a graph to compute, which makes it the easiest number to sneak past. graphpulse looks at neighborhood disagreement instead and lifts AUC from 0.196 to 0.938.

graphpulse, a heterophily-aware graph anomaly detector

The Weird Node Is Not Always The Loud One

A lot of anomaly detectors chase degree because hubs and isolates are the easy catch. What they miss is the quieter failure: a node with a perfectly ordinary number of connections, all of them pointed at the wrong kind of neighbor.

graphpulse plants exactly that kind of anomaly on purpose. The graph has communities, features, and nodes that look completely normal by degree while their neighborhood is quietly telling a different story.

Score The Disagreement, Not The Popularity

The detector compares each node's own features to its neighborhood average, adds a small cross-community signal, and keeps the whole scoring function simple enough to audit in one sitting.

This is not trying to out-leaderboard a GNN. It is the sharp, honest baseline you check for heterophilous anomaly structure before you spend a training budget proving a bigger model was necessary.

The Number

Degree baseline AUC is 0.196, worse than a coin flip, proof that popularity is not the same thing as suspicion. graphpulse AUC is 0.938, a 0.741 point gain on a graph with 96 nodes and 394 edges.

3 tests pass locally and on GitHub Actions across Python 3.9, 3.11, and 3.13.

Tools Used

Python
Graph Learning
Anomaly Detection
Heterophily
AUC
pytest
GitHub Actions CI