- fjroar
- 28 oct 2023
- 3 Min. de lectura
Para muchos de aquellos que hacen modelos de Credit Scoring, como es mi caso, estoy casi seguro de que os habréis preguntado ¿Cómo puedo incorporar analítica más avanzada a esto y que además mantenga la estructura de interpretación sencilla que me ofrece un Credit Scoring?
Pues bien, esto es un tema que lo trataré en https://eventum.upf.edu/101896/detail/ii-congreso-de-r-y-xiii-jornadas-de-usuarios-de-r.html pero a lo que voy ahora es a ofrecer una vía sencilla que responda a la anterior pregunta, sin meterme en demasiado lío con lo que significaría ir hacia un Machine Learning, que lo dejo para la charla o para otro post posterior.
Pues bien, el Credit Scoring como es bien sabido se estructura en 2 partes fundamentales, la parte del trameado de variables y la de la construcción de un modelo de regresión logística subyacente. Una vez hechas estas 2 partes, el siguiente paso, la construcción de la tarjeta de puntuación se hace de un modo sencillo ya que mediante logaritmos se transforma la salidad habitual de probabilidades de estos modelos como suma de puntos a partir de los scoring parciales.
Una extensión, bastante natural en mi opinión, sería permitir que las regresiones ridge y/o lasso puedan hacer el papel de la regresión logística subyacente y así se estaría dando al menos, posibilidad de introducir estos modelos paradigmáticos del Machine Learning y por tanto se podría jugar con hiperparámetros como el elastic net al que nos habilita la librería de R glmnet:

Entonces el tema es ¿Cómo hacer todo lo anterior de una manera sencilla en R? Pues la respuesta va a ser mediante el uso por un lado de una de mis librerías favoritas como es la scorecard, por supuesto también con el uso de la citada librería glmnet y finalmente con la contribución que os hago sobre una función que he preparado y que he denominado scorecard_glmnet(), esta función tiene como entrada 3 elementos, 2 de los cuáles son los elementos que necesita la función scorecard() de la dichosa librería scorecard y un tercer elemento como es el valor del lambda, con el que se va a penalizar los coeficientes, donde recomiendo que para elegirlo se haga uso de la función cv.glmnet() de la librería glmnet, que si no se pone, se tomará lambda = 0.
Pues bien con mi función, que la podéis utilizar y trastear como os de la gana si la tomáis de mi git en esta url https://github.com/FJROAR/R-function-scorecard_glmnet, se genera una salida totalmente compatible con scorecard_ply() también de la librería scorecard() y que permite generar, posteriormente y en un paso super sencillo, la tarjeta de puntuación como si fuera cualquier modelo de Credit Scoring (todo esto está en el código del git con un ejemplo adicional para que podáis reproducir y para lo que os recomiendo que os descarguéis el dataset https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud), con lo que ya se habría generado una tarjeta de puntuación, ahora sí con un algoritmo propio del Machine Learning (que se conocía, en caso de la ridge desde los años 70 y en el caso de la Lasso desde el 96 ideada por el gran Robert Tibshirani).
Para finalizar, quiero indicar que el interés en compartir esta entrada es simplemente tratar de facilitar la vida a gente que esté trabajando con estas técnicas de CS con R por lo que estoy seguro de que hay realizaciones de este tipo, seguramente mejor montada que la que yo ofrezco, ya que esta es una idea muy natural que estoy seguro que ha sido muy explorada, aunque aquí la he sacado porque creo que más de uno es posible que no lo muy claro.