TL;DR
Ver título.
Motivación
Espero una respuesta canónica en la línea de "(1) No, (2) No aplicable, porque (1)", con la que podamos cerrar muchos preguntas erróneas sobre conjuntos de datos desequilibrados y sobremuestreo. Me alegraría mucho que se demostrara que estoy equivocado en mis ideas preconcebidas. Fabulosas recompensas esperan al intrépido contestador.
Mi argumento
Me desconciertan las muchas preguntas que recibimos en el clases desequilibradas etiqueta. Las clases desequilibradas parecen ser evidentemente mala . Y sobremuestreo la(s) clase(s) minoritaria(s) se considera tan evidente que ayuda a resolver los problemas evidentes. Muchas preguntas que llevan ambas etiquetas proceden a preguntar cómo realizar el sobremuestreo en alguna situación específica.
No entiendo qué problema plantean las clases desequilibradas ni cómo se supone que el sobremuestreo resuelve estos problemas.
En mi opinión, los datos desequilibrados no suponen ningún problema. Hay que modelar las probabilidades de pertenencia a una clase, y éstas pueden ser pequeñas. Mientras sean correctas, no hay ningún problema. Por supuesto, no hay que utilizar la precisión como un KPI que hay que maximizar en un problema de clasificación. O calcular umbrales de clasificación . En su lugar, se debe evaluar la calidad de toda la distribución predictiva utilizando una reglas de puntuación . Tetlock's Superprevisión sirve como una maravillosa y muy legible introducción a la predicción de clases desequilibradas, aunque esto no se mencione explícitamente en el libro.
Relacionado
La discusión en los comentarios ha sacado a relucir una serie de temas relacionados.
- ¿Qué problema resuelven el sobremuestreo, el submuestreo y el SMOTE? En mi opinión, esta pregunta no tiene una respuesta satisfactoria. (Según mis sospechas, esto puede deberse a que no hay ningún problema .)
- ¿Cuándo los datos desequilibrados son realmente un problema en el aprendizaje automático? El consenso parece ser "no lo es". Probablemente votaré por cerrar esta pregunta como un duplicado de aquella.
Respuesta de IcannotFixThis parece suponer (1) que el KPI que intentamos maximizar es la precisión, y (2) que la precisión es un KPI apropiado para la evaluación del modelo de clasificación. No lo es. Esta puede ser una de las claves de todo el debate.
Respuesta de AdamO se centra en la baja precisión de las estimaciones de los factores no equilibrados. Se trata, por supuesto, de una preocupación válida y probablemente la respuesta a mi pregunta principal. Pero el sobremuestreo no ayuda en este caso, al igual que no podemos obtener estimaciones más precisas en cualquier regresión corriente simplemente duplicando cada observación diez veces.
-
¿Cuál es la raíz del problema del desequilibrio de clases? Algunos de los comentarios aquí se hacen eco de mi sospecha de que no hay ningún problema . La respuesta única de nuevo, se presupone implícitamente que utilizamos la precisión como KPI, lo que me parece insatisfactorio .
-
¿Existen problemas de aprendizaje desequilibrado en los que el reequilibrio/la reponderación mejoran de forma demostrable? precisión ? está relacionado, pero presupone la precisión como medida de evaluación. (Lo que yo sostengo que no es una buena opción).
Resumen
Aparentemente, los hilos anteriores pueden resumirse de la siguiente manera.
- Las clases raras (tanto en el resultado como en los predictores) son un problema, porque las estimaciones de los parámetros y las predicciones tienen una alta varianza/baja precisión. Esto no puede abordarse mediante un sobremuestreo. (En el sentido de que siempre es mejor obtener más datos que representante de la población, y el muestreo selectivo inducirá un sesgo según mis simulaciones y las de otros).
- Las clases raras son un "problema" si evaluamos nuestro modelo por su precisión. Pero la precisión no es una buena medida para evaluar los modelos de clasificación . (He pensado en incluir la precisión en mis simulaciones, pero entonces habría tenido que establecer un umbral de clasificación, que es un pregunta equivocada y la pregunta ya es lo suficientemente larga).
Un ejemplo
Hagamos una simulación para ilustrar. En concreto, simularemos diez predictores, de los cuales sólo uno tiene realmente un impacto en un resultado raro. Veremos dos algoritmos que pueden utilizarse para la clasificación probabilística: regresión logística y bosques aleatorios .
En cada caso, aplicaremos el modelo al conjunto de datos completo o a uno equilibrado sobremuestreado, que contiene todas las instancias de la clase rara y el mismo número de muestras de la clase mayoritaria (por lo que el conjunto de datos sobremuestreado es más pequeño que el conjunto de datos completo).
Para la regresión logística, evaluaremos si cada modelo recupera realmente los coeficientes originales utilizados para generar los datos. Además, para ambos métodos, calcularemos las predicciones probabilísticas de pertenencia a una clase y las evaluaremos con datos retenidos generados mediante el mismo proceso de generación de datos que los datos de entrenamiento originales. Se evaluará si las predicciones coinciden realmente con los resultados mediante el método Puntuación de Brier uno de los más comunes reglas de puntuación adecuadas .
Haremos 100 simulaciones. (Aumentar esto sólo hace que los gráficos de los granos sean más estrechos y que la simulación dure más que una taza de café). Cada simulación contiene $n=10,000$ muestras. Los predictores forman un $10,000\times 10$ con entradas distribuidas uniformemente en $[0,1]$ . Sólo el primer predictor tiene realmente un impacto; la verdadera DGP es
$$ \text{logit}(p_i) = -7+5x_{i1}. $$
Esto hace que las incidencias simuladas para la clase minoritaria TRUE estén entre el 2 y el 3%:
Vamos a realizar las simulaciones. Al introducir el conjunto de datos en una regresión logística, obtenemos (sin sorpresa) estimaciones insesgadas de los parámetros (los verdaderos valores de los parámetros están indicados por los diamantes rojos):
Sin embargo, si introducimos el conjunto de datos sobremuestreados en la regresión logística, el parámetro de intercepción está muy sesgado :
Comparemos las puntuaciones de Brier entre los modelos ajustados a los conjuntos de datos "brutos" y a los sobremuestreados, tanto para la regresión logística como para el bosque aleatorio. Recuerde que más pequeño es mejor:
En cada caso, las distribuciones predictivas derivadas del conjunto de datos completo son mucho mejores que las derivadas de uno sobremuestreado.
Concluyo que las clases desequilibradas no son un problema, y que el sobremuestreo no alivia este no-problema, sino que introduce gratuitamente sesgos y peores predicciones.
¿Dónde está mi error?
Una advertencia
Concederé gustosamente que el sobremuestreo tiene una aplicación: si
- estamos ante un resultado raro, y
- evaluación de la resultado es fácil o barato, pero
- evaluar la predictores es difícil o caro
Un buen ejemplo sería estudios de asociación del genoma completo (GWAS) de enfermedades raras. Comprobar si una persona padece una determinada enfermedad puede ser mucho más fácil que realizar el genotipo de su sangre. (He participado en algunos GWAS de TEPT .) Si los presupuestos son limitados, puede tener sentido hacer una selección basada en el resultado y asegurarse de que hay "suficientes" casos más raros en la muestra.
Sin embargo, hay que sopesar el ahorro monetario frente a las pérdidas ilustradas anteriormente, y lo que quiero decir es que las preguntas sobre los conjuntos de datos desequilibrados en CV no mencionan tal compensación, sino que tratan las clases desequilibradas como un mal evidente, completamente aparte de cualquier coste de la recogida de muestras .
Código R
library(randomForest)
library(beanplot)
nn_train <- nn_test <- 1e4
n_sims <- 1e2
true_coefficients <- c(-7, 5, rep(0, 9))
incidence_train <- rep(NA, n_sims)
model_logistic_coefficients <-
model_logistic_oversampled_coefficients <-
matrix(NA, nrow=n_sims, ncol=length(true_coefficients))
brier_score_logistic <- brier_score_logistic_oversampled <-
brier_score_randomForest <-
brier_score_randomForest_oversampled <-
rep(NA, n_sims)
pb <- winProgressBar(max=n_sims)
for ( ii in 1:n_sims ) {
setWinProgressBar(pb,ii,paste(ii,"of",n_sims))
set.seed(ii)
while ( TRUE ) { # make sure we even have the minority
# class
predictors_train <- matrix(
runif(nn_train*(length(true_coefficients) - 1)),
nrow=nn_train)
logit_train <-
cbind(1, predictors_train)%*%true_coefficients
probability_train <- 1/(1+exp(-logit_train))
outcome_train <- factor(runif(nn_train) <=
probability_train)
if ( sum(incidence_train[ii] <-
sum(outcome_train==TRUE))>0 ) break
}
dataset_train <- data.frame(outcome=outcome_train,
predictors_train)
index <- c(which(outcome_train==TRUE),
sample(which(outcome_train==FALSE),
sum(outcome_train==TRUE)))
model_logistic <- glm(outcome~., dataset_train,
family="binomial")
model_logistic_oversampled <- glm(outcome~.,
dataset_train[index, ], family="binomial")
model_logistic_coefficients[ii, ] <-
coefficients(model_logistic)
model_logistic_oversampled_coefficients[ii, ] <-
coefficients(model_logistic_oversampled)
model_randomForest <- randomForest(outcome~., dataset_train)
model_randomForest_oversampled <-
randomForest(outcome~., dataset_train, subset=index)
predictors_test <- matrix(runif(nn_test *
(length(true_coefficients) - 1)), nrow=nn_test)
logit_test <- cbind(1, predictors_test)%*%true_coefficients
probability_test <- 1/(1+exp(-logit_test))
outcome_test <- factor(runif(nn_test)<=probability_test)
dataset_test <- data.frame(outcome=outcome_test,
predictors_test)
prediction_logistic <- predict(model_logistic, dataset_test,
type="response")
brier_score_logistic[ii] <- mean((prediction_logistic -
(outcome_test==TRUE))^2)
prediction_logistic_oversampled <-
predict(model_logistic_oversampled, dataset_test,
type="response")
brier_score_logistic_oversampled[ii] <-
mean((prediction_logistic_oversampled -
(outcome_test==TRUE))^2)
prediction_randomForest <- predict(model_randomForest,
dataset_test, type="prob")
brier_score_randomForest[ii] <-
mean((prediction_randomForest[,2]-(outcome_test==TRUE))^2)
prediction_randomForest_oversampled <-
predict(model_randomForest_oversampled,
dataset_test, type="prob")
brier_score_randomForest_oversampled[ii] <-
mean((prediction_randomForest_oversampled[, 2] -
(outcome_test==TRUE))^2)
}
close(pb)
hist(incidence_train, breaks=seq(min(incidence_train)-.5,
max(incidence_train) + .5),
col="lightgray",
main=paste("Minority class incidence out of",
nn_train,"training samples"), xlab="")
ylim <- range(c(model_logistic_coefficients,
model_logistic_oversampled_coefficients))
beanplot(data.frame(model_logistic_coefficients),
what=c(0,1,0,0), col="lightgray", xaxt="n", ylim=ylim,
main="Logistic regression: estimated coefficients")
axis(1, at=seq_along(true_coefficients),
c("Intercept", paste("Predictor", 1:(length(true_coefficients)
- 1))), las=3)
points(true_coefficients, pch=23, bg="red")
beanplot(data.frame(model_logistic_oversampled_coefficients),
what=c(0, 1, 0, 0), col="lightgray", xaxt="n", ylim=ylim,
main="Logistic regression (oversampled): estimated
coefficients")
axis(1, at=seq_along(true_coefficients),
c("Intercept", paste("Predictor", 1:(length(true_coefficients)
- 1))), las=3)
points(true_coefficients, pch=23, bg="red")
beanplot(data.frame(Raw=brier_score_logistic,
Oversampled=brier_score_logistic_oversampled),
what=c(0,1,0,0), col="lightgray", main="Logistic regression:
Brier scores")
beanplot(data.frame(Raw=brier_score_randomForest,
Oversampled=brier_score_randomForest_oversampled),
what=c(0,1,0,0), col="lightgray",
main="Random Forest: Brier scores")
1 votos
Tengo más o menos la misma pregunta: stats.stackexchange.com/questions/285231/ ¡!
9 votos
También he realizado la misma simulación con una selección aún mayor de modelos y una gama más amplia de probabilidades de clase a priori, y he observado los mismos resultados. Además, si mide el AUC de sus modelos, observará que todos son iguales, independientemente del equilibrio de clases de sus datos de entrenamiento. Me pregunto cuál es el origen de esta amplia concepción sobre los males del equilibrio de clases, de dónde viene, cómo hemos llegado a este punto.
0 votos
¡Genial, gracias! Supongo que no busqué lo suficiente...
1 votos
Y: la cuestión no es cómo hemos llegado a este punto, sino ¿cómo nos libramos de ello?
1 votos
Estoy de acuerdo, pero sigo pensando que el problema de "cómo hemos llegado hasta aquí" es interesante.
1 votos
Acabo de ver que ya había votado tu pregunta. Y Pregunta de Tim que enlazas. Me estoy haciendo viejo. O puede que sea el alcohol.
32 votos
Sinceramente, saber que hay alguien más ahí fuera que está desconcertado por las interminables preguntas sobre el equilibrio de clases es reconfortante.
36 votos
"¿Cómo hemos llegado hasta aquí?" es una gran pregunta. No conozco la respuesta definitiva. Pero mi corazonada es que todo esto empezó cuando la comunidad del aprendizaje automático sólo se preocupaba por precisión . Con el tiempo, alguien señaló que se puede conseguir una precisión estúpidamente alta si (1) las clases están muy desequilibradas y (2) se predice la clase mayoritaria. En lugar de medir la calidad del modelo con una métrica distinta de la precisión, se inventó el sobremuestreo/SMOTE/etc para "resolver" este problema. Esto no es historia, sólo una historia que me he inventado basándome en mis impresiones y en pruebas observables.
2 votos
@Sycorax: esa es también mi persistente sospecha.
3 votos
@Sycorax Esa es también mi opinión sobre la tragedia. Combinado con mucha sabiduría heredada digerida sin reflexión.
1 votos
¿Es "cómo hemos llegado hasta aquí" una gran pregunta en el sentido de "sí, haz esa pregunta en el CV", o en el sentido de "yo también me lo pregunto"?
0 votos
Imagino que los datos desequilibrados pueden estropear las estimaciones de varianza o dispersión. Pero quizá estoy pensando con una perspectiva equivocada, no basada en el aprendizaje automático. Así que busco en la wikipedia es.wikipedia.org/wiki/ ¿y no describen un caso que se parece más a "si su predictor1 no se muestreara de la población real de forma desequilibrada (posiblemente sesgada)"?
2 votos
La fijación en la precisión también se refleja en algunos programas informáticos, como el de Breiman
randomForest
que tiene incorporado un método para medir la precisión OOB, pero ninguna otra métrica. Esto tiene algunas consecuencias deprimentes: la gente ajustará el número de árboles de un bosque aleatorio sin otra razón que la de haber sido sistemáticamente engañados haciéndoles creer que hacerlo es significativo. Más discusión sobre este punto en bosques aleatorios: stats.stackexchange.com/questions/348245/7 votos
Creo que gran parte de esto viene de los "grandes datos". Para eventos raros, se necesitan muchos datos, y quizás antes (digamos, hace 20 años), veíamos menos desequilibrio de clases porque tendrías irrisoriamente pocos ejemplos positivos en tu conjunto de datos, de ahí que ni siquiera intentaras utilizarlo. Hoy en día, es fácil tener un conjunto de datos con millones de filas y, digamos, unos cientos de ejemplos positivos.
1 votos
@StephanKolassa Es un poco difícil encontrarlo en el código y en el texto, pero ¿estás comparando en esos gráficos datos desequilibrados frente a datos desequilibrados sobremuestreados, o estás comparando datos equilibrados frente a datos desequilibrados sobremuestreados?
16 votos
@Sycorax No me hagas hablar de la decisión de los desarrolladores de sklearn de mapear el
predict
sobre modelos a la regla de decisión dura que umbraliza las probabilidades en0.5
.1 votos
@MartijnWeterings: Estoy comparando una muestra desequilibrada de $n=10^4$ frente a una submuestra equilibrada, que obtengo tomando todas las clases minoritarias (2-3%) más un número igual de muestras de la clase mayoritaria.
1 votos
@MatthewDrury: Para tirarte aún más de los pelos, intenta obtener intervalos de confianza para una regresión logística en sklearn (pista: no se puede).
1 votos
@MatthewDrury: R's
predict.randomForest()
hace lo mismo por defecto, aunque al menos puede especificartype="prob"
.0 votos
En mis experimentos construí algunos muestreadores en los que podía ajustar las probabilidades de clase a priori. Tomé muestras de conjuntos de datos con 25 valores de las probabilidades de clase a priori, desde 0,5 hasta 0,99. A continuación, los dividí en entrenamiento y prueba. A continuación, los dividí en entrenamiento y prueba, ajusté los modelos al entrenamiento y los evalué en la prueba. Utilizando el AUC, no hubo degradación en el rendimiento. Seleccioné el AUC porque tiene el mismo valor de referencia independientemente de la probabilidad de clase previa (mientras que, por ejemplo, la pérdida logarítmica cambia el valor de referencia). Hice esto con muchos parámetros en el muestreador, lo que cambió considerablemente la estructura de los datos, y para muchos modelos diferentes.
0 votos
Sus advertencias son sin duda ejemplos de la necesidad de un muestreo por exceso o por defecto. Un buen ejemplo son las incrustaciones de palabras (por ejemplo, Word2Vec), en las que hay grandes desequilibrios de clases y ocurrencias raras, que de otro modo se perderían si no se corrigiera el muestreo. Tenga en cuenta que el sobremuestreo no sólo mejora los modelos en términos de precisión, sino que, lo que es más importante acelera formación de modelos, especialmente para optimizaciones no convexas.
0 votos
@StephanKolassa pero ¿es eso realmente equilibrar cuando el 2-3% de clase minoritaria es la verdadera representación de la población? ¿Es equilibrado o desequilibrado si los grupos son todos iguales o si los grupos representan a la población? El caso más interesante sería ver qué ocurre cuando se aumentan los pesos de la clase mayoritaria en las muestras insuficientemente muestreadas para volver a una representación adecuada.
1 votos
@MartijnWeterings A la gran mayoría de usuarios de esta web que preguntan por el equilibrio de clases, se trata de que las clases positivas y negativas estén representadas por igual, lo que las aleja de la representación de la población.
1 votos
Esto es realmente un duplicado de la pregunta de @MatthewDrury. Sin embargo, esa no obtuvo una respuesta satisfactoria, así que +1. Tal vez deberíais responder a las preguntas de los demás con vuestras simulaciones :-) Stephan, respecto a tu simulación: No entiendo de dónde viene el sesgo en los resultados sobremuestreados. ¿Por qué está sesgada la estimación del intercepto y por qué es peor la puntuación Brier? Yo esperaría ingenuamente que el sobremuestreo no tuviera importancia en promedio, al menos en esta situación.
1 votos
@amoeba: ¿Por qué no lo cambiaría? En todo caso, el sobremuestreo distorsiona la distribución original de los datos, por lo que es "de esperar" que la línea de base (es decir, el intercepto) se desplace. En todo caso al leer el post pensé inmediatamente "Sí, obvio... Háblame del Predictor 1".
0 votos
@amoeba, estás cambiando el sesgo si cambias la representación de los grupos. Se supone que los predictores representan alguna probabilidad para una u otra clase (que debería ser 2-3% frente a 97-98% y no 50-50%). Para mí, ésta es una falsa idea de equilibrio. Equilibrio es correcto cuando hecho correcto. Por un lado, este ejemplo demuestra que los desequilibrios (no 50-50, sino desequilibrios desde esa interpretación diferente) son problemáticos porque crean sesgos.
0 votos
Si se aumenta una clase del 2-3% real al 50%, es posible que la línea de base aumente.
1 votos
@usr11852 Tienes razón. Me precipité al publicar mi comentario. Sin embargo, esto es lo que tenía en mente: en efecto, no es de extrañar que la puntuación de Brier tras el sobremuestreo sea peor y también que los coeficientes sean erróneos. Como usted dice, esto se debe a que el sobremuestreo cambia explícitamente la probabilidad de base. Pero si alguien está haciendo sobremuestreo entonces no está interesado en las predicciones probabilísticas correctas. Probablemente lo que le interesa es la precisión. Así pues, una pregunta para Stephan: ¿la precisión (condicionada a las clases 1 y 2) es menor para
model_logistic_oversampled
en comparación conmodel_logistic
?1 votos
@amoeba: por el bien de esta pregunta yo argumentaría que uno de los problemas con la precisión (además de no ser una regla de puntuación adecuada) es que no hay un precisión en el sentido de que, a menos que la sensibilidad y la especificidad sean iguales, la precisión depende de las frecuencias relativas de las clases. De este modo, obtenemos una "profecía autocumplida": alguien que sobremuestrea para el entrenamiento no se fijará normalmente en la precisión de las frecuencias relativas naturales, sino en la precisión de datos sobremuestreados de forma similar. Así, se entrena y verifica un modelo que una validación adecuada consideraría irrelevante.
0 votos
@StephanKolassa Gracias por este post, pero quiero añadir algunas advertencias más a tu punto sobre el sobremuestreo. En algunos casos, la muestra recogida no es representativa de la población; nos puede importar más la clase minoritaria (detección de anomalías); o simplemente puede que no desee reproducir la población . Un ejemplo de esto último que me viene a la mente es el incidente con la IA de contratación de Amazon que resultó ser sexista, presumiblemente porque fue entrenada con sus ya es sexista base de datos de empleados. En estos casos, tiene sentido reequilibrar el conjunto de datos para entrenar los algoritmos.
0 votos
¿Qué significa esta frase " Hay que modelizar las probabilidades de pertenencia a una clase, y éstas pueden ser pequeñas " ?
1 votos
@Minsky: en un problema de dos clases, lo que debería interesarnos es la probabilidad de que una instancia pertenezca a la clase A o B, condicional a los valores predictores de esa instancia. En un problema "desequilibrado", estas probabilidades son pequeñas. Sin embargo, los predictores pueden influir en ellas. Por ejemplo, la probabilidad de impago de un préstamo puede ser de 0,01 en general, pero si un solicitante concreto tiene ingresos bajos, pocos activos, no tiene trabajo y tiene antecedentes de impago, esta probabilidad puede ser de 0,3 para este caso concreto. (Y de 0,001 para alguien con mejores características.) ...
1 votos
... Obsérvese que incluso el "alto riesgo" puede tener un riesgo inferior a 0,5. A continuación, tenemos que tomar decisiones basadas en estas probabilidades. Podemos ofrecer mejores condiciones al riesgo bueno o no ofrecerle ningún préstamo. Esta decisión debería depender de las probabilidades de impago previstas y también de los costes implicados. (Más concretamente, deberíamos modelizar la probabilidad de impago al cabo de cierto tiempo, cuando ya se haya devuelto parte del préstamo, de modo que ya hayamos recuperado parte del capital y los intereses).
1 votos
Me cuesta ver cómo no es un problema en algunos puntos; por ejemplo, un bosque aleatorio con Gini como criterio de división. Los datos desequilibrados aquí realmente pueden estropear las divisiones, debido a la definición. He leído esta entrada/respuesta como "los datos desequilibrados no son un problema si se manejan correctamente", lo cual, por supuesto, es una afirmación trivial que puede aplicarse a todo. La cuestión es a menudo que el ajuste de la mayoría de los clasificadores están escritos para datos equilibrados - y me pregunto cómo que no es un problema (si no se maneja)?
0 votos
@CutePoison: tienes toda la razón en que es trivial que los datos "desequilibrados" no sean un problema cuando se tratan correctamente - y también en que muchos clasificadores sólo funcionan para datos equilibrados. (La mayoría de estos IMO escrito por personas con poco conocimiento estadístico.) Lo que causa un sinfín de problemas, sobre todo si los clasificadores se evalúan utilizando la precisión y similares - testigo casi a diario las preguntas aquí en CV. Y sí, la respuesta es sencilla: no utilice modelos o KPI inadecuados. Esto no es ciencia ficción, pero parece que todavía se conoce menos de lo que se debería.
0 votos
Me preguntaba lo mismo. Tuve una gran precisión ya que mi objetivo de carrera estaba desequilibrado 95/5 con el resultado [0, sin carrera] como mayoritario. Mi línea de base, según las instrucciones de mi profesor universitario, era del 95% y me daba escalofríos pensar en intentar construir un modelo que superara el 95%. En un principio, reduje la muestra de la mayoría, pero seguía sin poder superar la línea de base, por lo que pasé a aumentar la muestra de la minoría. Después pude obtener un 98% utilizando CART y KKN. Pero todo el tiempo me sentí como un fraude por el equilibrio y el objetivo de cerca de 100%, que es obviamente una locura.
1 votos
@Edison: según este hilo no utilices la precisión. También: ¿Es la precisión una regla de puntuación inadecuada en una clasificación binaria? y Umbral de probabilidad de clasificación . En su lugar, utilice clasificaciones probabilísticas y evalúelas utilizando reglas de puntuación adecuadas .
0 votos
@StephanKolassa Gracias por eso. Por cierto, para la clasificación binaria, ¿podemos usar recall y precision como se menciona en otros hilos si no queremos usar reglas de puntuación? ¿Y qué pasa si ya he sobremuestreado mi resultado minoritario? ¿Es entonces correcto utilizar la exactitud o el recuerdo o la precisión?
1 votos
@Edison: tú puede usarlos, como en "tú puede elegir pegarse un tiro en el pie". Sigue sin ser una buena idea, porque optimizarlos te dará estimaciones y predicciones sesgadas, de forma completamente análoga a como lo haría optimizar la precisión (como en: si no tienes predictores útiles, entonces optimizar la precisión te llevará automáticamente a predecir siempre la clase mayoritaria).
0 votos
Sólo para que quede claro porque todavía soy estudiante, ¿estás diciendo que yo no debe utilizar
(accuracy, recall, precision)
para la clasificación binaria en cualquier circunstancia ¿incluso si tengo un objetivo equilibrado o lo he equilibrado yo mismo? En clasificación binaria sólo ¿Utilizar reglas de puntuación? ¿Usar recall o precisión sería mejor que usar exactitud o sería igual de perjudicial?2 votos
@Edison: sí, eso es exactamente lo que recomiendo. Este hilo puede ser útil. Tampoco veo por qué el recuerdo o la precisión deberían ser preferibles a la exactitud. (Mi sospecha persistente es que alguien se dio cuenta de los problemas con la precisión y buscó algunos otro KPI que parecía que añadirlo a la mezcla mejoraría las cosas - sin profundizar lo suficiente y darse cuenta de que el problema radica en las clasificaciones 0-1 duras en primer lugar .)
0 votos
Gracias. Me alegro mucho de que en mi programa de posgrado nos enseñen a utilizar la precisión para la clasificación binaria ;)
0 votos
@Sycorax: Creo que tienes razón. Puede que se haya iniciado con la comunidad ML. Sin embargo para mi no se trata de precisión sino de convergencia. A pesar de tener esta conversación (y otras muy buenas sobre métricas adecuadas y datos sintéticos) en mente he probado algunos pesos de clase en mi último experimento de "Deep NN". No lo he resuelto completamente, pero los pesos de clase parecen tener un impacto en la convergencia. A veces conduce a una convergencia más rápida, a veces ayuda a evitar mínimos locales y obtener un mejor rendimiento. También parece aliviar el fenómeno de "dependencia de la semilla".
0 votos
Todo esto para decir que podría haber alguna evidencia empírica de la comunidad de ML a favor de reequilibrar las clases. Y los puntos en los que sería útil (reducir el tiempo de convergencia, reducir la dependencia de la inicialización, evitar las trampas de mínimos locales) no están cubiertos con el l
0 votos
Gracias por compartir. Por alguna razón no pude encontrarlo cuando buscaba bibliografía. Parece confirmar que la ponderación tiene efectos positivos en la DL. En resumen: la ponderación implica una convergencia más temprana, interactúa con la regularización L2, la norma de lotes, pero no el abandono.
2 votos
Probablemente debería reformularse para que la mayor parte de la pregunta se convierta en una respuesta. Ahora mismo no se puede utilizar como objetivo al marcar duplicados.
1 votos
@Sycorax otro elemento de "cómo hemos llegado hasta aquí" podría ser: hay toneladas de artículos académicos recientes sobre SMOTE y sus parientes cercanos, pero no puedo encontrar un solo buen artículo de referencia que pueda señalar a la gente y que explique la cuestión y la forma "correcta" de resolver estos problemas con claridad.
3 votos
Comentario general sobre el análisis estadístico: cualquier método que no tenga en cuenta el tamaño original de la muestra y cómo se ha obtenido es falso.
3 votos
Acabo de darme cuenta, pero ¿podría eliminar la línea rm(list=ls()) de su código?
4 votos
@Dave: para ser sincero, preferiría dejarlo dentro. He visto con demasiada frecuencia código "reproducible" que sólo funcionaba porque el espacio de trabajo de R contenía algo que el autor olvidó definir en su código. Lo quitaré porque me lo has pedido amablemente...
0 votos
La puntuación de Brier puede corregirse parcialmente añadiendo el término de sesgo inducido por el remuestreo (proporcionado en la respuesta enlazada); ¿quizá añadir el gráfico de violín con eso?
0 votos
Para ver algunas pruebas de que puede mejorar el (AU)ROC, consulte stats.stackexchange.com/q/128777/232706