Tengo un modelo de regresión logística entrenado que estoy aplicando a un conjunto de datos de prueba. La variable dependiente es binaria (booleana). Para cada muestra en el conjunto de datos de prueba, aplico el modelo de regresión logística para generar un% de probabilidad de que la variable dependiente sea verdadera. Luego registro si el valor acutal era verdadero o falso. Estoy tratando de calcular una figura o ajustada como en un modelo de regresión lineal.
Esto me da un registro para cada muestra en el conjunto de pruebas como:
prob_value_is_true acutal_value
.34 0
.45 1
.11 0
.84 0
.... ....
Me pregunto cómo probar la precisión del modelo. Mi primer intento fue usar una tabla de contingencia y decir "si prob_value_is_true
> 0,80, supongo que el valor real es verdadero" y luego medir la proporción de clasificaciones correctas a incorrectas. Pero no me gusta eso, porque parece que solo estoy evaluando el 0.80 como límite, no la precisión del modelo en su conjunto y en todos los prob_value_is_true
valores.
Luego traté de mirar cada valor discreto prob_value_is_true, como ejemplo, mirando todas las muestras donde prob_value_is_true
= 0.34 y midiendo el% de esas muestras donde el valor acutal es verdadero (en este caso, la precisión perfecta sería si el% de muestras eso era cierto = 34%). Podría crear un puntaje de precisión del modelo sumando la diferencia en cada valor discreto de prob_value_is_true
. Pero los tamaños de muestra son una gran preocupación aquí, especialmente para los extremos (cerca del 0% o 100%), de modo que los promedios de los valores agudos no son precisos, por lo que usarlos para medir la precisión del modelo no parece correcto.
Incluso intenté crear rangos enormes para asegurar tamaños de muestra suficientes (0-.25, .25-.50, .50-.75, .75-1.0), pero la forma de medir la "bondad" de ese% del valor real me desconcierta . Digamos que todas las muestras prob_value_is_true
entre 0.25 y 0.50 tienen un promedio acutal_value
de 0.45. ¿Eso es bueno ya que está en el rango? ¿Malo ya que no está cerca del 37.5% (el centro del rango)?
Así que estoy atascado en lo que parece ser una pregunta fácil, y espero que alguien pueda señalarme un recurso o método para calcular una precisión estática para un modelo de regresión logística.
fuente
Respuestas:
Una medida que a menudo se usa para validar la regresión logística, es el AUC de la curva ROC (gráfico de sensibilidad frente a especificidad 1, solo google para los términos si es necesario). Esto, en esencia, evalúa todo el rango de valores umbral.
En el lado negativo: evaluar todo el rango de valores de umbral puede no ser lo que busca, ya que esto (típicamente) incluye umbrales que resultan en un gran número de falsos negativos o falsos positivos. Hay versiones de las AUC que explican esto (AUC parcial), por lo que si eso es un problema para usted, puede investigarlo.
fuente
Tiene razón al preocuparse por la proporción clasificada correcta como que refleja principalmente el efecto de un límite arbitrario. Recomiendo dos medidas. Uno es el área index o ROC como otros han descrito. Esto tiene una interpretación que es más simple que pensar en una curva ROC, y es una medida de discriminación predictiva pura. En segundo lugar, estimar una curva de calibración continua sin ningún agrupamiento de datos. Si las predicciones se evalúan en un conjunto de datos independiente, puede usarlo con la detección de valores atípicos desactivada para estimar la relación entre Prob predicho y real [Y = 1]. La función en el paquete R hará ambas cosas. Otras funciones endo
lowess
val.prob
rms
rms
hará lo mismo para la validación interna, usando remuestreo para eliminar los efectos del sobreajuste.fuente
Si sus datos están agrupados por valores de , puede calcular el valor predicho del modelo y su intervalo de confianza asociado, y ver si el porcentaje observado se encuentra dentro de ese rango. Por ejemplo, si tuviera 10 observaciones en x = 10 , 10 obs en x = 20 , 10 obs en x = 30 , etc., a continuación , , etc., produciría porcentajes que se pueden comparar con las predicciones. Tenga en cuenta que, incluso si el modelo es perfecto, algunos porcentajes observados rebotarán fuera del IC del 95%, al igual que en la regresión OLS. Si sus datos no están agrupados, puede formar sus propios grupos agrupando los datos según los rangos de la xX x = 10 x = 20 x = 30 X variable, como sugieres. Esto no es completamente válido, ya que dependerá de la elección de los contenedores, puede ser útil como una forma de explorar su modelo.
mean(y[x==10]==1)
mean(y[x==20]==1)
En general, la tarea que te has encomendado aquí es difícil. Eso es porque, con la regresión logística, se trata de dos tipos diferentes de cosas. Las predicciones del modelo son una variable latente, mientras que su variable de respuesta observada (aunque probablemente generada por una variable latente) no lo es. Por supuesto, las personas a menudo querrán saber cuál es la respuesta prevista, y eso es totalmente razonable; Este es solo uno de esos casos en los que la vida no es justa.
fuente
Creo que podría establecer un umbral (digamos 0.5), de modo que cuando su probabilidad sea igual o mayor que ese umbral, su clase pronosticada sería 1 y 0 en caso contrario. Entonces, podría obtener una medida de su precisión de esta manera:
Dado que su probabilidad es la probabilidad de dar sus datos (x) y usar su modelo su valor de clase (y) es igual a 1, no entiendo por qué siempre obtiene valores de probabilidad inferiores a 0.5. ¿Cuál es la frecuencia de tus clases reales (valor_real)?
fuente
Es posible que desee ver mi paquete
softclassval
(en softclassval.r-forge.r-project.org también encontrará dos presentaciones orales que di sobre las ideas detrás del paquete).Lo escribí para un problema ligeramente diferente, a saber, si la referencia (por ejemplo, el patólogo) "se niega" a dar una clase clara. Sin embargo, puede usarlo con clases duras "normales" y evita la definición de un umbral para endurecer la predicción originalmente continua , por lo que no evalúa el 0.8.
Sin embargo, recomiendo usarlo junto con, por ejemplo, un ROC o un diagrama de especificidad-sensibilidad: los resultados a menudo se verán bastante malos ya que "mis" métodos penalizarán las desviaciones ya leves (por ejemplo, 0.9 en lugar de 1 da una diferencia de 0.1 para mis medidas , pero todos los umbrales por debajo de 0.9 ignorarán esto). En realidad, creo que es más bien una ventaja: la falta de esta sensibilidad contra pequeñas desviaciones es uno de los principales puntos de crítica con esas medidas "endurecidas" como la precisión, la sensibilidad, el recuerdo, etc.
Además, al comparar el error absoluto medio (MAE) y el error cuadrático medio de raíz RMSE, puede averiguar si tiene muchas desviaciones pequeñas o menos muestras muy mal juzgadas.
fuente
Luego, ejecute esta simulación, digamos, 100 veces. Tendrá una matriz con n filas (n es el número de sujetos) yk columnas (en este caso, k = 100, el número de simulaciones). En el código r:
Ahora calcula la diferencia entre lo predicho en cada simulación y lo observado. Después de calcular esta diferencia, solo calcule el número medio de verdadero positivo y falso positivo para cada fila (cada sujeto) y trace el histograma. O calcule ambos para cada columna (simulación) e trace el histograma (prefiero esto).
Espero eso ayude...
fuente
Hay muchas maneras de estimar la precisión de tales predicciones y la elección óptima realmente depende de para qué se implementará la estimación.
Por ejemplo, si planea seleccionar algunos resultados de puntaje alto para un estudio de seguimiento costoso, es posible que desee maximizar la precisión en puntajes altos. Por otro lado, si el estudio de seguimiento es barato, es posible que desee maximizar el recuerdo (sensibilidad) con puntajes más bajos. El ROC AUC puede ser adecuado si está comparando un método diferente, etc.
En el aspecto práctico,
R
elROCR
paquete contiene 2 funciones útiles.Juntas, estas funciones pueden calcular una amplia gama de medidas de precisión, incluidos valores escalares globales (como "auc" ) y vectores dependientes de la puntuación para trazar curvas de precisión de recuperación y ROC ( "prec" , "rec" , "tpr" y "fpr" , etc.)
fuente
Debe definir lo que quiere decir con "precisión". Lo que le gustaría saber, disculpe por poner palabras en su boca, es qué tan bien su modelo se ajusta a los datos de entrenamiento y, lo que es más importante, qué tan bien "generaliza" este modelo a las muestras que no están en sus datos de entrenamiento. Aunque las curvas ROC pueden ser útiles para analizar el equilibrio entre precisión y recuperación para varios valores del umbral, sugiero agregar un error de cuadrado medio o la puntuación de Brier a su caja de herramientas. Es fácil de calcular e inmediatamente puede tener una idea de si los cambios en las características afectan el ajuste del modelo, cuando se aplican a los datos de entrenamiento. Dado que el sobreajuste es posible en este caso, su trabajo no se hace aquí. Para evaluar el rendimiento de la generalización, o qué tan bien le va en los datos que no ha visto, no es Lo suficiente como para observar su desempeño en las muestras de entrenamiento Por supuesto, su modelo es bueno en eso, porque son los valores que utilizó para determinar los coeficientes de su logística. Debe reservar algunas muestras para los datos de prueba. Su rendimiento de MSE en este conjunto debe establecer sus expectativas de generalización de acuerdo con la desigualdad de Hoeffding. Su error de generalización máxima dependerá de la cantidad de características en su modelo, así como de la cantidad de muestras utilizadas para calcular la estadística de prueba. Tenga en cuenta que necesitará robar algunas de sus muestras de entrenamiento para muestras de prueba. Recomiendo la validación cruzada 10 veces, donde baraja, elige el 90% para el entrenamiento, el 10% para las pruebas y luego mide, repite y luego promedia todas las mediciones. porque son los valores que usó para determinar los coeficientes de su logística. Debe reservar algunas muestras para los datos de prueba. Su rendimiento de MSE en este conjunto debe establecer sus expectativas de generalización de acuerdo con la desigualdad de Hoeffding. Su error de generalización máxima dependerá de la cantidad de características en su modelo, así como de la cantidad de muestras utilizadas para calcular la estadística de prueba. Tenga en cuenta que necesitará robar algunas de sus muestras de entrenamiento para muestras de prueba. Recomiendo la validación cruzada 10 veces, donde baraja, elige el 90% para el entrenamiento, el 10% para las pruebas y luego mide, repite y luego promedia todas las mediciones. porque son los valores que usó para determinar los coeficientes de su logística. Debe reservar algunas muestras para los datos de prueba. Su rendimiento de MSE en este conjunto debe establecer sus expectativas de generalización de acuerdo con la desigualdad de Hoeffding. Su error de generalización máxima dependerá de la cantidad de características en su modelo, así como de la cantidad de muestras utilizadas para calcular la estadística de prueba. Tenga en cuenta que necesitará robar algunas de sus muestras de entrenamiento para muestras de prueba. Recomiendo la validación cruzada 10 veces, donde baraja, elige el 90% para el entrenamiento, el 10% para las pruebas y luego mide, repite y luego promedia todas las mediciones. Su rendimiento de MSE en este conjunto debe establecer sus expectativas de generalización de acuerdo con la desigualdad de Hoeffding. Su error de generalización máxima dependerá de la cantidad de características en su modelo, así como de la cantidad de muestras utilizadas para calcular la estadística de prueba. Tenga en cuenta que necesitará robar algunas de sus muestras de entrenamiento para muestras de prueba. Recomiendo la validación cruzada 10 veces, donde baraja, elige el 90% para el entrenamiento, el 10% para las pruebas y luego mide, repite y luego promedia todas las mediciones. Su rendimiento de MSE en este conjunto debe establecer sus expectativas de generalización de acuerdo con la desigualdad de Hoeffding. Su error de generalización máxima dependerá de la cantidad de características en su modelo, así como de la cantidad de muestras utilizadas para calcular la estadística de prueba. Tenga en cuenta que necesitará robar algunas de sus muestras de entrenamiento para muestras de prueba. Recomiendo la validación cruzada 10 veces, donde baraja, elige el 90% para el entrenamiento, el 10% para las pruebas y luego mide, repite y luego promedia todas las mediciones.
fuente
Esto no sufre de umbrales arbitrarios. Cuanto más pequeña sea la medida, mejor.
fuente