TrendMiner propose un modèle personnalisé pour la détection d'anomalies multi-variables via sa fonctionnalité de notebook et de machine learning model tags.
Le TrendMiner Anomaly Detection Model est entraîné sur une vue TrendHub contenant les conditions de fonctionnement normales de votre processus. Après avoir appris les conditions de processus souhaitées, le modèle sera alors capable de détecter les anomalies sur les nouvelles données entrantes.
Le modèle lui-même peut être formé à l'intérieur de la fonctionnalité de notebook intégrée après le chargement d'une vue TrendHub en tant que DataFrame. Plus d'informations sur la fonctionnalité Notebook sont disponibles ici.
Remarque : Le paquetage anomaly_detection est expérimental. Les fonctions de ce paquetage peuvent être modifiées ou supprimées dans les prochaines versions.
- Initiation au modèle
- Formation du modèle
- Évaluation de la formation
- Utilisation du modèle dans les Notebooks
- Utilisation du modèle avec les tags MLM
Initiation du modèle
Le modèle de détection des anomalies est fourni par le paquetage expérimental et peut être chargé comme suit :
from trendminer_experimental.anomaly_detection.model import TMAnomalyModel
# Instantiate the model
model = TMAnomalyModel()
Construire le modèle
Le modèle d'anomalie est basé sur des cartes autoadaptatives (Self Organising Maps). Conceptuellement, le modèle ajuste une grille flexible d'unités, sur l'ensemble des données d'apprentissage. Dans la phase d'entraînement, l'algorithme tente de minimiser la distance entre les points de données d'entraînement à n dimensions et les unités les plus proches, tout en essayant de garder la grille aussi lisse que possible pour éviter l'ajustement excessif des données d'entraînement.
Pour former le modèle, nous commençons par charger une vue TrendHub qui représente les conditions de fonctionnement normales. Après le chargement de la vue, le modèle peut être entraîné. L'utilisateur peut spécifier le nombre d'itérations utilisées pour l'étape de formation.
# Loading TrendHub view: Normal Operation Conditions
from trendminer.views import Views
views = Views(client)
df_train = views.load_view('c3fa5b78-3df9-4fe4-b6d0-e0da4f19c24e')
# Training the model
q_error, topo_error = model.fit(df_train, 500)# Training for 500 iterations
Évaluer la formation
La méthode fit renvoie une liste d'erreurs de quantification et d'erreurs topologiques. L'erreur de quantification mesure la distance entre les points de données d'apprentissage et les unités de la grille, tandis que l'erreur topologique mesure la régularité de la grille et indique un surajustement.
- Un score plus faible indique un meilleur ajustement.
- Les erreurs doivent présenter une tendance à la baisse pour chaque itération.
# Plot errors (requires matplotlib import)
plt.plot(q_error);
plt.plot(topo_error);
Exécuter le modèle à l'intérieur des Notebooks
Le TMAnomalyModel possède deux variables de sortie : Anomaly_Class et Anomaly_Score. La première (Class) identifie un point comme étant anormal ou non, en fonction de la distance du point à l'unité la plus proche dans le modèle et du pourcentage de seuil que vous avez fourni lors de la conversion du modèle en sa représentation PMML. Le second, Score, est la distance entre un point et l'unité la plus proche dans le modèle.
# Loading TrendHub view: Test data or New incoming data
from trendminer.views import Views
views = Views(client)
df_test = views.load_view('c3fa5b78-3df9-4fe4-b6d0-e0da4f19c24e')
# Run model (anomaly_class)
anomaly_class = model.predict(df_test, 0.99)
# Run model (anomaly_score)
anomaly_score = model.score_samples(df_test)
Exécutez le modèle en tant que Machine Learning Model tags.
Une fois le modèle construit sur des données d'un comportement normal, nous pouvons déployer le modèle sur le moteur de scoring de TrendMiner. Pour cela, nous devons convertir le modèle dans son format PMML. Le TMAnomalyModel possède une méthode utilitaire pour convertir le modèle en PMML (to_pmml). Cette fonction prend deux arguments. Le premier argument est le nom du modèle. Le second argument est le pourcentage du seuil.
Après le déploiement, le modèle peut être sélectionné dans la fonctionnalité de tag Machine Learning Model.
model_name = 'Demo_Anomaly_Detection'
zementis = ZementisModels(client)
# Convert model to PMML
model_pmml = model.to_pmml(model_name, 0.99)
# Deploy the model
model_id = zementis.deploy_model(model_pmml)
model_details = zementis.model_details(model_id)
Plus d'informations
Vous trouverez de plus amples informations dans la documentation expérimentale de python.
Limites actuelles
Les limitations des Machine Learning Model tags s'appliquent à ce modèle.