El sobremuestreo ¿mejora mi estimación?

El sobremuestreo (oversampling) es una técnica de muestreo que se emplea habitualmente cuando tenemos una baja proporción de casos positivos en clasificaciones binomiales. Los modelos pueden “despreciar” los casos positivos por ser muy pocos y nuestro modelo no funcionaría. Para incrementar el número de casos positivos se emplea el sobremuestreo. Ejemplos habituales pueden ser los modelos de fraude, un 99% de las compras son correctas, un 1% son fraudulentas. Si realizo un modelo puedo estar seguro al 99% de que todas mis compras son correctas, en este caso hemos de realizar un sobremuestreo para incrementar nuestros casos de fraude y poder detectar los patrones. ...

6 de noviembre de 2011 · rvaquerizo

Árboles de decisión con SAS Base (con R por supuesto)

Con SAS Base podemos hacer árboles de decisión porque tenemos R. Así de sencillo. Vamos a utilizar SAS para gestionar nuestros datos y R será la herramienta que utilicemos para la realización del modelo de árbol de decisión. Posteriormente emplearemos las reglas generadas por el modelo para etiquetar a nuestros clientes en SAS. Con esta entrada pretendo ilustrar una serie de ejemplos en los que comunico SAS con R. Una herramienta nos sirve para el tratamiento de datos y la otra la utilizaremos para realizar modelos que no están al alcance de SAS. Para realizar esta comunicación SAS-R os planteo la creación en SAS de ficheros de texto con las instrucciones en R y la ejecución en modo batch de R con ese código creado en SAS. Aquí tenéis punto por punto el ejemplo: ...

12 de julio de 2011 · rvaquerizo

Trucos R. Llevar a SAS las reglas de un `árbol de decisión`

Vuelvo hoy con el uso de rpart para la creación de árboles de decisión con R. Pero hoy, además de realizar un modelo de árbol con R quiero presentaros una función que nos permite guardar las reglas generadas con nuestro modelo en un fichero de texto para su posterior utilización con SAS. Retomamos un ejemplo visto con anterioridad en bitácora con ligeras modificaciones: #Inventamos un objeto para realizar el modelo #En una cartera de clientes nuestro modelo tiene que identificar #cuales contratan un PVI # clientes=20000 saldo_vista=runif(clientes,0,1)*10000 saldo_ppi=(runif(clientes,0.1,0.2)*rpois(clientes,1))*100000 saldo_fondos=(runif(clientes,0.1,0.9)*(rpois(clientes,1)-1>0))*100000 edad=rpois(clientes,60) datos_ini<-data.frame(cbind(saldo_vista,saldo_ppi,saldo_fondos,edad)) datos_inisaldo_ppi=(edad<=68)*datos_inisaldo_ppi #Creamos la variable objetivo a partir de un potencial datos_inipotencial=runif(1,0,1)+ (log(edad)/(log(68))/100) + runif(1,0,0.001)*(saldo_vista>5000)+ runif(1,0,0.001)*(saldo_fondos>10000)+ runif(1,0,0.007)*(saldo_ppi>10000)- runif(1,0,0.2) datos_inipvi=as.factor((datos_inipotencial>=quantile(datos_inipotencial, 0.90))*1) # #Empleamos rpart para la realización del modelo # library(rpart) arbol= rpart(as.factor(pvi)~edad+saldo_ppi+saldo_fondos, data=datos_ini,method="anova", control=rpart.control(minsplit=30, cp=0.0008) ) Tenemos un objeto rpart llamado arbol. En este punto necesitamos disponer de las reglas generadas por el modelo para SAS, donde el módulo específico para poder realizar determinados modelos tiene un precio muy alto. Buscando en Google encontraremos este link. En él tenemos una genial función de R list.rules.rpart que nos permite identificar las reglas que ha generado el modelo. Modificamos ligeramente esta función para que nos sirva en nuestros propósitos: ...

10 de junio de 2011 · rvaquerizo

El debate político o como analizar textos con WPS

¿Qué hacen los políticos españoles en el Congreso de los Diputados? Las tertulias radiofónicas están llenas de analístas políticos que podrán opinar sobre la labor del Congreso mejor que yo. Sin embargo yo tengo WPS, sé programar en SAS y en la web del Congreso están todas las sesiones y todas las intervenciones de la democracia. Pues con estos elementos vamos a iniciar un proceso de text mining, aunque no llegaremos a realizar ningún análisis complejo. Para comenzar, como siempre, necesito datos. Me he guardado la sesión del Congreso de los Diputados del día 26/01/2011 como web y posteriormente con Word la he salvado como fichero de texto (ojo con las codificaciones). De todos modos podéis descargaros aquí el fichero. ...

4 de febrero de 2011 · rvaquerizo

Muchas variables no implican una mejor predicción

Me sigo durmiendo con el genio Juan Antonio Cebrián y sus pasajes de la historia, monográficos zona cero o tertulias 4 C. Sus programas de radio me acompañan desde hace muchos años. Estudiando, vigilando instalaciones del ejercito o en el turno de noche de una fábrica Cebrián y su gente ha estado conmigo. En alguna ocasión hablaron del código secreto de la Bíblia, un código existente en la Torá (Pentateuco) que se resume en «todo está escrito».Y es que una gran cantidad de información puede provocar relaciones al azar (o al azahar como le gusta decir a un buen amigo). Y esto puede pasarnos en nuestros modelos matemáticos. Ejecutemos el siguiente código en R: ...

30 de enero de 2011 · rvaquerizo

Trucos Excel. Área bajo la curva ROC

¿Curva ROC y Excel? ¡Si no tiene nada que ver! No del todo. En ocasiones tenemos que pintar las curvas ROC y empleamos las herramientas específicas para ello, sin embargo es habitual que nuestros resultados sean presentados en Excel (demasiado habitual). En ese caso creamos nuestros datos para llevarlos a Excel y realizamos nuestro gráfico. Ya tenemos nuestra tabla y hacemos un algo muy parecido a lo que tenemos más arriba. La curva ROC es un mecanismo para evaluar nuestro modelo y compara la especificidad que es la probabilidad de clasificar mal un caso negativo frente a la sensibilidad que es la probabilidad de clasificar correctamente un caso positivo, es decir, falsos positivos frente a verdaderos positivos. El área bajo la curva ROC será un valor entre 0,5 y 1. Cuanto más próximo a 1 mejor será nuestro modelo. Queda pendiente una revisión «en condiciones» de las curvas ROC y de los gráficos lift , mucho mejores cuando tienes que presentar resultados en un área de negocio. ...

13 de enero de 2011 · rvaquerizo

Medir la importancia de las variables con Random Forest

¿Qué variables son las más importantes para nuestro modelo de clasificación? Yo creo que muchos de vosotros os habréis encontrado con esta problemática. Hay muchas formas de solventarla, habitualmente empleamos aquellas variables que mejor pueden entender nuestras áreas de negocio. Es decir, hacemos segmentaciones en base al sexo y la edad sólo por no tener que explicar como hemos construido una variable artificial a alguien que no entiende lo que es una variable y mucho menos variable artificial. Pero hoy os quería plantear la utilización de métodos de random forest con R para medir la importancia de las variables cuantitativas, para variables cualitativas recomiendo otras formas que plantearé más adelante. El random forest es un método de clasificación basado en la realización de múltiples árboles de decisión sobre muestras de un conjunto de datos. Hacemos muchas clasificaciones con menos variables y menos observaciones y al final nos quedamos con un promedio de estas clasificaciones, esa sería la idea a grandes rasgos. La característica que hace de este método muy interesante es la posibilidad de incluir un gran número de variables input en nuestro modelo ya que no encontraremos relaciones lineales entre ellas y tampoco aparecerán relaciones debidas al azar. ...

8 de enero de 2011 · rvaquerizo

Entrenamiento, validación y test

Cuando realizamos modelos hay 3 conjuntos de datos fundamentales: Conjunto de datos de entrenamiento : son los datos que entrenan los modelos Conjunto de datos de validación : selecciona el mejor de los modelos entrenados Conjunto de datos de test : Nos ofrece el error real cometido con el modelo seleccionado Para entender mejor su importancia y como funcionan he preparado el siguiente esquema/ejemplo: Una empresa de telecomunicaciones de cara a mejorar la efectividad de sus campañas comerciales decide realizar un modelo de propensión a la desconexión. Se define un un universo como los clientes activos a último día de un mes y se determina cuales de ellos han desconectado nuestra línea al mes siguiente. Podría ser recomendable utilizar varias cosechas de clientes para evitar efectos estacionales o campañas agresivas de la competencia. Para el universo seleccionado la tasa de desconexión se sitúa en un 12%. Este universo hemos de dividirlo en 2 partes. La primera de ellas formará el conjunto de datos de entrenamiento y validación y aquí es importante realizar un sobremuestreo estratificado del número de desconexiones para mejorar el entrenamiento del modelo. El estrato será tiene evento VS no tiene evento. En el esquema gráfico aumento la proporción de desconexiones hasta un 50%, no es una proporción imprescindible, si nuestra muestra no nos permite esa proporción algunos expertos con los que he trabajado y yo mismo aseguramos que un 20% de eventos puede ser suficiente; pero si es posible buscaremos el 50-50. En un árbol de decisión (por ejemplo) este sobremuestreo nos identificaría ramas extremas. Una vez definido el conjunto de datos sobremuestreado lo separamos en entrenamiento y validación. Este dinosaurio siempre deja la proporción 70-30… ...

28 de julio de 2010 · rvaquerizo

Gráficos de densidades con SAS y el PROC KDE

El PROC KDE de SAS está incluido en el módulo SAS/STAT. Es un procedimiento que nos permite estudiar gráficamente las distribuciones de variables continuas. Lo que nos produce son gráficos de densidades. Para seguir el ejemplo nos vamos a ir a Yahoo Finance y descargarnos un evolutivo del IBEX de los últimos 3 meses (yo realizo este proceso con Excel), una vez tengamos el dataset creado, para el análisis de la densidad univariante podemos hacer: ...

29 de junio de 2010 · rvaquerizo

Monográfico. Un poco de PROC LOGISTIC

El PROC LOGISTIC es un procedimiento de SAS que nos ha dado muchas satisfacciones a los dinosaurios como el ahora escribiente. La regresión logística es uno de los modelos de regresión más utilizados y es bien conocido por todos mis lectores (bastante más inteligentes que yo). El problema es muy sencillo hemos de clasificar una población dividida en dos partes a partir de unas variables independientes. Su aplicación es muy extensa: patrones de fuga, propensiones a compra, salud, fraude,… Con este monográfico pretendo acercaros en 3 minutos a las sentencias básicas en SAS para crear un modelo de regresión logística y proponer gráficos y validaciones. En la línea habitual del blog partimos de una simulación y analizamos la sintaxis, evitamos poner las salidas para no “cargar” la entrada con tablas de poca utilidad. El ejemplo es el que sigue: ...

24 de junio de 2010 · rvaquerizo