Binning óptimo con respecto a una variable de respuesta dada

11

Estoy buscando un método de agrupamiento óptimo (discretización) de una variable continua con respecto a una variable binaria de respuesta (objetivo) dada y con un número máximo de intervalos como parámetro.

ejemplo: tengo un conjunto de observaciones de personas con variables de "altura" (numeral continuo) y "has_back_pains" (binario). Quiero discretizar la altura en 3 intervalos (grupos) como máximo con diferentes proporciones de personas con dolores de espalda, de modo que el algoritmo maximice la diferencia entre los grupos (con restricciones dadas, por ejemplo, que cada intervalo tenga al menos x observaciones).

La solución obvia a este problema sería usar árboles de decisión (un modelo simple de una variable), pero no puedo encontrar ninguna función en R que tenga "número máximo de ramas" como parámetro; todos ellos dividen la variable en 2 gropus (<= x y> x). SAS miner tiene un parámetro de "rama máxima" pero estoy buscando una solución no comercial.

Algunas de mis variables tienen solo unos pocos valores únicos (y podrían tratarse como variables discretas), pero también quiero discretizarlas en un número menor de intervalos.

La solución más cercana a mi problema se implementa en el paquete smbinning en R (que se basa en la función ctree del paquete party) pero tiene dos inconvenientes: es imposible establecer el número de intervalos (sin embargo, puede encontrar una solución al cambiarlo el parámetro p) y no funciona cuando el vector de datos tiene menos de 10 valores únicos. De todos modos, puede ver el resultado de ejemplo aquí (las columnas Cutpoint y Odds son cruciales):

Cutpoint CntRec CntGood CntBad CntCumRec CntCumGood CntCumBad PctRec BadRate   Odds  LnOdds     WoE     IV
1   <= 272   9081     169   8912      9081        169      8912 0.1874  0.9814 0.0190 -3.9653 -0.6527 0.0596
2   <= 311   8541     246   8295     17622        415     17207 0.1762  0.9712 0.0297 -3.5181 -0.2055 0.0068
3   <= 335   2986     163   2823     20608        578     20030 0.0616  0.9454 0.0577 -2.8518  0.4608 0.0163
4  Missing  27852    1125  26727     48460       1703     46757 0.5747  0.9596 0.0421 -3.1679  0.1447 0.0129
5    Total  48460    1703  46757        NA         NA        NA 1.0000  0.9649 0.0364 -3.3126  0.0000 0.0956

Oh, soy plenamente consciente de que el binning resulta en la pérdida de información y que hay mejores métodos, pero lo usaré para la visualización de datos y trataré esas variables como un factor.

Dominix
fuente
SPSS tiene el comando Óptimo Binning. Google SPSS Algorithms Optimal Binning.
ttnphns
¿Has visto esta publicación stackoverflow.com/questions/7018954/…? Menciona el uso del valor de la información, pero no aclara lo que significa por IV = 1, o no explica cómo obtenerlo
Adam

Respuestas:

6

Mientras leía este libro aquí (Nagarajan, 2103 [1]), me encontré con esta valiosa información que estoy citando descaradamente aquí:

  • Uso de conocimientos previos sobre los datos. Los límites de los intervalos se definen, para cada variable, para corresponder a escenarios significativamente diferentes del mundo real, como la concentración de un contaminante particular (ausente, peligroso, letal) o clases de edad (niños, adultos, ancianos).

  • Usar la heurística antes de aprender la estructura de la red. Algunos ejemplos son: Sturges, Freedman-Diaconis o las reglas de Scott (Venables y Ripley, 2002).

  • Elegir el número de intervalos y sus límites para equilibrar la precisión y la pérdida de información (Kohavi y Sahami, 1996), nuevamente una variable a la vez y antes de que se haya aprendido la estructura de la red. Un enfoque similar considerando pares de variables se presenta en Hartemink (2001).

  • Realizar el aprendizaje y la discretización de forma iterativa hasta que no se realice ninguna mejora (Friedman y Goldszmidt, 1996).

Estas estrategias representan diferentes compensaciones entre la precisión de la representación discreta de los datos originales y la eficiencia computacional de la transformación.

Esta información se proporciona, en caso de que desee justificar el método de agrupación que desea usar y no solo usar un paquete directamente.

[1]: Nagarajan R. (2013),
Bayesian Networks in R, con aplicaciones en biología de sistemas
Springer

KarthikS
fuente
3

Pruebe el paquete de información para R. https://cran.r-project.org/web/packages/Information/Information.pdf https://cran.r-project.org/web/packages/Information/vignettes/Information-vignette .html

El paquete de información tiene la funcionalidad para calcular WoE y IV (el número de contenedores es un parámetro flexible, el valor predeterminado es 10) y es un instrumento útil para la exploración de datos y, en consecuencia, para el binning. Sin embargo, la salida no contiene probabilidades; y no es posible especificar cero como un contenedor separado (para mis tareas, el cero suele ser un contenedor válido por derecho propio); y sería bueno obtener resultados del paquete de información que sería como el de smbinning. Sin embargo, dicho esto sobre las características agradables pero aún no disponibles del paquete de Información, otros paquetes R para WoE y IV (woe, klaR) no causaron la impresión de instrumentos tan útiles como el paquete de Información, de hecho, yo no pudo ejecutarlos después de 2-3 intentos. Para la tarea de dscretisation / binning, los paquetes de información y smbinning pueden funcionar bien juntos,

Para el binning real, utilicé data.table en lugar de la función cut (). Vea el enlace a mi publicación a continuación, contiene un código genérico en la parte inferior de la pregunta inicial: /programming/34939845/binning-variables-in-a-dataframe-with-input-bin-data- de-otro-marco de datos

Espero eso ayude.

Akonza
fuente
@kjetil, kjetil b halvorsen, tienes razón. El paquete de información tiene una funcionalidad para calcular WoE y IV (el número de contenedores es un parámetro flexible, el valor predeterminado es 10) y es un instrumento útil para la exploración de datos y, por consiguiente, para el binning. Sin embargo, la salida no contiene probabilidades. Y no es posible especificar cero como un contenedor separado (para mis tareas, el cero a menudo es un contenedor válido por derecho propio). Otros paquetes R para WoE y IV (woe, klaR) no daban la impresión de instrumentos tan útiles como el paquete de información. Por lo tanto, la información y el paquete de combinación pueden funcionar bien juntos como una combinación.
Akonza