Pourquoi utiliser la mise à l'échelle de Platt?

17

Afin d'étalonner un niveau de confiance à une probabilité dans un apprentissage supervisé (par exemple, pour mapper la confiance d'un SVM ou d'un arbre de décision à l'aide de données suréchantillonnées), une méthode consiste à utiliser la mise à l'échelle de Platt (par exemple, obtenir des probabilités calibrées à partir de la stimulation ).

Fondamentalement, on utilise la régression logistique pour mapper à . La variable dépendante est la véritable étiquette et le prédicteur est la confiance du modèle non calibré. Ce que je ne comprends pas, c'est l'utilisation d'une variable cible autre que 1 ou 0. La méthode appelle à la création d'un nouveau "label":[;][0;1]

Pour éviter le sur-ajustement du train sigmoïde, un modèle hors échantillon est utilisé. S'il y a exemples positifs et exemples négatifs dans le train, pour chaque exemple de formation, l'étalonnage Platt utilise les valeurs cibles et (au lieu de 1 et 0, respectivement), où N+Ny+y

y+=N++1N++2;y=1N+2

Ce que je ne comprends pas, c'est l'utilité de cette nouvelle cible. La régression logistique ne va-t-elle pas simplement traiter la variable dépendante comme une étiquette binaire (quelle que soit l'étiquette donnée)?

MISE À JOUR:

J'ai trouvé que dans SAS, le changement de la dépendance de à quelque chose d'autre revenait au même modèle (en utilisant ). Peut-être mon erreur ou peut-être le manque de polyvalence de SAS. J'ai pu changer le modèle dans R. À titre d'exemple:1/0PROC GENMOD

data(ToothGrowth) 
attach(ToothGrowth) 

  # 1/0 coding 
dep          <- ifelse(supp == "VC", 1, 0) 
OneZeroModel <- glm(dep~len, family=binomial) 
OneZeroModel 
predict(OneZeroModel) 

  # Platt coding 
dep2           <- ifelse(supp == "VC", 31/32, 1/32) 
plattCodeModel <- glm(dep2~len, family=binomial) 
plattCodeModel 
predict(plattCodeModel) 

compare        <- cbind(predict(OneZeroModel), predict(plattCodeModel)) 

plot(predict(OneZeroModel), predict(plattCodeModel))
B_Miner
la source

Réponses:

13

Je suggère de consulter la page wikipedia de régression logistique . Il indique qu'en cas de variable logistique binaire dépendante, la régression logistique mappe les prédicteurs à la probabilité d'occurrence de la variable dépendante. Sans aucune transformation, la probabilité utilisée pour l'apprentissage du modèle est soit 1 (si y est positif dans l'ensemble d'apprentissage), soit 0 (si y est négatif).

pi=1(1+exp(Afi+B))fiy+y

steffen
la source
Merci pour la réponse! J'utilisais d'abord SAS et je n'ai pas pu obtenir une variable de réponse différente. Je rentre l'exemple suivant dans R et vois qu'un avertissement est émis pour ne pas être une variable de réponse entière mais le résultat correspondait à un modèle différent.
B_Miner du
data (ToothGrowth) attach (ToothGrowth) # 1/0 codage dep <-ifelse (supp == "VC", 1,0) OneZeroModel <-glm (dep ~ len, family = binomial) OneZeroModel Predict (OneZeroModel) #Platt coding dep2 <-ifelse (supp == "VC", 31/32, 1/32) plattCodeModel <-glm (dep2 ~ len, family = binomial) plattCodeModel prédire (plattCodeModel) comparer <-cbind (prédire (OneZeroModel), prédire ( plattCodeModel)) plot (prédire (OneZeroModel), prédire (plattCodeModel))
B_Miner
@ user2040: 1. Oui ... y a-t-il une question ou est-ce juste une remarque :)? 2. pourquoi n'ajoutez-vous pas le code à la question? Aucun formatage n'est horrible.
steffen
2

Une autre méthode pour éviter le sur-ajustement que j'ai trouvé utile consiste à ajuster le modèle de régression logistique univariée à la sortie de validation croisée sans sortie du SVM, qui peut être approximée efficacement en utilisant la limite Span .

Cependant, si vous voulez un classificateur qui produit des estimations de la probabilité d'appartenance à une classe, vous feriez mieux d'utiliser la régression logistique du noyau, qui vise à le faire directement. La sortie du SVM est conçue pour une classification discrète et ne contient pas nécessairement les informations requises pour une estimation précise des probabilités loin du contour p = 0,5.

Les classificateurs de processus gaussiens sont une autre bonne option si vous voulez un classificateur probabiliste basé sur le noyau.

Dikran Marsupial
la source