2016-02-03 2 views
0

J'utilise PROC (en R) avec la fonction multiclass.roc comme l'a souligné au fil How to plot ROC curves in multiclass classification?Comment calculer la classification multi classe AUC avec des étiquettes?

Cependant, lorsque j'ai demandé à mes données, il y a une erreur:

predictor must be numeric or ordered

Il est évident que mon l'étiquette de données n'est pas ordonnée, dans ce cas, comment pourrais-je calculer l'ASC?

P/S: L'idée est, j'ai une matrice de confusion à la suite d'un classificateur multi-classe. Comment puis-je calculer l'ASC pour cette matrice de confusion dans R?

Update1:

Disons que j'ai 4 classes A, B, C, D sans ordre (c.-à-ne veut pas dire que A> B ou B> A)

Les valeurs correctes:

A A A B B C D A B C D A B C ... 

Les valeurs prédisant:

A B A B B B C D ... 

Comment dois-je calculer l'ASC pour ces données?

Mise à jour 2

Le code pour générer les données de l'échantillon:

x = c(rep("A",50),rep("B",50),rep("C",50),rep("D",50)) 
x = as.factor(x) 
x_true = sample(x) 
x_predict = sample (x) 

Alors j'ai essayé

library (pROC) 
multiclass.roc(x_true, x_predict) 
Error in roc.default(response, predictor, levels = X, percent = percent, : 
    Predictor must be numeric or ordered. 
+1

Veuillez fournir quelques exemples de données et le code –

+0

Où est votre commande ROC. –

+0

Désolé, je l'ai ajouté aussi – mamatv

Répondre

2

Peu importe combien de classes que vous essayez d'étiqueter, une confusion matrice jamais être suffisant pour calculer l'AUC. La matrice de confusion est déterminée au moyen d'une sélection de paramètres qui déterminent la spécificité et la sensibilité. Il ne représente qu'un seul point sur la courbe ROC. Le ROC contient beaucoup plus d'informations qu'une matrice de confusion. L'AUC est l'intégrale de la courbe ROC, et je ne vois pas comment cette intégrale pourrait être calculée sans le ROC.

+0

Salut, alors disons que j'utilise randomForest comme classification, et le résultat est les probabilités de chaque classe, pas seulement la prédiction. Est-ce suffisant pour calculer l'ASC? – mamatv

+0

Je pense que vous pourriez calculer l'ASC en utilisant l'index de Gini si vous saviez tout sur l'arbre de classification, ce qui signifie les probabilités pour chaque division de nœud interne. Je crois que les probabilités finales des feuilles ne suffiront pas, mais je serai heureux d'apprendre plus et d'enlever cette réponse si quelqu'un me convainc autrement. – RHertel

0

Veuillez noter qu'il existe un moyen d'approximer l'AUC avec un seul point de la courbe. Il est basé sur l'examen de ce point est connecté avec les points (0,0) et (1,1):

ROC curve with just one point

Si vous faites cela, l'AUC résultant est

AUC = (1 + TP - FP)/2

où TP est le taux positif vrai et FP est le taux positif faux (vous pouvez vérifier cela avec la géométrie de base).

Bien sûr, comment calculer l'AUC multi-classes est une question différente.