Utiliser les API d’apprentissage machine
Utilisez ServiceNow les API d’apprentissage machine pour entraîner des modèles d’apprentissage machine et exécuter des inférences.
Les API ML permettent de former des solutions et de gérer leurs versions. Vous pouvez obtenir et définir des versions actives, surveiller l’état de formation, etc. L’API ML fournit également des encodeurs, qui permettent d’utiliser la fréquence de termes et la fréquence de document inverse (TF-IDF) en tant que corpus de mots. Les estimations de prévisibilité permettent d’évaluer la valeur prédictive des colonnes de table.
Vue d’ensemble de la classe d’API ML
Cette section décrit brièvement les classes pour l’entraînement des solutions ML et l’exécution d’inférences avec des solutions entraînées.
- Jeux de données
Un jeu de données est un ensemble d’enregistrements comprenant un nom de table, des colonnes et des critères de sélection de lignes à utiliser comme entrée pour les algorithmes d’apprentissage ML. Les jeux de données ne contiennent pas les données réelles.
Pour plus d’informations, consultez DatasetDefinition.
- Objets ML – Solutions, Codeurs et Estimations
Les objets ML définissent une configuration d’entraînement spécifique à appliquer à un jeu de données. Certaines opérations sont communes à tous les objets ML. Les objets de solution incluent la classification, la mise en grappe, la régression et la similarité.
Les encodeurs sont des objets de traitement de texte pré-entraînés ou entraînés en fonction des jeux de données de langues que vous fournissez. Vous pouvez former des encodeurs qui déterminent comment le système interprète et traite les champs de texte. Pour les solutions d’apprentissage machine qui incluent du texte, vous pouvez former un encodeur pour spécifier comment traiter le texte et utiliser l’encodeur formé dans une solution.
PrédictibilitéLes objets d’estimation estiment quels champs d’un jeu de données sont prévisibles et les entités sur lesquelles cette prévisibilité est basée.
Pour en savoir plus, consultez :- Magasins
Les objets ML sont conservés dans un magasin spécifique pour chaque type d’objet. Chaque classe de magasin inclut des méthodes pour les opérations d’ajout, d’obtention, de mise à jour et de suppression.
- Versions
Chaque objet formé génère une nouvelle version sur laquelle vous pouvez exécuter des tâches. Utilisez l’API de version pour obtenir n’importe quelle version de solution et exécuter des tâches dessus.
Mise en place : flux d’API ML
Configuration requise pour l’encodeur d’objets ML :
- Requis dans les solutions d’API de similarité.
- Requis dans les solutions d’API de clustering, sauf si l’algorithme de distance de Levenshtein est utilisé, auquel cas les codeurs sont facultatifs.
- Facultatif pour les solutions de classification et de régression.
- Indisponible pour les estimations de prévisibilité.
Formation Prise en main de la solution ML API
Suivez cet exemple de répartition pour apprendre à configurer et à former une solution.
- Configurer et former une solution
- Définissez un jeu de données à l’aide de l’API DatasetDefinition .
var myData = new sn_ml.DatasetDefinition({ 'tableName' : 'incident', 'fieldNames' : ['assignment_group', 'short_description', 'description'], 'encodedQuery' : 'activeANYTHING' }); - Utilisez le constructeur pour définir la solution, y compris le jeu de données dans la configuration.
var mySolution = new sn_ml.ClassificationSolution({ 'label': "my solution definition", 'dataset' : myData, 'predictedFieldName' : 'assignment_group', 'inputFieldNames':['short_description'] }); - Ajoutez la définition de la solution au magasin à l’aide de la méthode add().
var my_unique_name = sn_ml.ClassificationSolutionStore.add(mySolution); - Entraînez la solution à l’aide de la méthode submitTrainingJob(). Une fois la formation terminée, vous pouvez gérer la solution formée à l’aide d’une API de version de solution. Une solution peut être réformée plusieurs fois. Chaque formation aboutit à une nouvelle « version » de solution sur laquelle vous pouvez exécuter des inférences.
var myClassifierVersion = mySolution.submitTrainingJob();
- Définissez un jeu de données à l’aide de l’API DatasetDefinition .
- Afficher toutes les solutions de classification dans un magasin
- Vous pouvez utiliser la méthode store getAllNames() pour afficher une liste de toutes les solutions qui ont été ajoutées au store.
gs.print(JSON.stringify(JSON.parse(sn_ml.ClassificationSolutionStore.getAllNames()), null, 2));Dans la sortie, le système a nommé la solution
ml_x_snc_global_global_my_solution_definition. Utilisez ce nom dans les exemples suivants pour obtenir des informations sur la version.*** Script: [ "ml_incident_assignment", "ml_x_snc_global_global_my_solution_definition", "ml_incident_categorization" ]
Prise en main des versions des solutions d’API ML
Suivez ces exemples de répartitions pour apprendre à gérer les versions de solutions formées.
- Vérifier l’état de la formation
Obtenez la solution de classification à partir du Store, choisissez une version et vérifiez son état de formation. Les méthodes utilisées pour vérifier l’état de la formation s’appliquent à tous les types d’objets ML.
- Obtenez la solution à partir du magasin de solutions de classification à l’aide de la méthode get().
// Get the solution created in the previous example from the classification solution store var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition'); - Accédez à la version de solution la plus récente à l’aide de la méthode de solution getLatestVersion() et obtenez son état de formation à l’aide de la méthode de version getStatus().
// Access the latest version of the solution and print its training status gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus(), null, 2)));Sortie à la fin de la formation :
*** Script: {"state":"solution_complete","percentComplete":"100","hasJobEnded":"true"}
- Obtenez la solution à partir du magasin de solutions de classification à l’aide de la méthode get().
- Obtenir des prédictions à l’aide d’une version de solution
- Une fois que la solution a été formée, obtenez la version formée et exécutez une prédiction sur celle-ci. Obtenez la solution que vous avez créée à partir du Store. Ensuite, choisissez la version formée et prédisez la version formée.Remarque :Il n’est pas possible de faire des prédictions sur les codeurs et les estimations de prévisibilité.
- Obtenez la solution à partir du magasin de solutions de classification à l’aide de la méthode get().
// Get the solution created in the first example from the classification solution store var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition'); - Utilisez la méthode get() de l’API GlideRecord pour fournir un enregistrement à partir de la table Incident [incident].
// single GlideRecord input var input = new GlideRecord("incident"); input.get("<sys_id>"); - Facultatif. Configurez le paramètre de méthode optionsClassificationSolutionVersion – predict() pour renvoyer les trois premiers résultats et renvoyer tous les résultats.
// configure optional parameters var options = {}; options.top_n = 3; options.apply_threshold = false; - Déclarez une variable appelée
résultatset affectez-la à la tâche de prédiction. Pour exécuter la tâche de prédiction, obtenez la version de solution la plus récente à l’aide de la méthode ClassificationSolution – getLatestVersion() et appelez la méthode ClassificationSolutionVersion – predict() dessus.var results = mlSolution.getLatestVersion().predict(input, options); - Imprimez la sortie des résultats prévus.
gs.print(JSON.stringify(JSON.parse(results), null, 2));Exemple de sortie pour les résultats prévus :
*** Script: { "<sys_id>": [ { "confidence": 99, "threshold": 24.75, "predictedValue": "Email", "predictedSysId": "" }, { "confidence": 5.88210244009169, "threshold": 100, "predictedValue": "Email (I/f)", "predictedSysId": "" }, { "confidence": 2.3461203499840932, "threshold": 14.81, "predictedValue": "Authentication", "predictedSysId": "" } ] }
- Obtenez la solution à partir du magasin de solutions de classification à l’aide de la méthode get().