étalonnage des scores du classificateur: régression isotonique
J'étudie l'approche de régression isotonique pour calibrer les scores à partir d'un classificateur.
Si je comprends bien, nous faisons ce qui suit. Tout d'abord, nous obtenons le graphique d'étalonnage (ou courbe de fiabilité), qui est la moyenne des valeurs prédites par rapport à la fraction de positifs. Ensuite, nous voulons que la «fraction de positifs» soit une fonction non décroissante des «valeurs moyennes prédites», ce qui se fait par régression isotonique.
Voici ma confusion: comment se fait-il que dans certains cas, la «fraction de positifs» ne soit pas une fonction non décroissante? Par exemple, ici: le boîtier calibré n'est pas une fonction croissante. L'intrigue est tirée de
https://www.svds.com/classifiers2/
On peut trouver d'autres exemples avec le même problème. J'ai lu l'article original
B. Zadrozny et C. Elkan. Transformer les scores des classificateurs en estimations de probabilité multiclasses précises.
Dans leurs résultats, la fonction calibrée est monotone.

Réponses
Vous pouvez obtenir des écarts comme ceux-ci lorsque le modèle utilisé pour l'ajustement ne capture pas le vrai modèle avec précision.
Par exemple, lorsque vous ajustez des données qui suivent une relation quadratique avec une courbe linéaire, vous obtiendrez alors qu'un graphique des résidus montre une tendance à la sur / sous-estimation variable. Quelque chose de similaire peut se produire avec un graphique de probabilités (qui est une sorte de graphique résiduel du graphique prévu par rapport au graphique observé).
Ensuite, nous voulons que la «fraction de positifs» soit une fonction non décroissante des «valeurs moyennes prédites», ce qui se fait par régression isotonique.
Ce n'est pas une représentation correcte de la régression isotonique.
Dans votre cas, la régression isotonique, il n'y a pas non plus de garantie que les résidus suivent une tendance monotone. C'est la valeur de probabilité ajustée qui est une fonction monotone croissante / décroissante (en fonction d'un paramètre prédictif).
Les données et ni les résidus ne doivent être monotones croissants / décroissants. De même, l'observé en fonction de l'ajustement n'a pas besoin d'être une fonction monotone.
Par exemple, si vous avez une diminution de $p$ vers la fin, alors la régression monotone pourrait surestimer ces dernières valeurs (car cela entraînera une erreur plus faible pour les autres valeurs), et vous obtiendrez une diminution du graphique de l'observation par rapport aux prévisions.
(ou imaginez comment la régression monotone s'adapterait à une courbe sinusoïdale)
Nous pourrions illustrer ce comportement par un exemple clair.
Supposons que nous ayons des données distribuées par Bernoulli où le logit de la probabilité est une fonction quadratique. Et disons que nous ajustons ce logit avec une fonction linéaire au lieu d'une fonction quadratique.
Vous pouvez imaginer que la courbe linéaire variera en surestimant et sous-estimant le paramètre de probabilité.
Pour l'exemple du code ci-dessous
$$p_{true} = \text{logistic}(8+6x+x^2) = \frac{1}{1+e^{-8-6x-x^2}} $$
cela ressemblera à ceci lorsque nous échantillonnerons 10k points avec $-4<x<4$:

Ici, vous voyez le modèle variable de sur / sous-estimation lorsque nous ajustons une courbe quadratique avec une ligne droite.
Il ne semble pas que nous nous adaptions à une ligne droite car c'est la fonction logistique appliquée à une ligne droite. Donc, ici, nous traçons le logit des probabilités:

Nous pouvons également tracer une courbe du paramètre de probabilité prédite par rapport au paramètre de probabilité réel.

Le graphique ci-dessus n'est pas le même que le vôtre, ce ne sont pas des données groupées, mais cela montre que la courbe peut être non décroissante.
Dans le cas des données observées regroupées, qui sont stochastiques, vous pouvez obtenir des variations / bruit supplémentaires, ce qui peut entraîner une courbe non décroissante.
### logistic function
flogistic <- function(x) {
1/(1+exp(-x))
}
### generate bernoulli distributed data
### the probability is modeled with a QUADRATIC funcion
set.seed(1)
x <- runif(10^3,-4,4)
p <- flogistic((x+4)*(x+2))
y <- rbinom(10^3,size = 1, prob=p)
### fit with LINEAR function
mod <- glm(y~x, family = binomial(link = "logit"))
mod
### plotting observations
xs <- seq(-4,4,0.001)
plot(x,y, pch = 21, col = rgb(0,0,0,0.2), bg = rgb(0,0,0,0.2), cex = 0.7, ylab = "p" )
### this is the true model
lines(xs,flogistic((xs+4)*(xs+2)))
### this is the fitted model
lines(xs,flogistic(mod$coefficients[1]+mod$coefficients[2]*xs), lty = 2)
legend(-4,0.9, c("data","true model", "fitted model"),
lty = c(NA,1,2), pch = c(21,NA,NA), col = 1, pt.bg=rgb(0,0,0,0.2))
### plotting logit
xs <- seq(-4,4,0.001)
plot(-100,-100, pch = 21, col = rgb(0,0,0,0.2), bg = rgb(0,0,0,0.2), cex = 0.7,
xlim = c(-4,4), ylim = c(-4,4), xlab = "x", ylab = "logit(p)")
### this is the true model
lines(xs,(xs+4)*(xs+2))
### this is the fitted model
lines(xs,(mod$coefficients[1]+mod$coefficients[2]*xs), lty = 2)
legend(-4,4, c("logit(p) true model", "logit(p) fitted model"),
lty = c(1,2), pch = c(NA,NA), col = 1, pt.bg=rgb(0,0,0,0.2))
###
plot(flogistic(mod$coefficients[1]+mod$coefficients[2]*xs),flogistic((xs+4)*(xs+2)),
type = "l", xlab = "predicted p", ylab = "true p",
xlim = c(0,1),ylim=c(0,1))
lines(c(0,1),c(0,1), lty = 2)