Skip to content

Adeyeha/federated_graph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FGI: Federated Graph Intelligence

A privacy-preserving Graph Neural Network framework for financial fraud detection using federated learning. FGI enables organizations to collaboratively train fraud detection models on their transaction graphs without sharing raw data.

Features

  • Federated Learning — Train models collaboratively across multiple clients with privacy-preserving aggregation
  • Temporal Graph Neural Networks — Capture temporal dynamics in transaction networks with decay-aware convolutions
  • Dual-Head Risk Scoring — Entity-level and transaction-level fraud risk assessment
  • Privacy & Security — Differential privacy, secure aggregation, and cryptographic verification
  • Feature Engineering — Node and edge feature extraction with temporal windowing and missing data handling
  • Robust Aggregation — Multiple strategies including FedAvg, robust aggregation, and trust-weighted
  • Model Validation — Canary generators, conformance checking, and model contract validation
  • Score Calibration — Isotonic regression-based calibration with cold-start fallback
  • Multiple Backends — In-process, HTTP, and gRPC communication options
  • Compliance Ready — Built-in audit trails, SAR support, and serialization for regulatory requirements

Installation

pip install fgi

Optional extras:

pip install fgi[grpc]      # gRPC communication backend
pip install fgi[redis]     # Redis-based embedding store
pip install fgi[scoring]   # Score calibration with scikit-learn
pip install fgi[dev]       # Development tools
pip install fgi[all]       # Everything

Quick Start

import torch
from torch_geometric.data import Data
from fgi import FGIConfig
from fgi.models import FGIModel

# Create configuration
config = FGIConfig()

# Initialize model
model = FGIModel(in_channels=10, config=config.model)

# Prepare graph data
x = torch.randn(100, 10)
edge_index = torch.randint(0, 100, (2, 500))

# Forward pass returns embeddings and risk scores
embeddings, entity_scores, txn_scores = model(x, edge_index)

Federated Training

from fgi.federation import FederationServer, FederationClient

server = FederationServer(
    num_rounds=config.federation.num_rounds,
    min_clients=config.federation.min_clients,
)

client = FederationClient(client_id="client_1", model=model, config=config)

Configuration

FGI uses Pydantic-based configuration with sensible defaults:

from fgi import FGIConfig

config = FGIConfig.from_yaml("config.yaml")
config.to_yaml("config_output.yaml")

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages