8 votos

Obtención de probabilidades superiores a 1 en el aprendizaje positivo y sin etiqueta

Tengo una pregunta sobre el PU-Learning, que trata del aprendizaje a partir de datos con etiqueta positiva (sin ejemplos negativos etiquetados) y datos sin etiqueta positiva/negativa.

En particular, mi pregunta es sobre el papel Aprendizaje de clasificadores sólo a partir de datos positivos y no etiquetados . Este trabajo convierte un clasificador no tradicional $g(x)$ que se aprende a partir de conjuntos de datos etiquetados/no etiquetados y arroja la probabilidad de que un ejemplo sea etiquetado, en un clasificador tradicional $f(x)$ que arroja la probabilidad de que un ejemplo sea positivo. He implementado el primer enfoque propuesto (sección 2, "aprendizaje de un clasificador tradicional a partir de una entrada no tradicional"). Sin embargo, la probabilidad $f(x)=g(x)/p(s=1|y=1)$ se hace mayor que 1 para varios ejemplos (no debería ser mayor que 1, ya que es una probabilidad)

Para el aprendizaje del clasificador no tradicional $g(x)$ Estoy utilizando un conjunto de datos no tradicional compuesto por

  1. 100.000 ejemplos etiquetados elegidos al azar entre todos los datos etiquetados, y
  2. 100.000 ejemplos no etiquetados elegidos aleatoriamente de entre todos los datos no etiquetados.

Y para estimar $p(s=1|y=1)$ --con el primer estimador propuesto--estoy utilizando un conjunto de datos de validación compuesto por 30.000 instancias etiquetadas elegidas al azar de un conjunto de datos etiquetados separado.

Según el documento, la probabilidad $f(x)$ se garantiza que está bien formada si (1) y (2) se solapan en el espacio de ejemplos. En mi caso, (1) y (2) tienen un 20% de ejemplos superpuestos, pero sigo obteniendo probabilidades no bien formadas (>1).

¿Cómo podría conseguir una probabilidad bien definida para $f(x)$ ?

EDITAR 8/21

  1. Según el documento, $g(x)$ debe ser un clasificador que produzca probabilidades correctas como su salida, como la Regresión Logística, o un clasificador calibrado como Naive Bayes/SVM, para que el enfoque funcione. Simplemente estoy utilizando el clasificador de máxima entropía (del paquete NLTK), también conocido como regresión logística. Por lo tanto, supongo que no debería haber ningún problema con esto.

  2. Aunque el documento afirma que los conjuntos de datos etiquetados (1) y no etiquetados (2) para el entrenamiento $g(x)$ son "muestras de regiones superpuestas en el espacio de características", tales conjuntos de datos parecen ser disjuntos (véase el experimento de la Sección 5, P y U son disjuntos). He probado con conjuntos de datos etiquetados y no etiquetados también, pero sigo obteniendo probabilidades superiores a uno para $f(x)$ .

  3. Equilibrar los conjuntos de datos tampoco supone ninguna diferencia.

  4. He probado el segundo estimador propuesto (e2). Sigo obteniendo probabilidades superiores a 1 para $f(x)$ .

EDITAR 8/29

  1. En la sección 5, que describe un ejemplo con datos del mundo real, tenemos un conjunto P de ejemplos etiquetados+positivos de la base de datos TCDB, y un conjunto U de ejemplos no etiquetados muestreados aleatoriamente de la base de datos SwissProt, siendo P y U disjuntos. A continuación, utilizan P,U para aprender un clasificador no tradicional. Creo que este enfoque puede aplicarse a mi problema, ya que también tengo un conjunto de ejemplos positivos, y un conjunto de ejemplos no etiquetados muestreados aleatoriamente. ¿Qué opinas?

  2. He probado el tercer estimador propuesto (e3). Dado que toma la máxima probabilidad de los ejemplos del conjunto con etiqueta positiva (en mi caso, alrededor de 0,98), ya no obtengo probabilidades superiores a uno. Sin embargo, como esta estimación sólo se basa en un ejemplo y no en la media de todos los ejemplos, no me parece un buen estimador. ¿Alguna idea sobre la validez de este estimador?

Gracias

4voto

JMW.APRN Puntos 21

He intentado seguir las instrucciones de los autores con un caso de prueba muy sencillo. Aquí está el código R que he utilizado.

set.seed(123)
# Create the data according to authors' notations.
# For the first 100 observations y = 1, and for the last 100 y = 0.
# Only the first 25 obersvations are labelled, according to their
# "chosen completely at random" criterion.
c <- 25/100
data <- data.frame(
   y = c(rep(1,100), rep(0,100)),
   x = c(rnorm(100, mean=2), rnorm(100, mean=0)),
   s = c(rep(1,25), rep(0, 175))
)
# Train a standard logistic classifier on s
g <- glm(s ~ x, data=data, family="binomial")
max(g$fitted.values / c) # 1.676602

Por lo tanto, incluso en casos muy simples, las probabilidades estimadas son superiores a uno. La razón de que esto ocurra es que las probabilidades estimadas $g(x) = p(s=1|x)$ son estimados. Si realmente tenemos $g(x) \approx p(s=1|x)$ y $c$ se estima, nada impide que $ g(x) / c$ sea mayor que uno.

En realidad, el método tiene límites prácticos muy fuertes. En primer lugar, hay que tener una buena estimación de $c$ que sólo se puede obtener con un conjunto de datos tradicional. En segundo lugar, tiene que haber una única muestra "elegida completamente al azar". Tercero... bueno, usted acaba de señalar el tercer punto ;-)

Nota: Por su descripción, tengo la sensación de que su esquema de muestreo no está "elegido completamente al azar", como insisten mucho los autores.

Hay una sutil pero importante diferencia entre el escenario considerado aquí, y el escenario considerado en [21]. El escenario aquí es que los datos de entrenamiento se extraen aleatoriamente de $p(x, y, s)$ pero para cada tupla $\langle x, y, s\rangle$ que se dibuja, sólo $\langle x, s\rangle$ se registra. El escenario de [21] es que dos conjuntos de entrenamiento se extraen independientemente de $p(x, y, s)$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X