You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi team,
First of all, thank you for open-sourcing this project. I've been working with gen-fraud-graph to understand how synthetic fraud data can be used for GNN-based detection, and I have two questions about the design choices.
Fraud signal is trivially detectable by non-structural attributes
After analyzing the generated data, I found that fraudulent transactions are perfectly separable using only three attributes:
Attribute
Fraud
Normal
Amount
$9,999 fixed
$10–$500
Description
"rapid movement", "structuring", "shell company"
"utility bill", "grocery", "salary"
Timestamp
12:00:00 fixed
Distributed across hours
Question: Was this level of separability intentional for pedagogical purposes, or should the generator create more realistic fraud patterns where structural graph features (e.g., cycles, centrality) are necessary for detection?
Cycles exist for both fraud and normal transactions
I also analyzed whether the cyclic structure distinguishes fraud. Using networkx.simple_cycles(length_bound=7):
Metric
Fraud
Normal
Transactions in cycles
100%
100%
Average cycles per edge
~1,053
~1,054
Every edge participates in ~1,000 cycles, meaning the graph is extremely dense. The README states the fraud is "cyclic money-laundering rings with configurable depth (4–7 hops)," but this structure appears to be a property of the entire graph, not just fraud.
Question: If the cyclic structure is not discriminative, what is the intended graph-based signal that a GNN should learn? Is the generator designed primarily for database load testing (as mentioned in the README) rather than ML benchmarking?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Hi team,
First of all, thank you for open-sourcing this project. I've been working with gen-fraud-graph to understand how synthetic fraud data can be used for GNN-based detection, and I have two questions about the design choices.
After analyzing the generated data, I found that fraudulent transactions are perfectly separable using only three attributes:
Question: Was this level of separability intentional for pedagogical purposes, or should the generator create more realistic fraud patterns where structural graph features (e.g., cycles, centrality) are necessary for detection?
I also analyzed whether the cyclic structure distinguishes fraud. Using networkx.simple_cycles(length_bound=7):
Every edge participates in ~1,000 cycles, meaning the graph is extremely dense. The README states the fraud is "cyclic money-laundering rings with configurable depth (4–7 hops)," but this structure appears to be a property of the entire graph, not just fraud.
Question: If the cyclic structure is not discriminative, what is the intended graph-based signal that a GNN should learn? Is the generator designed primarily for database load testing (as mentioned in the README) rather than ML benchmarking?
The dataset generated was
!gen-fraud-graph \ --scale 0.0001 \ --provider fake \ --fraud-rings 180 \ --output dataAll reactions