Datos de entrada:
-> características de la camiseta (color, logotipo, etc.)
-> margen de beneficio
He entrenado un bosque aleatorio en los e Y anteriores y he logrado una precisión razonable en los datos de una prueba. Así que tengo
.
Ahora, me gustaría encontrar es decir, la distribución de probabilidad de las características X dado que espero este margen de beneficio.
¿Cómo hago eso con un bosque aleatorio (o cualquier otro modelo discriminativo)?
Una sugerencia para mí podría ser comenzar con un modelo generativo en lugar de un modelo discriminatorio. Pero, entiendo que el modelo generativo generalmente requiere una gran cantidad de datos para entrenar, a menos que eso suponga algunas suposiciones muy restrictivas, como la independencia condicional de en el caso de Naive Bayes.
Además, por lo que he escuchado, se ha planteado una pregunta similar para el descubrimiento de fármacos y se han diseñado algoritmos que crean nuevos fármacos candidatos que tienen un alto grado de éxito. ¿Alguien puede señalarme que investigue literatura en este dominio?
Actualizar:
Me he encontrado con esto y esto que habla de que las GAN se usan para el descubrimiento de fármacos. Las redes adversas generativas parecen encajar bien con mi enunciado del problema, así que he estado leyendo sobre ellas. Pero una cosa que entendí es que GAN genera muestras de forma no supervisada. Intentan producir una muestra que es como primero capturar la distribución subyacente de X y luego tomar muestras de esa distribución. Pero estoy interesado en X | Y. X e Y se definen anteriormente. ¿Debería explorar algo más que las GAN? ¿Alguna sugerencia por favor?
Siguiente pregunta:
Imagine que tengo un GAN capacitado que aprendió a hacer camisetas (muestra de salida X). ¿Cómo puedo obtener las 5 mejores camisetas para una Y dada?
Respuestas:
Esta respuesta se ha modificado significativamente de su forma original. Los defectos de mi respuesta original se analizarán a continuación, pero si desea ver más o menos cómo se veía esta respuesta antes de realizar la gran edición, eche un vistazo al siguiente cuaderno: https://nbviewer.jupyter.org/github /dmarx/data_generation_demo/blob/54be78fb5b68218971d2568f1680b4f783c0a79a/demo.ipynb
Estimación de máxima verosimilitud
... y por qué no funciona aquí
En mi respuesta original, la técnica que sugerí era usar MCMC para realizar la estimación de máxima verosimilitud. En general, MLE es un buen enfoque para encontrar las soluciones "óptimas" para las probabilidades condicionales, pero tenemos un problema aquí: porque estamos usando un modelo discriminativo (un bosque aleatorio en este caso) nuestras probabilidades se calculan en relación con los límites de decisión . En realidad, no tiene sentido hablar de una solución "óptima" para un modelo como este porque una vez que nos alejemos lo suficiente del límite de la clase, el modelo solo pronosticará las opciones para todo. Si tenemos suficientes clases, algunas de ellas podrían estar completamente "rodeadas", en cuyo caso esto no será un problema, pero las clases en el límite de nuestros datos serán "maximizadas" por valores que no son necesariamente factibles.
Para demostrarlo, voy a aprovechar el código de conveniencia que puede encontrar aquí , que proporciona la
GenerativeSampler
clase que envuelve el código de mi respuesta original, algún código adicional para esta mejor solución y algunas características adicionales con las que estaba jugando (algunas que funcionan , algunos que no) en lo que probablemente no entraré aquí.En esta visualización, las x son los datos reales, y la clase que nos interesa es verde. Los puntos conectados a la línea son las muestras que dibujamos, y su color corresponde al orden en que fueron muestreados, con su posición de secuencia "adelgazada" dada por la etiqueta de la barra de color a la derecha.
Como puede ver, la muestra divergió de los datos con bastante rapidez y luego, básicamente, se queda bastante lejos de los valores del espacio de características que corresponden a cualquier observación real. Claramente esto es un problema.
Una forma de hacer trampa es cambiar nuestra función de propuesta para permitir que las características tomen valores que realmente observamos en los datos. Probemos eso y veamos cómo eso cambia el comportamiento de nuestro resultado.
Introduzca la regla de Bayes
Después de que me acosabas para ser menos hábil con las matemáticas aquí, jugué con esto bastante (de ahí que construyera la
GenerativeSampler
cosa), y me encontré con los problemas que expuse anteriormente. Me sentí muy, muy estúpido cuando me di cuenta de esto, pero obviamente lo que estás pidiendo pide una aplicación de la regla de Bayes y me disculpo por ser despectivo antes.Si no está familiarizado con la regla bayes, se ve así:
En muchas aplicaciones, el denominador es una constante que actúa como un término de escala para garantizar que el numerador se integre a 1, por lo que la regla a menudo se reformula de la siguiente manera:
O en inglés simple: "el posterior es proporcional a los tiempos anteriores la probabilidad".
¿Parecer familiar? Que tal ahora:
Sí, esto es exactamente lo que trabajamos anteriormente al construir una estimación para el MLE que esté anclada a la distribución observada de los datos. Nunca he pensado en Bayes gobernar de esta manera, pero tiene sentido, así que gracias por darme la oportunidad de descubrir esta nueva perspectiva.
Entonces, después de haber hecho esta idea de que necesitamos incorporar un previo para los datos, hagamos eso ajustando un KDE estándar y veamos cómo eso cambia nuestro resultado.
Y ahí lo tiene: la gran 'X' negra es nuestra estimación MAP (esos contornos son el KDE de la parte posterior).
fuente
Una forma de avanzar podría ser:
Cree una red neuronal de avance que, dado Y (probablemente desee normalizarla) prediga la X. Por lo tanto, la salida del modelo (la última capa) sería un conjunto de neuronas softmax para cada característica. Entonces, si la función 1 (por ejemplo, el color) tiene 4 opciones, aplicará el softmax en cuatro neuronas y hará lo mismo en cada función.
Entonces, su función de pérdida podría ser la suma (o una combinación lineal si lo prefiere) de la entropía cruzada para cada característica.
fuente