Benchmark des modèles de classement

Résultat exploratoire. Meilleure combinaison stable : balanced_rf + device_anomaly + extra_trees. Elle doit encore être confirmée sur de nouvelles campagnes avant tout pilote opérationnel.

Ce que ça veut dire, simplement

Les indicateurs techniques (PR-AUC, précision) utilisent une échelle trompeuse : 0,33 n'est pas une note de 3/20. Voici la même chose en langage clair :

gain

Pourquoi pas 90 % ? Parce qu'environ 4 alarmes critiques sur 5 ne sont pas des fuites (pompes, vannes, trafic…). Quand le signal d'une fuite ressemble à celui d'un bruit urbain, aucun modèle ne peut deviner. Le modèle aide donc à trier par où commencer, pas à confirmer qu'il y a une fuite.

Données et protocole

Du fichier brut à un échantillon

262 910 mesures acoustiques
          ↓ historique disponible avant la visite
344 visites avec observation du technicien
          ↓ appareil relié + mesure du matin présente
320 échantillons utilisables = 99 fuites + 221 non-fuites
          ↓ séparation par campagne ou par appareil
entraînement sur 4 groupes / évaluation sur le 5e groupe jamais vu

La cible label vaut 1 quand l'observation du technicien confirme une fuite et 0 dans les autres visites. Un appareil jamais visité n'est jamais transformé en faux exemple négatif.

Résumé descriptif des échantillons réellement utilisés :

Classe Échantillons Minimal récent médian Anomalie médiane Part critical sur 7 j médiane
Pas de fuite 221 466 0.52 1.00
Fuite confirmée 99 601 1.09 1.00

Ces médianes décrivent les groupes ; elles ne constituent pas une règle de décision.

Comment lire les noms des variables

Un nom comme minimal_mean_7d se décompose ainsi :

Les identifiants d'appareil, les dates et les observations textuelles ne sont pas donnés au modèle comme raccourcis de prédiction.

Modèles comparés, en langage courant

Nom affiché Idée simple Rôle dans le benchmark
vendor_minimal Classe selon le niveau acoustique récent, comme la logique fournisseur actuelle Référence à battre
device_anomaly Cherche un changement inhabituel par rapport à l'historique du même appareil Signal personnalisé sans apprentissage des étiquettes
logistic_l2 Additionne les indices avec des poids limités pour éviter les décisions extrêmes Modèle stable et explicable
logistic_l1 Variante qui force beaucoup de variables inutiles à avoir un poids nul Sélection automatique de variables
svm_rbf Trace une frontière courbe entre fuites et non-fuites Teste des séparations non linéaires
random_forest Fait voter plusieurs arbres construits sur des sous-échantillons Capture des règles et interactions non linéaires
extra_trees Fait voter des arbres encore plus randomisés Réduit la dépendance à une seule règle fragile
hist_gradient Corrige progressivement les erreurs d'une suite de petits arbres Modèle de boosting intégré à scikit-learn
xgboost Boosting régularisé, populaire sur les données tabulaires Concurrent plus flexible, mais plus exposé au surapprentissage
catboost Boosting à arbres ordonnés, robuste sur petits tableaux hétérogènes Variante déséquilibrée (poids auto)
balanced_rf Forêt aléatoire sous-échantillonnée (EasyEnsemble-like) Conçue pour les classes rares
tabpfn Fondation tabulaire pré-entraînée (prior in-context) Référence petit-jeu de données
isolation_forest Repère les visites rares sans utiliser l'étiquette fuite/non-fuite Référence non supervisée
autoencoder Petit réseau qui reconstruit le profil normal (86 variables) ; forte erreur = visite anormale Détection multivariée sans étiquettes
ocsvm One-Class SVM : enveloppe du comportement normal apprise sur les non-fuites Détection multivariée sans étiquettes
lof Densité locale : une visite isolée de ses voisins est suspecte Détection multivariée sans étiquettes
stacking Régression logique qui apprend à combiner tous les scores ci-dessus Méta-modèle (empilement honnête hors-pli)
COMBO Fait la moyenne des rangs produits par plusieurs signaux Cherche un accord entre méthodes différentes

Le combo ne vote pas « fuite / pas fuite ». Chaque composant attribue un score, les visites sont classées, puis leurs positions moyennes donnent le classement final.

benchmark

Validation sur campagnes inconnues

Modèle PR-AUC ROC-AUC Précision@7 Rappel@7
COMBO: balanced_rf + device_anomaly + extra_trees 0.471 0.674 0.337 0.838
extra_trees 0.451 0.680 0.341 0.848
xgboost 0.446 0.645 0.337 0.838
balanced_rf 0.441 0.655 0.329 0.818
hist_gradient 0.435 0.639 0.333 0.828
random_forest 0.433 0.656 0.329 0.818
logistic_l1 0.424 0.631 0.317 0.788
catboost 0.418 0.617 0.337 0.838
tabpfn 0.413 0.654 0.354 0.879
stacking 0.411 0.629 0.329 0.818
device_anomaly 0.399 0.596 0.305 0.758
vendor_minimal 0.387 0.586 0.321 0.798
svm_rbf 0.363 0.576 0.325 0.808
autoencoder 0.363 0.565 0.329 0.818
isolation_forest 0.362 0.556 0.317 0.788
lof 0.355 0.551 0.329 0.818
ocsvm 0.355 0.545 0.329 0.818
logistic_l2 0.354 0.570 0.325 0.808

Validation sur appareils inconnus

Modèle PR-AUC ROC-AUC Précision@7 Rappel@7
COMBO: balanced_rf + device_anomaly + extra_trees 0.481 0.683 0.321 0.798
balanced_rf 0.456 0.682 0.346 0.859
extra_trees 0.454 0.678 0.337 0.838
random_forest 0.453 0.679 0.333 0.828
xgboost 0.447 0.672 0.350 0.869
catboost 0.438 0.651 0.337 0.838
hist_gradient 0.438 0.658 0.329 0.818
stacking 0.432 0.666 0.341 0.848
logistic_l1 0.427 0.604 0.321 0.798
device_anomaly 0.399 0.596 0.305 0.758
vendor_minimal 0.387 0.586 0.321 0.798
tabpfn 0.383 0.614 0.329 0.818
isolation_forest 0.366 0.562 0.329 0.818
logistic_l2 0.363 0.543 0.301 0.747
lof 0.357 0.559 0.329 0.818
autoencoder 0.352 0.557 0.325 0.808
svm_rbf 0.352 0.551 0.305 0.758
ocsvm 0.349 0.535 0.325 0.808

Comment lire les métriques

Les prédictions sont dites out-of-fold : chaque score affiché a été produit par un modèle qui n'avait pas vu cet échantillon pendant son entraînement.

Meilleure combinaison

balanced_rf + device_anomaly + extra_trees

Pour une politique strictement limitée aux sept premiers, le signal le plus stable est catboost (précision@7 minimale 0.337 entre les deux validations). Beaucoup de campagnes ne contiennent qu'environ huit visites : sélectionner sept lignes laisse mécaniquement peu de marge au modèle.

Interprétation correcte

Ce benchmark classe des visites historiques déjà sélectionnées. Il ne mesure pas le rappel sur les 443 appareils, car les appareils non visités sont non étiquetés. La meilleure combinaison est une hypothèse de pilote, pas une preuve de déploiement.

Le prochain test utile est prospectif : utiliser le classement pour sept visites et conserver une huitième visite d'audit hors classement. C'est cette collecte qui permettra de mesurer le gain réel et le biais de sélection.

Les résultats complets sont disponibles dans model_benchmark.csv.