Hola compañeros de número
Quiero generar n puntajes aleatorios (junto con una etiqueta de clase) como si hubieran sido producidos por un modelo de clasificación binaria. En detalle, se requieren las siguientes propiedades:
- cada puntaje está entre 0 y 1
- cada puntaje está asociado con una etiqueta binaria con valores "0" o "1" (este último es una clase positiva)
- la precisión general de los puntajes debe ser, por ejemplo, 0.1 (<- parámetro del generador)
- la proporción de puntajes con la etiqueta "1" debe ser mayor que la precisión general en la sección superior y menor en la sección inferior (<- la "calidad del modelo" también debe ser un parámetro del generador)
- los puntajes deben ser de tal manera que la curva de roc resultante sea suave (y no, por ejemplo, que un montón de puntajes con la etiqueta "1" estén en la parte superior y el resto de los puntajes con la etiqueta "1" esté en la parte inferior de la lista).
¿Alguien tiene una idea de cómo abordar esto? ¿Tal vez mediante la generación de una curva roc y luego generando los puntos de esa cura? ¡Gracias por adelantado!
Respuestas:
Ha pasado algún tiempo y creo que podría tener una solución a mano. Describiré brevemente mi enfoque para darle una idea general. El código debería ser suficiente para descubrir los detalles. Me gusta adjuntar código aquí, pero es mucho y stackexchange hace que no sea fácil hacerlo. Por supuesto, estoy feliz de responder cualquier comentario, también agradezco cualquier crítica.
El código se puede encontrar a continuación.
La estrategia:
Aquí hay un ejemplo de curva ROC para AUC = 0.6 y precisión general = 0.1 (también en el código a continuación)
Notas:
código:
fuente