dataSciencePilot analyzeMissingPatterns

Analyse de volumétrie sur des données de capteurs IoT à haute cardinalité

Scénario de test & Cas d'usage

Contexte Métier

Dans une usine, des milliers de capteurs génèrent des données en continu. Certaines pannes de capteurs entraînent des données manquantes. L'objectif est d'analyser rapidement des téraoctets de données pour voir si les pannes (données manquantes) de certains types de capteurs sont corrélées, tout en gérant la haute cardinalité des identifiants de machine et de capteur.
À propos du Set : dataSciencePilot

Machine Learning automatisé (AutoML) et génération de pipelines.

Découvrir toutes les actions de dataSciencePilot
Préparation des Données

Création d'une table volumineuse simulant des lectures de capteurs, avec une haute cardinalité pour `ID_MACHINE` et `ID_CAPTEUR`. Une variable `POIDS_EVENEMENT` est ajoutée pour servir de fréquence.

Copié !
1DATA casuser.iot_sensors (bufsize=1g);
2 LENGTH ID_MACHINE $50. ID_CAPTEUR $50.;
3 DO ID_MACHINE_NUM = 1 to 10000;
4 ID_MACHINE = 'MACHINE-' || put(ID_MACHINE_NUM, z8.);
5 DO j = 1 to 500;
6 ID_CAPTEUR = 'SENSOR-' || put(j, z4.);
7 TEMPERATURE = 20 + rand('NORMAL', 0, 5);
8 PRESSION = 1013 + rand('NORMAL', 0, 2);
9 VIBRATION = rand('NORMAL', 0, 0.1);
10 POIDS_EVENEMENT = 1 + floor(rand('UNIFORM')*5);
11 /* Simuler des pannes corrélées pour certains capteurs */
12 IF j > 450 and rand('UNIFORM') < 0.4 THEN call missing(PRESSION, VIBRATION);
13 IF j < 20 and rand('UNIFORM') < 0.2 THEN call missing(TEMPERATURE);
14 OUTPUT;
15 END;
16 END;
17RUN;

Étapes de réalisation

1
Chargement de la table de capteurs dans CAS.
Copié !
1 
2PROC CASUTIL;
3load
4DATA=casuser.iot_sensors casout='iot_sensors' replace;
5QUIT;
6 
2
Exécution de l'analyse avec une limite de comptage distinct basse pour forcer l'utilisation de l'algorithme Misra-Gries, et en utilisant une variable de fréquence.
Copié !
1PROC CAS;
2 dataSciencePilot.analyzeMissingPatterns
3 TABLE={name='iot_sensors'},
4 distinctCountLimit=2000,
5 misraGries=true,
6 freq='POIDS_EVENEMENT',
7 casOut={name='iot_perf_analysis', replace=true};
8RUN;
9QUIT;

Résultat Attendu


L'action doit s'exécuter avec succès malgré la haute cardinalité des identifiants (plus de 10000 machines). La table de résultats `iot_perf_analysis` doit identifier un modèle principal où les variables `PRESSION` et `VIBRATION` sont manquantes simultanément. L'analyse doit prendre en compte la variable `POIDS_EVENEMENT`, donnant plus d'importance aux événements fréquents. Ceci valide la robustesse et la performance de l'action sur de grands volumes de données complexes.