2016-05-17 2 views
0

J'ai un ensemble de prédictions d'un modèle, et un ensemble de vraies valeurs des observations, et je veux créer un ROC.ROC pour les prédictions - comment définir les étiquettes de classe

La qualité de la prédiction (en termes d'erreur absolue) est indépendante de l'amplitude de la prédiction. J'ai donc un ensemble de prédictions (pred (1), pred (2), ..., pred (n)) et d'observations (obs (1), obs (2), ..., obs (n)). Quelqu'un m'a dit de créer les éléments de mon étiquette de vecteur de classification binaire (i) comme étiquette (i) = ifelse (| obs (i) - pred (i) | < tol, 1, 0) puis de calculer AUC (tol est une tolérance respécifiée). Donc, pour chaque prédiction, si elle est proche de l'observation correspondante, l'étiquette correspondante est 1, sinon elle est 0.

Mais je ne vois pas comment l'étiquetage suggéré est valide, car des valeurs plus élevées de pred() ne seront pas nécessairement discriminer ma classification binaire, c'est-à-dire que les valeurs de prédiction ne servent pas à "CLASSER" la qualité de mes prédictions (ie, un seuil donné ne divise pas mes données naturellement). Quelqu'un peut-il s'il vous plaît me faire la lumière sur ce qu'il faut faire ici? La suggestion donnée ci-dessus est-elle valide? Ou est-ce qu'un ROC est inapproprié à utiliser ici?

+0

Qui vous a dit de faire ça? Ce n'est certainement pas l'analyse ROC ... vous voudrez plutôt utiliser une mesure de corrélation. – Calimo

+0

Mon instinct dit que tu as raison. Un collègue l'a fait. Puis-je obtenir plus d'explications de votre part ou de la part de quelqu'un d'autre sur les raisons pour lesquelles il est invalide de binariser en fonction du prédicteur? – user85727

+0

* un collègue l'a suggéré – user85727

Répondre

0

L'analyse ROC est définie pour la classification binaire, où les étiquettes observées peuvent prendre deux valeurs (binaires) et vos prédictions sont toutes sortes de nombres. Il y a des extensions de l'analyse ROC à la classification multi-classes, mais votre question suggère que vos observations sont une sorte de mesure continue. Vous pourriez les binariser (quelque chose comme label(i) = ifelse(obs(i) > someValue, 1, 0)), mais il ne serait pas valide que les étiquettes dépendent de la classification: elles doivent être une sorte de vérité indépendante de votre classificateur. Alternativement, si vos observations sont continues, vous devez évaluer la qualité de vos prédictions avec un coefficient de corrélation ou une mesure similaire.

+0

Vous êtes certain à ce sujet, qu'il est invalide de binariser basé sur le classificateur? – user85727

+0

Il semble que cette affiche a fait une binarisation similaire à celle que vous avez commentée mais n'a pas mentionné était invalide: http://stackoverflow.com/a/37268167/3954614 – user85727

+0

@ user85727 qui n'était pas la question là – Calimo