Protocole d'Innovation Scientifique SST Québec

Graphes de Connaissances
& IA Prédictive
pour la SST

Un protocole technique complet pour démontrer l'apport des graphes de connaissances Neo4j et agents IA multi-spécialisés dans la détection proactive des risques professionnels. Algorithmes, outils, API et structure de résultats pour transformer les pratiques de prévention au Québec.

Protocole d'Innovation
en 7 Phases

Une approche systématique pour intégrer graphes de connaissances et IA dans la prévention SST

1

Acquisition Multi-Sources

Ingestion de données hétérogènes (CNESST, IRSST, IoT, RH) via pipeline distribué Apache Kafka + Spark. Validation schématique (JSON Schema, Avro) et garanties de qualité (complétude, fraîcheur, cohérence).

Sources prioritaires : API REST CNESST Open Data (793K+ incidents), base documentaire IRSST (études PDF/HTML), flux IoT temps réel (capteurs, caméras, bracelets), systèmes RH (formations, affectations).
2

Prétraitement & Normalisation

Nettoyage (outliers, duplicatas, valeurs manquantes), anonymisation GDPR/Loi 25 (pseudonymisation SHA-256, k-anonymité), normalisation taxonomique (SCIAN, SIMDUT, codes SST), enrichissement géographique et contextuel.

# Pipeline ETL Spark
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, hash

spark = SparkSession.builder \
    .appName("SafetyGraph_ETL") \
    .config("spark.neo4j.url", "bolt://neo4j:7687") \
    .getOrCreate()

# Anonymisation pseudonymisation
df_anonymized = df_raw.withColumn(
    "id_anonyme",
    hash(col("nas"), col("salt"))
).drop("nas", "nom", "prenom")
3

Modélisation Graphe Neo4j

Construction d'un modèle sémantique avec 12 entités-clés (Travailleur, Zone_Travail, Équipement, Incident_CNESST, Near_Miss, Agent_IA, Formation, Procédure_SST, Document_IRSST, Norme_ISO, Capteur_IoT, Événement) et 25+ types de relations avec propriétés temporelles.

// Cypher - Création modèle graphe
CREATE (:Travailleur {
    id_anonyme: "hash_sha256",
    age_groupe: "45-50",
    experience_annees: 12
})

CREATE (:Zone_Travail {
    nom: "Atelier_Usinage_C14",
    niveau_risque_iso: 3,
    superficie_m2: 450
})

// Relation avec propriétés temporelles
MATCH (t:Travailleur), (z:Zone_Travail)
CREATE (t)-[:TRAVAILLE_DANS {
    date_debut: datetime(),
    frequence_presence: 0.95,
    poste: "Opérateur CN"
}]->(z)
4

Feature Engineering Graphe

Extraction de features à partir du graphe : walk-based (Node2Vec, DeepWalk), agrégations structurelles (degré, centralité, clustering), embeddings Graph Neural Networks (GNN), similarité vectorielle (cosine, euclidienne).

Algorithmes recommandés : Node2Vec (embeddings), GraphSAGE (GNN inductif), GAT (Graph Attention Networks), Louvain/Leiden (détection communautés), PageRank (importance nœuds).
5

Modélisation Prédictive ML

Entraînement de modèles supervisés (classification incidents à 7 jours) avec XGBoost, LightGBM, CatBoost. Utilisation GNN (PyTorch Geometric) pour propagation contextuelle. Validation croisée spatiale (éviter data leakage géographique).

# Entraînement XGBoost
import xgboost as xgb
from sklearn.model_selection import train_test_split

# Features from graph + IoT
X = features_df[[
    'zone_risque_iso', 'travailleur_age',
    'heures_consecutives', 'formations_manquantes',
    'equipement_incidents_historique',
    'fatigue_score_bracelet',
    'posture_anormale_count_7j',
    'node2vec_embedding_128d'  # From graph
]]
y = labels_df['incident_7j']

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, stratify=y
)

model = xgb.XGBClassifier(
    n_estimators=500,
    max_depth=8,
    learning_rate=0.05,
    objective='binary:logistic'
)

model.fit(X_train, y_train)
6

Déploiement Agents IA

Architecture multi-agents avec 5 agents spécialisés (Vision YOLOv8, IoT biométrique, Contexte graphe, ML prédiction, Notification) orchestrés par un Maestro. Inférence temps réel avec latence <200ms.

Stack agents : LangChain/LangGraph (orchestration), FastAPI (endpoints REST), Celery (task queue), Redis (cache), Prometheus + Grafana (monitoring).
7

Validation & Monitoring

Tests rigoureux : métriques quantitatives (Precision, Recall, F1, AUC-ROC), validation externe (sites pilotes), tests adversariaux (robustesse), monitoring drift de modèle (réentraînement automatique si dégradation).

Algorithmes
Recommandés

Stack algorithmique pour analyse prédictive et graphes de connaissances

🧠

Graph Neural Networks

Apprentissage profond sur graphes pour propagation contextuelle et embeddings

  • GraphSAGE (inductif, scalable)
  • GAT (Graph Attention)
  • GCN (Graph Convolutional)
  • PyTorch Geometric / DGL
🎯

Gradient Boosting

Modèles ensemblistes haute performance pour classification/régression

  • XGBoost (extreme gradient)
  • LightGBM (Microsoft, rapide)
  • CatBoost (Yandex, catégories)
  • HistGradientBoosting (sklearn)
🗺️

Graph Embeddings

Représentations vectorielles de nœuds pour similarité et ML

  • Node2Vec (random walks)
  • DeepWalk (skip-gram)
  • LINE (large-scale)
  • Metapath2Vec (hétérogènes)
👁️

Computer Vision

Détection objets et postures pour analyse vidéo temps réel

  • YOLOv8 (détection temps réel)
  • MediaPipe (pose estimation)
  • OpenPose (squelette 2D/3D)
  • REBA/RULA scoring auto
📊

Séries Temporelles

Analyse et prédiction de tendances temporelles SST

  • Prophet (Facebook, robuste)
  • LSTM/GRU (deep learning)
  • ARIMA/SARIMA (classique)
  • Temporal Fusion Transformer
🔍

Détection Anomalies

Identification automatique de comportements à risque

  • Isolation Forest
  • One-Class SVM
  • Autoencoders (deep)
  • LOF (Local Outlier Factor)
💡

Explicabilité (XAI)

Transparence des prédictions pour confiance et audit

  • SHAP (Shapley values)
  • LIME (local interpretable)
  • Feature importance native
  • Counterfactual explanations
🎲

Graph Analytics

Algorithmes classiques pour analyse structurelle

  • PageRank (importance)
  • Louvain/Leiden (communautés)
  • Dijkstra/A* (chemins)
  • Centrality measures

Outils & Stack
Technologique

Écosystème complet pour traitement grande échelle et déploiement production

┌─────────────────────────────────────────────────────────────────────┐
│                    ARCHITECTURE SAFETYGRAPH                         │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ┌──────────────────────────────────────────────────────────────┐  │
│  │                   COUCHE INGESTION                           │  │
│  │                                                              │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │  │
│  │  │ CNESST API  │  │ IRSST Docs  │  │  IoT MQTT   │        │  │
│  │  │  (REST)     │  │  (Scraping) │  │  (Sensors)  │        │  │
│  │  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘        │  │
│  │         │                 │                 │               │  │
│  │         └─────────────────┼─────────────────┘               │  │
│  │                           ▼                                 │  │
│  │                  ┌────────────────┐                         │  │
│  │                  │ Apache Kafka   │                         │  │
│  │                  │ Event Streaming│                         │  │
│  │                  └────────┬───────┘                         │  │
│  └──────────────────────────┼──────────────────────────────────┘  │
│                              │                                     │
│  ┌──────────────────────────┼──────────────────────────────────┐  │
│  │                   COUCHE ETL/ELT                             │  │
│  │                          ▼                                   │  │
│  │                  ┌────────────────┐                          │  │
│  │                  │ Apache Spark   │                          │  │
│  │                  │ PySpark ETL    │                          │  │
│  │                  └────────┬───────┘                          │  │
│  └──────────────────────────┼──────────────────────────────────┘  │
│                              │                                     │
│  ┌──────────────────────────┼──────────────────────────────────┐  │
│  │               COUCHE GRAPHE DE CONNAISSANCES                 │  │
│  │                          ▼                                   │  │
│  │              ┌───────────────────────┐                       │  │
│  │              │   Neo4j Aura          │                       │  │
│  │              │   Enterprise v5.x     │                       │  │
│  │              │                       │                       │  │
│  │              │  • Cypher queries     │                       │  │
│  │              │  • GDS algorithms     │                       │  │
│  │              │  • Vector similarity  │                       │  │
│  │              └───────────┬───────────┘                       │  │
│  └──────────────────────────┼──────────────────────────────────┘  │
│                              │                                     │
│  ┌──────────────────────────┼──────────────────────────────────┐  │
│  │                  COUCHE ML & IA                              │  │
│  │                          ▼                                   │  │
│  │       ┌──────────────┬──────────────┬──────────────┐        │  │
│  │       │ PyTorch GNN  │  XGBoost ML  │  YOLOv8 CV   │        │  │
│  │       │  (GraphSAGE) │  (Predict.)  │  (Vision)    │        │  │
│  │       └──────┬───────┴──────┬───────┴──────┬───────┘        │  │
│  │              └──────────────┼──────────────┘                │  │
│  │                             ▼                                │  │
│  │                    ┌─────────────────┐                      │  │
│  │                    │  LangGraph      │                      │  │
│  │                    │  Multi-Agents   │                      │  │
│  │                    └────────┬────────┘                      │  │
│  └──────────────────────────────┼──────────────────────────────┘  │
│                                  │                                 │
│  ┌───────────────────────────────┼──────────────────────────────┐ │
│  │                     COUCHE API & APPS                        │ │
│  │                               ▼                              │ │
│  │        ┌────────────┐  ┌────────────┐  ┌────────────┐      │ │
│  │        │ FastAPI    │  │ Dashboard  │  │  Mobile    │      │ │
│  │        │ REST/WS    │  │ React.js   │  │  App       │      │ │
│  │        └────────────┘  └────────────┘  └────────────┘      │ │
│  └──────────────────────────────────────────────────────────────┘ │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘
                
🗄️

Neo4j Aura Enterprise

Base de données graphe cloud-native, managed, avec scalabilité automatique

  • Cypher query language
  • GDS (Graph Data Science)
  • Vector similarity search
  • APOC procedures
  • Backup automatique multi-région

Apache Kafka

Event streaming distribué pour ingestion temps réel millions d'événements/sec

  • Kafka Connect (sources)
  • Kafka Streams (processing)
  • Schema Registry (Avro)
  • Exactly-once semantics
🔥

Apache Spark

ETL massivement parallèle avec PySpark pour transformation grande échelle

  • Spark SQL (dataframes)
  • Spark Streaming (micro-batch)
  • MLlib (ML distribué)
  • GraphX (graph processing)
🐍

Python Ecosystem

Librairies scientifiques pour ML, analyse et visualisation

  • PyTorch / TensorFlow
  • scikit-learn / XGBoost
  • pandas / NumPy / SciPy
  • matplotlib / seaborn / Plotly
🚀

FastAPI

Framework web moderne pour API REST haute performance

  • Async/await natif
  • Validation Pydantic
  • OpenAPI auto docs
  • WebSocket support
🎭

LangChain / LangGraph

Orchestration d'agents IA multi-spécialisés avec workflows complexes

  • Agent chains
  • Tool calling
  • Memory management
  • LLM integrations
📊

Monitoring Stack

Observabilité complète pour production (métriques, logs, traces)

  • Prometheus (métriques)
  • Grafana (dashboards)
  • ELK Stack (logs)
  • Jaeger (tracing)
🐳

Infrastructure Cloud

Déploiement containerisé avec orchestration Kubernetes

  • Docker (containers)
  • Kubernetes (orchestration)
  • Helm (package manager)
  • ArgoCD (GitOps)

API &
Endpoints

Interfaces REST pour intégration avec systèmes existants (CNESST, SIRH, ERP)

POST /api/v1/predict/incident

Prédiction de probabilité d'incident pour un travailleur/zone donnés. Retourne probabilité à 7 jours + facteurs contributifs + recommandations actionnables.

# Request body
{
  "travailleur_id": "T-45872",
  "zone_id": "Z-Atelier-C14",
  "contexte": {
    "fatigue_score": 0.82,
    "heures_consecutives": 4.5,
    "postures_anormales_count": 4
  }
}

# Response
{
  "probabilite_incident_7j": 0.783,
  "facteurs_principaux": [
    {"facteur": "zone_risque_iso", "contribution": 0.32},
    {"facteur": "fatigue_score", "contribution": 0.28}
  ],
  "recommandations": [
    "Retrait immédiat zone rouge",
    "Pause obligatoire 30min"
  ]
}
GET /api/v1/graph/path

Recherche de chemins causaux dans le graphe entre deux nœuds. Utile pour enquêtes incidents (identifier chaînes causales).

POST /api/v1/incidents/ingest

Ingestion bulk d'incidents CNESST. Validation schématique, enrichissement automatique et insertion dans graphe Neo4j.

GET /api/v1/zones/risk-score

Calcul score de risque agrégé pour une zone donnée. Combine historique incidents, near-miss, conformité procédures, état équipements.

POST /api/v1/agents/detect

Endpoint pour détection temps réel via agents IA (vision, IoT). Traite flux vidéo/capteurs et retourne alertes anomalies.

GET /api/v1/export/cnesst

Export formaté pour déclaration CNESST. Auto-génération formulaires avec traçabilité complète.

Structure des
Résultats

Organisation des outputs pour servir de référence dans la transformation des pratiques SST

📊

Rapport Technique Détaillé

Document structuré avec sections : méthodologie (protocole 7 phases), architecture système (diagrammes), algorithmes utilisés (hyperparamètres), résultats de validation (métriques, tests), discussion (limites, améliorations futures).

Format recommandé : Markdown/LaTeX pour versioning Git, export PDF pour diffusion, annexes techniques (code snippets, requêtes Cypher).
🗄️

Base de Connaissances Neo4j

Dump complet du graphe (nodes, relationships, properties) avec scripts de reconstruction. Export Cypher statements pour réplication. Documentation ontologie SST (schéma entités-relations avec contraintes).

# Export Neo4j dump
neo4j-admin dump \
  --database=safetygraph \
  --to=/exports/safetygraph_v1.dump

# Export Cypher statements
CALL apoc.export.cypher.all(
  "/exports/safetygraph_schema.cypher",
  {format: 'cypher-shell'}
)
🧪

Jeux de Données de Test

Datasets anonymisés pour reproduction expérimentations : train/validation/test splits, features engineerées, labels. Format Parquet/CSV avec documentation métadonnées.

Conformité : Anonymisation k-anonymité (k≥5), pseudonymisation irréversible, pas de données sensibles (NAS, noms, adresses).
📈

Dashboard Interactif

Interface web (React.js + D3.js) pour exploration résultats : visualisation graphe (force-directed layout), métriques ML (courbes ROC, confusion matrix), analyses sectorielles (heatmaps risques par SCIAN).

🔬

Protocoles de Réplication

Instructions step-by-step pour reproduire expérimentations : prérequis infrastructure (versions logiciels), scripts d'installation (Docker Compose), notebooks Jupyter annotés (analyses exploratoires).

📚

Publication Scientifique

Article académique pour revue à comité de lecture (ex: Safety Science, Accident Analysis & Prevention) : introduction (état de l'art), méthodologie, résultats, discussion, conclusion. Soumission avec données supplémentaires open access.

🎓

Guides de Bonnes Pratiques

Documents opérationnels pour praticiens SST : comment interpréter prédictions IA, workflows décisionnels (matrice risque-action), formation utilisateurs finaux (responsables SST, superviseurs).

🔗

API Reference Documentation

Documentation complète API (OpenAPI/Swagger) : endpoints, paramètres, exemples requêtes/réponses, codes d'erreur, rate limits. SDK Python/JavaScript pour intégration simplifiée.

🎯 Objectif Transformation : Cette structure permet aux organisations (CNESST, IRSST, entreprises privées, chercheurs) de reproduire, adapter et améliorer le protocole. La transparence méthodologique et la disponibilité des outils favorisent l'adoption large et l'innovation continue en prévention SST au Québec.