¿Por qué usar la escala de Platt?

17

Para calibrar un nivel de confianza a una probabilidad en el aprendizaje supervisado (por ejemplo, para mapear la confianza de un SVM o un árbol de decisión usando datos sobremuestreados), un método es usar la Escala de Platt (por ejemplo, Obteniendo Probabilidades Calibradas de Impulso ).

Básicamente se usa la regresión logística para mapear a [ 0 ; 1 ] . La variable dependiente es la etiqueta verdadera y el predictor es la confianza del modelo no calibrado. Lo que no entiendo es el uso de una variable de destino que no sea 1 o 0. El método requiere la creación de una nueva "etiqueta":[-;][0 0;1]

Para evitar el sobreajuste del conjunto de trenes sigmoides, se utiliza un modelo sin muestra. Si hay ejemplos positivos y N - ejemplos negativos en el conjunto de trenes, para cada ejemplo de entrenamiento Platt Calibration usa los valores objetivo y + e y - (en lugar de 1 y 0, respectivamente), donde y + = N + + 1norte+norte-y+y-

y+=norte++1norte++2;y-=1norte-+2

Lo que no entiendo es cómo es útil este nuevo objetivo. ¿No es la regresión logística simplemente tratar la variable dependiente como una etiqueta binaria (independientemente de qué etiqueta se proporcione)?

ACTUALIZAR:

1/ /0 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
fuente

Respuestas:

13

Sugiero revisar la página de wikipedia de regresión logística . Establece que en el caso de una variable binaria dependiente, la regresión logística asigna los predictores a la probabilidad de ocurrencia de la variable dependiente. Sin ninguna transformación, la probabilidad utilizada para entrenar el modelo es 1 (si y es positivo en el conjunto de entrenamiento) o 0 (si y es negativo).

pagyo=1(1+miXpag(UNFyo+si))Fyoy+y-

steffen
fuente
¡Gracias por la respuesta! Primero estaba usando SAS y no pude obtener una variable de respuesta diferente. Encajo lo siguiente en R como ejemplo y veo que se emite una advertencia sobre no ser una variable de respuesta entera, pero el resultado se ajustó a un modelo diferente.
B_Miner
data (ToothGrowth) attach (ToothGrowth) # 1/0 coding dep <-ifelse (supp == "VC", 1,0) OneZeroModel <-glm (dep ~ len, family = binomial) OneZeroModel predic (OneZeroModel) #Platt coding dep2 <-ifelse (supp == "VC", 31/32, 1/32) plattCodeModel <-glm (dep2 ~ len, family = binomial) plattCodeModel predic (plattCodeModel) compare <-cbind (predict (OneZeroModel), predict ( plattCodeModel)) plot (predict (OneZeroModel), predict (plattCodeModel))
B_Miner
@ user2040: 1. Sí ... ¿hay alguna pregunta o es solo un comentario :)? 2. ¿Por qué no agrega el código a la pregunta? Sin formato es horrible.
steffen
2

Otro método para evitar el sobreajuste que he encontrado útil es ajustar el modelo de regresión logística univariante a la salida de validación cruzada de omisión del SVM, que se puede aproximar de manera eficiente utilizando el límite de Span .

Sin embargo, si desea un clasificador que produzca estimaciones de la probabilidad de pertenencia a la clase, entonces sería mejor utilizar la regresión logística del núcleo, que tiene como objetivo hacerlo directamente. La salida del SVM está diseñada para una clasificación discreta y no necesariamente contiene la información requerida para una estimación precisa de las probabilidades fuera del contorno p = 0.5.

Los clasificadores de procesos gaussianos son otra buena opción si desea un clasificador probabilístico basado en el núcleo.

Dikran Marsupial
fuente