Le composant Multiclass Classification Evaluation évalue les performances d'un modèle sur des tâches de classification comportant plus de deux classes. Il calcule des métriques telles que la précision, le rappel, le score F1 et une matrice de confusion afin de quantifier l'exactitude de la classification du modèle pour chaque classe. La matrice de confusion illustre la relation entre les étiquettes prédites et réelles, tandis que les autres métriques fournissent des détails sur l'exactitude de la classification pour chaque classe. Ces indicateurs vous aident à comprendre les performances du modèle sur les différentes classes et à l'optimiser davantage.
Configuration du composant
Méthode 1 : Console
Dans Designer, ajoutez le composant Multiclass Classification Evaluation à votre flux de travail et configurez ses paramètres dans le panneau situé à droite.
|
Type de paramètre |
Paramètre |
Description |
|
Fields Setting |
Original Classification Result Column |
Sélectionnez la colonne contenant les étiquettes réelles. Le nombre de classes ne doit pas dépasser 1 000. |
|
Predicted Classification Result Column |
Sélectionnez la colonne contenant les étiquettes prédites. Par défaut, cette colonne est nommée |
|
|
Advanced Options |
Cochez la case Advanced Options pour activer le paramètre Prediction Result Probability Column. |
|
|
Prediction Result Probability Column |
Spécifie la colonne utilisée pour calculer la perte logarithmique (log loss) du modèle. Ce paramètre n'est valide que pour les modèles de forêt aléatoire et peut provoquer des erreurs s'il est utilisé avec d'autres modèles. Par défaut, cette colonne est nommée |
|
|
Tuning |
Number of Cores |
Fonctionne conjointement avec Memory per Core. Par défaut, le système alloue automatiquement les ressources. |
|
Memory per Core |
Quantité de mémoire attribuée à chaque cœur, en Mo. Par défaut, le système alloue automatiquement les ressources. |
Méthode 2 : Commande PAI
Pour configurer le composant Multiclass Classification Evaluation à l'aide d'une commande PAI, exécutez la commande dans un composant SQL Script component. Pour plus d'informations, consultez la rubrique Scénario 4 : Exécuter une commande PAI dans le composant SQL Script.
PAI -name MultiClassEvaluation -project algo_public
-DinputTableName="test_input"
-DoutputTableName="test_output"
-DlabelColName="label"
-DpredictionColName="prediction_result"
-Dlifecycle=30;
|
Paramètre |
Obligatoire |
Valeur par défaut |
Description |
|
inputTableName |
Oui |
Aucune |
Nom de la table d'entrée. |
|
inputTablePartitions |
Non |
Table entière |
Partitions à utiliser depuis la table d'entrée. |
|
outputTableName |
Oui |
Aucune |
Nom de la table de sortie. |
|
labelColName |
Oui |
Aucune |
Nom de la colonne contenant les étiquettes réelles. |
|
predictionColName |
Oui |
Aucune |
Nom de la colonne contenant les étiquettes prédites. |
|
predictionDetailColName |
Non |
Vide |
Colonne contenant les probabilités de classe prédites. Par exemple, |
|
lifecycle |
Non |
Aucune |
Durée de vie de la table de sortie, en jours. |
|
coreNum |
Non |
Déterminé par le système |
Nombre de cœurs pour la tâche. |
|
memSizePerCore |
Non |
Déterminé par le système |
Quantité de mémoire attribuée à chaque cœur, en Mo. |
Exemple d'utilisation
-
Ajoutez un composant SQL Script component et saisissez l'instruction SQL suivante pour générer les données d'entraînement.
drop table if exists multi_esti_test; create table multi_esti_test as select * from ( select '0' as id,'A' as label,'A' as prediction,'{"A": 0.6, "B": 0.4}' as detail union all select '1' as id,'A' as label,'B' as prediction,'{"A": 0.45, "B": 0.55}' as detail union all select '2' as id,'A' as label,'A' as prediction,'{"A": 0.7, "B": 0.3}' as detail union all select '3' as id,'A' as label,'A' as prediction,'{"A": 0.9, "B": 0.1}' as detail union all select '4' as id,'B' as label,'B' as prediction,'{"A": 0.2, "B": 0.8}' as detail union all select '5' as id,'B' as label,'B' as prediction,'{"A": 0.1, "B": 0.9}' as detail union all select '6' as id,'B' as label,'A' as prediction,'{"A": 0.52, "B": 0.48}' as detail union all select '7' as id,'B' as label,'B' as prediction,'{"A": 0.4, "B": 0.6}' as detail union all select '8' as id,'B' as label,'A' as prediction,'{"A": 0.6, "B": 0.4}' as detail union all select '9' as id,'A' as label,'A' as prediction,'{"A": 0.75, "B": 0.25}' as detail )tmp; -
Ajoutez un autre composant SQL Script component et saisissez la commande PAI suivante pour exécuter l'évaluation.
drop table if exists ${o1}; PAI -name MultiClassEvaluation -project algo_public -DinputTableName="multi_esti_test" -DoutputTableName=${o1} -DlabelColName="label" -DpredictionColName="prediction" -Dlifecycle=30; -
Cliquez avec le bouton droit sur le composant de l'étape précédente et sélectionnez View Data > SQL Script's Output pour afficher les résultats de l'évaluation.
| result | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | { "ActualLabelFrequencyList": [5, 5], "ActualLabelProportionList": [0.5, 0.5], "ConfusionMatrix": [[4, 1], [2, 3]], "LabelList": ["A", "B"], "LabelMeasureList": [{ "Accuracy": 0.7, "F1": 0.7272727272727273, "FalseDiscoveryRate": 0.3333333333333333, "FalseNegative": 1, "FalseNegativeRate": 0.2, "FalsePositive": 2, "FalsePositiveRate": 0.4, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.75, "Precision": 0.6666666666666666, "Sensitivity": 0.8, "Specificity": 0.6, "TrueNegative": 3, "TruePositive": 4}, { "Accuracy": 0.7, "F1": 0.6666666666666666, "FalseDiscoveryRate": 0.25, "FalseNegative": 2, "FalseNegativeRate": 0.4, "FalsePositive": 1, "FalsePositiveRate": 0.2, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.6666666666666666, "Precision": 0.75, "Sensitivity": 0.6, "Specificity": 0.8, "TrueNegative": 4, "TruePositive": 3}], "LabelNumber": 2, "OverallMeasures": { "Accuracy": 0.7, "Kappa": 0.3999999999999999, "LabelFrequencyBasedMicro": { "Accuracy": 0.7, "F1": 0.696969696969697, "FalseDiscoveryRate": 0.2916666666666666, "FalseNegative": 1.5, "FalseNegativeRate": 0.3, "FalsePositive": 1.5, "FalsePositiveRate": 0.3, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.7083333333333333, "Precision": 0.7083333333333333, "Sensitivity": 0.7, "Specificity": 0.7, "TrueNegative": 3.5, "TruePositive": 3.5}, "MacroAveraged": { "Accuracy": 0.7, "F1": 0.696969696969697, "FalseDiscoveryRate": 0.2916666666666666, "FalseNegative": 1.5, "FalseNegativeRate": 0.3, "FalsePositive": 1.5, "FalsePositiveRate": 0.3, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.7083333333333333, "Precision": 0.7083333333333333, "Sensitivity": 0.7, "Specificity": 0.7, "TrueNegative": 3.5, "TruePositive": 3.5}, "MicroAveraged": { "Accuracy": 0.7, "F1": 0.7, "FalseDiscoveryRate": 0.3, "FalseNegative": 3, "FalseNegativeRate": 0.3, "FalsePositive": 3, "FalsePositiveRate": 0.3, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.7, "Precision": 0.7, "Sensitivity": 0.7, "Specificity": 0.7, "TrueNegative": 7, "TruePositive": 7}}, "PredictedLabelFrequencyList": [6, 4], "PredictedLabelProportionList": [0.6, 0.4], "ProportionMatrix": [[0.8, 0.2], [0.4, 0.6]]} |
Annexe
Si vous exécutez le composant en mode visuel, cliquez dessus avec le bouton droit et sélectionnez Visual Analysis pour afficher les résultats détaillés. Dans la liste des nœuds visuels à gauche, sélectionnez le nœud Multiclass Classification Evaluation-1 et accédez à l'onglet Metrics à droite pour consulter les résultats. Les métriques clés incluent : précision = 0,7 et Kappa ≈ 0,4. Les métriques moyennées macro sont les suivantes : score F1 ≈ 0,697, précision ≈ 0,708, sensibilité = 0,7, spécificité = 0,7, taux de faux positifs = 0,3, taux de faux négatifs = 0,3, vrais positifs = 3,5 et vrais négatifs = 3,5.
La page de résultats contient trois onglets : Metrics, Confusion Matrix et Distribution Statistics. Dans l'onglet Confusion Matrix, les résultats de prédiction pour chaque classe sont affichés sous forme de carte thermique. L'axe vertical représente les classes réelles et l'axe horizontal les classes prédites. Placez le curseur sur une cellule de la matrice pour afficher sa valeur spécifique (Value) et sa proportion (Ratio).
L'onglet Distribution Statistics de la page de résultats affiche les métriques d'évaluation de la classification pour chaque classe dans un tableau, notamment les vrais positifs (TP), les vrais négatifs (TN), les faux positifs (FP), les faux négatifs (FN), la sensibilité, la spécificité, la précision, la précision globale (accuracy), le score F1 et le Kappa. Par exemple, pour la classe A, les métriques sont : TP=4, TN=3, FP=2, FN=1, sensibilité=0,8, spécificité=0,6, précision=0,6667, précision globale=0,7, score F1=0,7273 et Kappa=0,4. Pour la classe B, les métriques sont : TP=3, TN=4, FP=1, FN=2, sensibilité=0,6, spécificité=0,8, précision=0,75, précision globale=0,7, score F1=0,6667 et Kappa=0,4.