Obtention des résultats d'analyse - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Obtention des résultats d'analyse

Cette rubrique explique comment obtenir les résultats d'analyse générés par SageMaker Clarify. Une fois le traitement SageMaker Clarify terminé, vous pouvez télécharger les fichiers de sortie pour les inspecter ou visualiser les résultats dans SageMaker Studio Classic.

Le répertoire de sortie de la tâche de traitement SageMaker Clarify contient les fichiers suivants :

  • analysis.json— Un fichier contenant les mesures de biais et l'importance des fonctionnalités au JSON format.

  • report.ipynb : bloc-notes statique qui contient du code pour vous aider à visualiser les métriques de biais et l'importance des fonctionnalités.

  • explanations_shap/out.csv : répertoire qui est créé et qui contient les fichiers générés automatiquement en fonction de vos configurations d'analyse spécifiques. Par exemple, si vous activez le save_local_shap_values paramètre, les SHAP valeurs locales par instance seront enregistrées explanations_shap dans le répertoire. Autre exemple, si votre paramètre de SHAP référence analysis configuration ne contient aucune valeur, la tâche d'explicabilité SageMaker Clarify calcule une ligne de base en regroupant le jeu de données en entrée. Elle enregistre ensuite la base de référence générée dans le répertoire.

Les sections suivantes fournissent des informations détaillées sur le schéma et le rapport généré par l'analyse des biais, l'analyse, SHAP l'analyse d'explicabilité de la vision par ordinateur et l'analyse des diagrammes de dépendance partielle (PDPs). Si l'analyse de configuration contient des paramètres permettant de calculer plusieurs analyses, les résultats sont agrégés dans une analyse et un fichier de rapport.

Analyse des biais

Amazon SageMaker Clarify utilise la terminologie décrite dans le document Amazon SageMaker précise les termes relatifs à la partialité et à l'équité pour aborder les questions de partialité et d'équité.

Schéma du fichier d'analyse

Le fichier d'analyse est JSON au format et est organisé en deux sections : les mesures de biais avant l'entraînement et les mesures de biais après l'entraînement. Les paramètres des métriques de biais de pré-entraînement et de post-entraînement sont les suivants.

  • pre_training_bias_metrics : paramètres pour les métriques de biais de pré-entraînement. Pour plus d’informations, consultez Mesure de biais de pré-entraînement et Configurer l'analyse.

    • label : nom de l'étiquette de vérité terrain défini par le paramètre label de la configuration d'analyse.

    • label_value_or_threshold : chaîne contenant les valeurs d'étiquette ou l'intervalle défini par le paramètre label_values_or_threshold de la configuration d'analyse. Par exemple, si la valeur 1 est fournie pour un problème de classification binaire, la chaîne sera 1. Si plusieurs valeurs [1,2] sont fournies pour un problème multiclasse, la chaîne sera 1,2. Si un seuil 40 est fourni pour un problème de régression, la chaîne sera d'un type interne comme (40, 68]68 est la valeur maximale de l'étiquette dans le jeu de données en entrée.

    • facets : la section contient plusieurs paires clé-valeur, la clé correspondant au nom de facette défini par le paramètre name_or_index de la configuration des facettes, et la valeur étant un tableau d'objets facettes. Chaque objet facette contient les membres suivants :

      • value_or_threshold : chaîne contenant les valeurs de facette ou l'intervalle défini par le paramètre value_or_threshold de la configuration des facettes.

      • metrics : la section contient un tableau d'éléments de métriques de biais, et chaque élément de métrique de biais possède les attributs suivants :

        • name : nom abrégé de la métrique de biais. Par exemple, CI.

        • description : nom complet de la métrique de biais. Par exemple, Class Imbalance (CI).

        • valeur — La valeur de la métrique de biais, ou valeur JSON nulle si la métrique de biais n'est pas calculée pour une raison particulière. Les valeurs ±∞ sont représentées sous la forme des chaînes et -∞ respectivement.

        • error : message d'erreur facultatif expliquant pourquoi la métrique de biais n'a pas été calculée.

  • post_training_bias_metrics : la section contient les métriques de biais de post-entraînement et suit une disposition et une structure similaires à celles de la section de pré-entraînement. Pour de plus amples informations, veuillez consulter Mesure des biais de post-entraînement dans les données et les modèles.

L'exemple suivant est un exemple de configuration d'analyse qui calculera les métriques de biais de pré-entraînement et de post-entraînement.

{ "version": "1.0", "pre_training_bias_metrics": { "label": "Target", "label_value_or_threshold": "1", "facets": { "Gender": [{ "value_or_threshold": "0", "metrics": [ { "name": "CDDL", "description": "Conditional Demographic Disparity in Labels (CDDL)", "value": -0.06 }, { "name": "CI", "description": "Class Imbalance (CI)", "value": 0.6 }, ... ] }] } }, "post_training_bias_metrics": { "label": "Target", "label_value_or_threshold": "1", "facets": { "Gender": [{ "value_or_threshold": "0", "metrics": [ { "name": "AD", "description": "Accuracy Difference (AD)", "value": -0.13 }, { "name": "CDDPL", "description": "Conditional Demographic Disparity in Predicted Labels (CDDPL)", "value": 0.04 }, ... ] }] } } }

Rapport d'analyse des biais

Le rapport d'analyse des biais comprend plusieurs tableaux et diagrammes qui contiennent des explications et des descriptions détaillées. Celles-ci comprennent, entre autres, la distribution des valeurs des étiquettes, la distribution des valeurs des facettes, le diagramme de performance de modèle de haut niveau, un tableau des métriques de biais et leurs descriptions. Pour plus d'informations sur les métriques de biais et sur leur interprétation, consultez le document Découvrez comment Amazon SageMaker Clarify aide à détecter les biais.

SHAPanalyse

SageMaker Clarifier les tâches de traitement : utilisez l'SHAPalgorithme Kernel pour calculer les attributions des fonctionnalités. La tâche de traitement SageMaker Clarify produit des SHAP valeurs locales et globales. Elles aident à déterminer la contribution de chaque fonctionnalité pour aboutir aux prédictions du modèle. Les SHAP valeurs locales représentent l'importance des fonctionnalités pour chaque instance individuelle, tandis que SHAP les valeurs globales regroupent les SHAP valeurs locales de toutes les instances du jeu de données. Pour plus d'informations sur SHAP les valeurs et leur interprétation, consultezAttributions de fonctions utilisant des valeurs de Shapley.

Schéma du fichier SHAP d'analyse

Les résultats de SHAP l'analyse globale sont stockés dans la section des explications du fichier d'analyse, sous la kernel_shap méthode. Les différents paramètres du fichier SHAP d'analyse sont les suivants :

  • explanations : section du fichier d'analyse qui contient les résultats de l'analyse de l'importance des fonctionnalités.

    • kernal_shap — Section du fichier d'analyse contenant le résultat de l'analyse globale. SHAP

      • global_shap_values : section du fichier d'analyse qui contient plusieurs paires clé-valeur. Chaque clé de la paire clé-valeur représente un nom de fonctionnalité issu du jeu de données en entrée. Chaque valeur de la paire clé-valeur correspond à la valeur globale SHAP de l'entité. La SHAP valeur globale est obtenue en agrégeant les SHAP valeurs par instance de la fonctionnalité à l'aide de la configuration. agg_method Si la configuration use_logit est activée, la valeur est calculée à l'aide des coefficients de régression logistique, qui peuvent être interprétés comme des ratios log-odds.

      • expected_value : prédiction moyenne du jeu de données de référence. Si la configuration de use_logit est activée, la valeur est calculée à l'aide des coefficients de régression logistique.

      • global_top_shap_text — Utilisé pour l'analyse d'explicabilité. NLP Section du fichier d'analyse qui inclut un ensemble de paires clé-valeur. SageMaker Clarifiez les tâches de traitement, agrégez SHAP les valeurs de chaque jeton, puis sélectionnez les meilleurs jetons en fonction de leurs SHAP valeurs globales. La configuration de max_top_tokens définit le nombre de jetons à sélectionner.

        Chacun des jetons principaux sélectionnés possède une paire clé-valeur. La clé de la paire clé-valeur correspond au nom de la fonctionnalité de texte d'un jeton principal. Chaque valeur de la paire clé-valeur correspond aux SHAP valeurs globales du jeton supérieur. Pour un exemple de paire global_top_shap_text clé-valeur, consultez le résultat suivant.

L'exemple suivant montre le résultat de l'SHAPanalyse d'un jeu de données tabulaire.

{ "version": "1.0", "explanations": { "kernel_shap": { "Target": { "global_shap_values": { "Age": 0.022486410860333206, "Gender": 0.007381025261958729, "Income": 0.006843906804137847, "Occupation": 0.006843906804137847, ... }, "expected_value": 0.508233428001 } } } }

L'exemple suivant montre le résultat de l'SHAPanalyse d'un jeu de données texte. La sortie correspondant à la colonne Comments est un exemple de sortie générée après l'analyse d'une fonctionnalité de texte.

{ "version": "1.0", "explanations": { "kernel_shap": { "Target": { "global_shap_values": { "Rating": 0.022486410860333206, "Comments": 0.058612104851485144, ... }, "expected_value": 0.46700941970297033, "global_top_shap_text": { "charming": 0.04127962903247833, "brilliant": 0.02450240786522321, "enjoyable": 0.024093569652715457, ... } } } } }

Schéma du fichier de référence généré

Lorsqu'aucune configuration de SHAP référence n'est fournie, la tâche de traitement SageMaker Clarify génère un ensemble de données de référence. SageMaker Clarify utilise un algorithme de clustering basé sur la distance pour générer un ensemble de données de référence à partir des clusters créés à partir du jeu de données en entrée. Le jeu de données de référence obtenu est enregistré dans un CSV fichier situé à l'adresseexplanations_shap/baseline.csv. Ce fichier de sortie contient une ligne d'en-têtes et plusieurs instances basées sur le paramètre num_clusters, spécifié dans la configuration d'analyse. Le jeu de données de référence se compose uniquement de colonnes de fonctionnalités. L'exemple suivant montre une ligne de base créée en regroupant le jeu de données en entrée.

Age,Gender,Income,Occupation 35,0,2883,1 40,1,6178,2 42,0,4621,0

Schéma des SHAP valeurs locales issues de l'analyse d'explicabilité d'un jeu de données tabulaire

Pour les ensembles de données tabulaires, si une seule instance de calcul est utilisée, la tâche de traitement SageMaker Clarify enregistre les SHAP valeurs locales dans un CSV fichier nommé. explanations_shap/out.csv Si vous utilisez plusieurs instances de calcul, SHAP les valeurs locales sont enregistrées dans plusieurs CSV fichiers du explanations_shap répertoire.

Un fichier de sortie contenant des SHAP valeurs locales comporte une ligne contenant les SHAP valeurs locales pour chaque colonne définie par les en-têtes. Les en-têtes suivent la convention de dénomination de Feature_Label selon laquelle le nom de la fonctionnalité est suivi d'un trait de soulignement, puis du nom de votre variable cible.

Pour des problèmes multi-classes, les noms des fonctionnalités dans l'en-tête varient d'abord, puis les étiquettes. Par exemple, deux fonctionnalités F1, F2 et deux classes L1 et L2, dans les en-têtes sont F1_L1, F2_L1, F1_L2 et F2_L2. Si la configuration d'analyse contient une valeur pour le paramètre joinsource_name_or_index, la colonne clé utilisée dans la jointure est ajoutée à la fin du nom de l'en-tête. Cela permet de mapper les SHAP valeurs locales aux instances du jeu de données en entrée. Voici un exemple de fichier de sortie contenant SHAP des valeurs.

Age_Target,Gender_Target,Income_Target,Occupation_Target 0.003937908,0.001388849,0.00242389,0.00274234 -0.0052784,0.017144491,0.004480645,-0.017144491 ...

Schéma des SHAP valeurs locales issues de l'analyse d'NLPexplicabilité

Pour l'analyse NLP d'explicabilité, si une seule instance de calcul est utilisée, la tâche de traitement SageMaker Clarify enregistre SHAP les valeurs locales dans un fichier JSON Lines nommé. explanations_shap/out.jsonl Si vous utilisez plusieurs instances de calcul, les SHAP valeurs locales sont enregistrées dans plusieurs fichiers JSON Lines du explanations_shap répertoire.

Chaque fichier contenant des SHAP valeurs locales possède plusieurs lignes de données, et chaque ligne est un JSON objet valide. L'JSONobjet possède les attributs suivants :

  • explications — Section du fichier d'analyse qui contient un tableau d'SHAPexplications du noyau pour une seule instance. Chaque élément du tableau contient les membres suivants :

    • feature_name : nom d'en-tête des fonctionnalités fournies par la configuration des en-têtes.

    • data_type — Type de fonctionnalité déduit par la tâche de traitement SageMaker Clarify. Les valeurs valides pour les fonctionnalités de texte incluent numerical, categorical et free_text (pour les fonctionnalités de texte).

    • attributions : tableau d'objets d'attribution spécifique à une fonctionnalité. Une fonctionnalité de texte peut avoir plusieurs objets d'attribution, chacun pour une unité définie par la configuration granularity. L'objet d'attribution contient les membres suivants :

      • attribution : tableau de valeurs de probabilité spécifique à une classe.

      • description : (pour les fonctionnalités de texte) description des unités de texte.

        • partial_text — Partie du texte expliquée par la tâche de traitement SageMaker Clarify.

        • start_idx : index basé sur zéro permettant d'identifier l'emplacement dans le tableau indiquant le début du fragment de texte partiel.

Voici un exemple d'une seule ligne d'un fichier de SHAP valeurs local, embellie pour améliorer sa lisibilité.

{ "explanations": [ { "feature_name": "Rating", "data_type": "categorical", "attributions": [ { "attribution": [0.00342270632248735] } ] }, { "feature_name": "Comments", "data_type": "free_text", "attributions": [ { "attribution": [0.005260534499999983], "description": { "partial_text": "It's", "start_idx": 0 } }, { "attribution": [0.00424190349999996], "description": { "partial_text": "a", "start_idx": 5 } }, { "attribution": [0.010247314500000014], "description": { "partial_text": "good", "start_idx": 6 } }, { "attribution": [0.006148907500000005], "description": { "partial_text": "product", "start_idx": 10 } } ] } ] }

SHAPrapport d'analyse

Le rapport SHAP d'analyse fournit un graphique à barres représentant le maximum des SHAP valeurs 10 globales les plus élevées. L'exemple de graphique suivant montre les SHAP valeurs des principales 4 fonctionnalités.

Diagramme à barres horizontales des SHAP valeurs globales calculées pour la variable cible des quatre principales entités.

Analyse de l'explicabilité de la vision par ordinateur

SageMaker Clarifier l'explicabilité de la vision par ordinateur prend un ensemble de données composé d'images et traite chaque image comme une collection de super pixels. Après analyse, la tâche de traitement SageMaker Clarify produit un jeu de données d'images dans lequel chaque image montre la carte thermique des superpixels.

L'exemple suivant montre un panneau de limitation de vitesse en entrée sur la gauche et une carte thermique montre l'amplitude des SHAP valeurs sur la droite. Ces SHAP valeurs ont été calculées par un modèle de reconnaissance d'image Resnet-18 entraîné à reconnaître les panneaux de signalisation allemands. L'ensemble de données German Traffic Sign Recognition Benchmark (GTSRB) est fourni dans l'article Man vs. computer : Benchmarking machine learning algorithms for traffic sign recognition. Dans l'exemple de sortie, des valeurs positives élevées indiquent que le super-pixel présente une forte corrélation positive avec la prédiction du modèle. Des valeurs négatives élevées indiquent que le super-pixel présente une forte corrélation négative avec la prédiction du modèle. Plus la valeur absolue de la SHAP valeur indiquée sur la carte thermique est élevée, plus la relation entre le super pixel et la prédiction du modèle est forte.

Image d'entrée du panneau de limitation de vitesse et carte thermique résultante des SHAP valeurs d'un modèle Resnet-18.

Pour plus d'informations, consultez les exemples de carnets expliquant la classification des images avec SageMaker Clarify et Expliquant les modèles de détection d'objets avec Amazon SageMaker Clarify.

Tracés de dépendance partielle (PDPs) Analyse

Les graphiques de dépendance partielle montrent la dépendance de la réponse cible prédite par rapport à un ensemble de fonctionnalités d'entrée intéressantes. Elles sont marginalisées par rapport aux valeurs de toutes les autres fonctions d'entrée et sont désignées sous le nom de fonctions de complément. Intuitivement, vous pouvez interpréter la dépendance partielle comme la réponse cible, qui est attendue comme une fonction de chaque fonction d'entrée intéressante.

Schéma du fichier d'analyse

Les PDP valeurs sont stockées dans la explanations section du fichier d'analyse sous la pdp méthode. Les paramètres pour explanations sont les suivants :

  • explanations : section des fichiers d'analyse qui contient les résultats de l'analyse de l'importance des fonctionnalités.

    • pdp — Section du fichier d'analyse qui contient un ensemble d'PDPexplications pour une seule instance. Chaque élément du tableau contient les membres suivants :

      • feature_name : nom d'en-tête des fonctionnalités fourni par la configuration de headers.

      • data_type — Type de fonctionnalité déduit par la tâche de traitement SageMaker Clarify. Les valeurs valides pour data_type incluent les valeurs numériques et catégorielles.

      • feature_values : contient les valeurs présentes dans la fonctionnalité. Si la valeur data_type déduite par SageMaker Clarify est catégorique, elle feature_values contient toutes les valeurs uniques que pourrait être la fonctionnalité. Si la valeur data_type déduite par SageMaker Clarify est numérique, feature_values contient une liste de la valeur centrale des buckets générés. Le paramètre grid_resolution détermine le nombre de compartiments utilisés pour regrouper les valeurs des colonnes de fonctionnalités.

      • data_distribution : tableau de pourcentages, où chaque valeur est le pourcentage d'instances que contient un compartiment. Le paramètre grid_resolution détermine le nombre de compartiments. Les valeurs des colonnes de fonctionnalités sont regroupées dans ces compartiments.

      • model_predictions : tableau de prédictions de modèle, où chaque élément du tableau est un tableau de prédictions correspondant à une seule classe dans la sortie du modèle.

        label_headers : en-têtes d'étiquettes fournis par la configuration de label_headers.

      • error — Un message d'erreur est généré si les PDP valeurs ne sont pas calculées pour une raison particulière. Ce message d'erreur remplace le contenu des champs feature_values, data_distributions et model_predictions.

Voici un exemple de sortie d'un fichier d'analyse contenant un résultat d'PDPanalyse.

{ "version": "1.0", "explanations": { "pdp": [ { "feature_name": "Income", "data_type": "numerical", "feature_values": [1046.9, 2454.7, 3862.5, 5270.2, 6678.0, 8085.9, 9493.6, 10901.5, 12309.3, 13717.1], "data_distribution": [0.32, 0.27, 0.17, 0.1, 0.045, 0.05, 0.01, 0.015, 0.01, 0.01], "model_predictions": [[0.69, 0.82, 0.82, 0.77, 0.77, 0.46, 0.46, 0.45, 0.41, 0.41]], "label_headers": ["Target"] }, ... ] } }

PDPrapport d'analyse

Vous pouvez générer un rapport d'analyse contenant un PDP graphique pour chaque fonctionnalité. Le PDP graphique trace feature_values le long de l'axe X et il trace model_predictions le long de l'axe Y. Pour les modèles multiclasses, model_predictions est un tableau, et chaque élément de ce tableau correspond à l'une des classes de prédiction du modèle.

Voici un exemple de PDP graphique pour cette fonctionnalitéAge. Dans l'exemple de sortie, PDP indique le nombre de valeurs d'entités regroupées dans des compartiments. Le nombre de compartiments est déterminé par grid_resolution. Les compartiments de valeurs de fonctionnalité sont tracés par rapport aux prédictions du modèle. Dans cet exemple, les valeurs de fonctionnalité les plus élevées ont les mêmes valeurs de prédiction du modèle.

Graphique linéaire montrant comment les prévisions du modèle varient par rapport à feature_values pour 10 points de grille uniques.

Valeurs de Shapley asymétriques

SageMaker Clarifier les tâches de traitement : utilisez l'algorithme de valeur asymétrique de Shapley pour calculer les attributions explicatives du modèle de prévision des séries chronologiques. Cet algorithme détermine la contribution des entités en entrée à chaque pas dans le temps vers les prévisions prévisionnelles.

Schéma du fichier d'analyse des valeurs asymétriques de Shapley

Les résultats des valeurs asymétriques de Shapley sont stockés dans un compartiment Amazon S3. Vous trouverez l'emplacement de ce compartiment dans les explications du fichier d'analyse. Cette section contient les résultats de l'analyse de l'importance des fonctionnalités. Les paramètres suivants sont inclus dans le fichier d'analyse des valeurs asymétriques de Shapley.

  • asymmetric_shapley_value — Section du fichier d'analyse contenant les métadonnées relatives aux résultats de la tâche d'explication, notamment les suivantes :

    • explanation_results_path — L'emplacement Amazon S3 avec les résultats de l'explication

    • direction — Configuration fournie par l'utilisateur pour la valeur de configuration de direction

    • granularité — Configuration fournie par l'utilisateur pour la valeur de configuration de granularity

L'extrait suivant montre les paramètres mentionnés précédemment dans un exemple de fichier d'analyse :

{ "version": "1.0", "explanations": { "asymmetric_shapley_value": { "explanation_results_path": EXPLANATION_RESULTS_S3_URI, "direction": "chronological", "granularity": "timewise", } } }

Les sections suivantes décrivent comment la structure des résultats de l'explication dépend de la valeur de granularity dans la configuration.

Granularité temporelle

Lorsque la granularité est atteintetimewise, le résultat est représenté dans la structure suivante. La scores valeur représente l'attribution pour chaque horodatage. La offset valeur représente la prédiction du modèle sur les données de référence et décrit le comportement du modèle lorsqu'il ne reçoit pas de données.

L'extrait suivant montre un exemple de sortie pour un modèle qui fait des prédictions pour deux étapes temporelles. Par conséquent, toutes les attributions sont des listes de deux éléments dont la première entrée fait référence au premier pas temporel prévu.

{ "item_id": "item1", "offset": [1.0, 1.2], "explanations": [ {"timestamp": "2019-09-11 00:00:00", "scores": [0.11, 0.1]}, {"timestamp": "2019-09-12 00:00:00", "scores": [0.34, 0.2]}, {"timestamp": "2019-09-13 00:00:00", "scores": [0.45, 0.3]}, ] } { "item_id": "item2", "offset": [1.0, 1.2], "explanations": [ {"timestamp": "2019-09-11 00:00:00", "scores": [0.51, 0.35]}, {"timestamp": "2019-09-12 00:00:00", "scores": [0.14, 0.22]}, {"timestamp": "2019-09-13 00:00:00", "scores": [0.46, 0.31]}, ] }

Granularité fine

L'exemple suivant illustre les résultats d'attribution lorsque la granularité est fine_grained définie. La offset valeur a la même signification que celle décrite dans la section précédente. Les attributions sont calculées pour chaque entité en entrée à chaque horodatage d'une série chronologique cible et des séries chronologiques associées, si elles sont disponibles, et pour chaque covariable statique, si disponible.

{ "item_id": "item1", "offset": [1.0, 1.2], "explanations": [ {"feature_name": "tts_feature_name_1", "timestamp": "2019-09-11 00:00:00", "scores": [0.11, 0.11]}, {"feature_name": "tts_feature_name_1", "timestamp": "2019-09-12 00:00:00", "scores": [0.34, 0.43]}, {"feature_name": "tts_feature_name_2", "timestamp": "2019-09-11 00:00:00", "scores": [0.15, 0.51]}, {"feature_name": "tts_feature_name_2", "timestamp": "2019-09-12 00:00:00", "scores": [0.81, 0.18]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-11 00:00:00", "scores": [0.01, 0.10]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-12 00:00:00", "scores": [0.14, 0.41]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-13 00:00:00", "scores": [0.95, 0.59]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-14 00:00:00", "scores": [0.95, 0.59]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-11 00:00:00", "scores": [0.65, 0.56]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-12 00:00:00", "scores": [0.43, 0.34]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-13 00:00:00", "scores": [0.16, 0.61]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-14 00:00:00", "scores": [0.95, 0.59]}, {"feature_name": "static_covariate_1", "scores": [0.6, 0.1]}, {"feature_name": "static_covariate_2", "scores": [0.1, 0.3]}, ] }

Dans timewise les deux cas fine-grained d'utilisation, les résultats sont stockés au format JSON Lines (.jsonl).