Cette rubrique explique comment utiliser Lindorm Machine Learning (ML) pour réaliser un apprentissage automatique directement dans les bases de données, en couvrant l'entraînement, l'inférence et la gestion des modèles.
Vue d'ensemble
Lindorm ML est un service d'apprentissage automatique intégré à la base de données, prêt à l'emploi et fourni par LindormTSDB. Le processus Lindorm ML comprend les étapes suivantes : entraînement du modèle, inférence du modèle et gestion du modèle. Une fois Lindorm ML activé, exécutez des instructions SQL pour réaliser l'intégralité du processus d'apprentissage automatique au sein de vos bases de données et exploiter davantage la valeur de vos données. Lindorm ML offre les avantages suivants :
Simplicité d'utilisation : exécutez des instructions SQL standard pour réaliser l'intégralité du processus d'apprentissage automatique dans la base de données, même sans connaissances spécialisées en machine learning.
Rétention des données : inutile d'exporter les données vers des plateformes externes pour l'apprentissage automatique. Cela améliore l'efficacité du processus et permet à vos données de respecter les exigences réglementaires.
Fonctionnalités d'entreprise : dans Lindorm ML, les modèles et les données sont stockés dans la base de données. Vous pouvez ainsi utiliser les fonctionnalités d'entreprise offertes par les bases de données lors de l'apprentissage automatique, telles que la gestion des autorisations, l'audit des données et le chiffrement des données.
Activer Lindorm ML
Pour plus d'informations sur l'activation de Lindorm ML, consultez Activer Lindorm ML.
Entraînement du modèle
Lorsque vous entraînez un modèle avec Lindorm ML, spécifiez le type de tâches que le modèle doit exécuter. Lindorm ML propose différents algorithmes adaptés à chaque type de tâche. Utilisez l'instruction CREATE MODEL étendue dans votre base de données pour entraîner un modèle.
Syntaxe
CREATE MODEL model_name
FROM { table_name | (select_statement) }
[ TARGET column_name ]
TASK ( TIME_SERIES_FORECAST | TIME_SERIES_ANOMALY_DETECTION )
ALGORITHM ( DEEPAR | TFT | esd | nsigma | ttest )
[ PREPROCESSORS 'string' ]
SETTINGS (
EPOCHS integer,
...
)
Paramètres
model_name : nom du modèle. Le nom du modèle est unique au sein d'un schéma.
FROM { table_name | (select_statement) } : nom de la table ou instruction de requête contenant les données utilisées pour l'entraînement du modèle. Les résultats de l'instruction doivent contenir au moins deux colonnes, dont l'une doit être la colonne temporelle.
TARGET column_name : nom de la colonne utilisée pour spécifier la cible de la prévision de séries temporelles ou de la détection d'anomalies dans les séries temporelles.
-
TASK : type de tâches que le modèle doit exécuter. Le tableau suivant décrit les types de tâches pris en charge par Lindorm ML.
Type de tâche Mot clé Prévision de séries temporelles TIME_SERIES_FORECAST Détection d'anomalies dans les séries temporelles TIME_SERIES_ANOMALY_DETECTION -
ALGORITHM : algorithme utilisé par le modèle. Le tableau suivant décrit les algorithmes pris en charge par Lindorm ML.
Type de tâche Algorithme Description Prévision de séries temporelles DeepAR L'algorithme DeepAR est un réseau neuronal profond basé sur un réseau neuronal récurrent (RNN). Pour plus d'informations, consultez les articles associés. TFT L'algorithme Temporal Fusion Transformer (TFT) est un réseau neuronal profond basé sur le mécanisme Transformer. Pour plus d'informations, consultez les articles associés. Détection d'anomalies dans les séries temporelles esd Cet algorithme a été développé par Alibaba DAMO Academy et s'applique aux anomalies ponctuelles, telles que les pics dans les courbes de surveillance et les scénarios où un petit nombre de points de données diffère significativement des autres. Pour plus d'informations, consultez la section Détection d'anomalies dans les séries temporelles. nsigma Cet algorithme a été développé par Alibaba DAMO Academy. Il est simple et facilite l'analyse des causes des anomalies. Pour plus d'informations, consultez la section Détection d'anomalies dans les séries temporelles. ttest Cet algorithme a été développé par Alibaba DAMO Academy. Il permet d'identifier si les métriques liées aux données de séries temporelles sont anormales en raison d'une modification de la valeur moyenne. Pour plus d'informations, consultez la section Détection d'anomalies dans les séries temporelles. -
PREPROCESSORS 'string' : opérations de prétraitement pour des colonnes spécifiques. Ce paramètre est facultatif. En général, les opérations de prétraitement sont spécifiées par des chaînes JSON.
La valeur du paramètre PREPROCESSORS contient deux composants : Columns qui indique les colonnes à prétraiter et Transformers qui indique les opérations de prétraitement à effectuer. Les opérations spécifiées par Transformers sont exécutées dans l'ordre spécifié. Chaque composant Transformers contient deux champs : Name qui spécifie le nom de l'opération de prétraitement et Parameters qui spécifie les paramètres liés à l'opération de prétraitement. L'exemple suivant montre une valeur d'exemple pour le paramètre PREPROCESSORS :
PREPROCESSORS '[ { "Columns":[ "c1" ], "Transformers":[ { "Name": "Imputer", "Parameters": {"value": 0} }, { "Name": "StandardScaler" } ] }, { "Columns":[ "c2", "c3" ], "Transformers":[ { "Name": "OrdinalEncoder" } ] } ]'RemarqueDans la valeur du paramètre PREPROCESSORS, le composant Columns et le champ Parameters sont tous deux facultatifs.
Les opérations de prétraitement spécifiées lors de l'entraînement du modèle sont automatiquement appliquées lors de l'inférence du modèle. Le tableau suivant décrit les opérations de prétraitement prises en charge par Lindorm ML.
Opération de prétraitement Paramètre Description OneHotEncoder Aucun Encode les caractéristiques catégorielles en valeurs binaires. Cette opération s'applique aux caractéristiques catégorielles non comparables en taille. OrdinalEncoder Aucun Encode les caractéristiques catégorielles en entiers à partir de 0. Cette opération s'applique aux caractéristiques catégorielles comparables en taille. Imputer - method : chaîne indiquant la méthode d'interpolation. Valeurs valides : dummy, mean, median, most_frequent, roll7 et last. Valeur par défaut : dummy.
- value : entier à interpoler. Valeur par défaut : 0. Ce paramètre est facultatif.
Interpole les valeurs manquantes. Vous pouvez sélectionner plusieurs politiques d'interpolation. StandardScaler Aucun Convertit les données en valeurs suivant une distribution normale standard avec une moyenne de 0 et un écart type de 1. Cette opération est également connue sous le nom de normalisation z-score. MinMaxScaler - min : entier indiquant la valeur minimale de la plage.
- max : entier indiquant la valeur maximale de la plage. Ce paramètre est facultatif.
Met à l'échelle les données dans une plage (min,max). Par défaut, la plage de valeurs est (0,1). LogTransformer Aucun Convertit les valeurs en leurs logarithmes. -
SETTINGS : autres paramètres configurables. Vous pouvez spécifier différents paramètres selon les types de tâches. Le tableau suivant décrit les paramètres pris en charge par Lindorm ML.
Paramètres liés à la prévision de séries temporelles
Paramètre Type Description Obligatoire epochs INTEGER Nombre d'époques pour l'entraînement du modèle. Ce paramètre s'applique uniquement à la prévision de séries temporelles. Valeur par défaut : 80 Oui time_column VARCHAR Colonne temporelle. Oui group_columns VARCHAR Colonne de regroupement. Cette colonne est utilisée comme colonne TAG pour déterminer la série temporelle. Oui freq VARCHAR Fréquence des données de séries temporelles. Exemple : 1D. Oui prediction_length INTEGER Pas de la prévision de séries temporelles. Oui feat_static_columns VARCHAR Ensemble de colonnes de caractéristiques statiques. Séparez plusieurs colonnes par des virgules (,). Non Paramètres liés à la détection d'anomalies dans les séries temporelles.
Pour plus d'informations sur les paramètres d'entraînement pris en charge par la détection d'anomalies dans les séries temporelles, consultez la section Détection d'anomalies dans les séries temporelles.
Exemples
CREATE MODEL tft_model
FROM (SELECT * FROM fresh_sales WHERE `time` > '2021-02-08T00:00:00+08:00')
TARGET sales
TASK time_series_forecast
ALGORITHM tft
SETTINGS
(
time_column 'time',
group_columns 'id_code',
feat_static_columns 'cate1_id,cate2_id,brand_id',
context_length '28',
prediction_length '6',
epochs '5',
freq '1D'
);
Gestion des modèles
Après l'exécution de l'instruction CREATE MODEL, exécutez des instructions SQL pour vérifier si le modèle est dans l'état Ready.
Consulter les informations de tous les modèles de la base de données
Utilisez l'instruction SHOW MODELS pour consulter les informations de base de tous les modèles présents dans la base de données.
L'instruction suivante illustre comment consulter les informations de tous les modèles d'une base de données :
SHOW MODELS;
Le résultat suivant est renvoyé :
+-------------------+--------+--------------------+-------------------------------+-------------------------------+
| name | status | sql_function | created_time | update_time |
+-------------------+--------+--------------------+-------------------------------+-------------------------------+
| tft_model | Ready | forecast | 2022-11-04T11:38:05.873+08:00 | 2022-11-04T11:39:14.046+08:00 |
+-------------------+--------+--------------------+-------------------------------+-------------------------------+
1 rows in set (524 ms)
Le tableau suivant décrit les valeurs renvoyées.
| Valeur renvoyée | Description |
| name | Nom du modèle. |
| status | État du modèle. Valeurs valides : Init, Training, Ready et Failed. La valeur Init indique que le modèle est en cours d'initialisation. La valeur Training indique que le modèle est en cours d'entraînement. La valeur Ready indique que le modèle est entraîné. La valeur Failed indique que l'entraînement du modèle a échoué. |
| sql_function | Fonction d'inférence. |
| created_time | Heure de création du modèle. |
| update_time | Heure de la dernière mise à jour du modèle. |
Consulter les informations d'un modèle spécifique
Utilisez l'instruction SHOW MODEL model_name pour consulter les informations détaillées d'un modèle spécifique.
L'instruction suivante illustre comment consulter les informations détaillées d'un modèle spécifique :
SHOW MODEL tft_model;
Le résultat suivant est renvoyé :
+-----------+--------+--------------+----------------------+-----------+------------------------------------+---------------+-------------------------------------------------+--------------------------------+-------------------------------+-------------------------------+
| name | status | sql_function | task_type | algorithm | query | preprocessors | settings | metrics | created_time | update_time |
+-----------+--------+--------------+----------------------+-----------+------------------------------------+---------------+-------------------------------------------------+--------------------------------+-------------------------------+-------------------------------+
| tft_model | Ready | forecast | TIME_SERIES_FORECAST | TFT | SELECT `time`, FIRST(`sales`) AS | [] | {time_column=time, group_columns=id_code, | {MAPE=0.35002756118774414, | 2022-11-04T11:38:05.873+08:00 | 2022-11-04T11:39:14.046+08:00 |
| | | | | | `sales`, `id_code`, `cate1_id`, | | feat_static_columns=cate1_id,cate2_id,brand_id, | MASE=0.41281554008773325, | | |
| | | | | | `cate2_id`, `brand_id` FROM | | context_length=28, prediction_length=6, | MSE=456.3769938151042} | | |
| | | | | | `fresh_sales` WHERE `time` > | | epochs=5, freq=1D,train_mode=LOCAL, | | | |
| | | | | | '2021-02-08T00:00:00+08:00' | | past_length=28, | | | |
| | | | | | sample by 1D fill zero | | forecast_start=2022-07-31 08:00:00} | | | |
+-----------+--------+--------------+----------------------+-----------+------------------------------------+---------------+-------------------------------------------------+--------------------------------+-------------------------------+-------------------------------+
1 rows in set (334 ms)
Le tableau suivant décrit les valeurs renvoyées.
| Valeur renvoyée | Description |
| task_type | Type de tâches que le modèle doit exécuter. |
| algorithm | Nom de l'algorithme utilisé par le modèle. |
| query | Instruction de requête utilisée pour l'entraînement du modèle. |
| preprocessors | Syntaxe des opérations de prétraitement. |
| settings | Paramètres liés au modèle. |
| metrics | Métriques du modèle. |
Supprimer un modèle spécifique
Utilisez l'instruction DROP MODEL model_name pour supprimer un modèle spécifique.
L'instruction suivante illustre comment supprimer un modèle spécifique :
DROP MODEL tft_model;
Le résultat suivant est renvoyé :
No rows affected (0.397 seconds)
Inférence du modèle
Si le modèle est dans l'état Ready, utilisez des fonctions système pour effectuer l'inférence du modèle. Différentes fonctions sont disponibles selon les types de tâches.
Syntaxe
SELECT function_name(field_name, model_name, params) FROM table_name [WHERE clause] SAMPLE BY 0;
function_name : nom de la fonction système. Valeurs valides :
FORECAST : fonction utilisée pour la prévision de séries temporelles. Pour plus d'informations sur la configuration des paramètres field_name, model_name et params de la fonction FORECAST, consultez la section Fonction de prévision de séries temporelles.
ANOMALY_DETECT : fonction utilisée pour la détection d'anomalies dans les séries temporelles. Pour plus d'informations sur la configuration des paramètres field_name, model_name et params de la fonction ANOMALY_DETECT, consultez la section Fonction de détection d'anomalies dans les séries temporelles.
Exemples
SELECT device_id, region, `time`, raw(temperature) as temperature, anomaly_detect(temperature, ad_model) as detect_result from sensor WHERE time >= '2022-01-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;