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 y un 1% son fraudulentas. Si realizo un modelo sin tratar este desequilibrio, el algoritmo puede estar seguro al 99% de que todas las compras son correctas, ignorando el fraude. 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 Base. 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 el ejemplo paso a paso: ...

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 esta bitácora con ligeras modificaciones: # Inventamos un objeto para realizar el modelo # En una cartera de clientes nuestro modelo tiene que identificar # cuáles 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_ini$saldo_ppi = (edad <= 68) * datos_ini$saldo_ppi # Creamos la variable objetivo a partir de un potencial datos_ini$potencial = runif(clientes, 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_ini$pvi = as.factor((datos_ini$potencial >= quantile(datos_ini$potencial, 0.90)) * 1) # Empleamos rpart para la realización del modelo library(rpart) arbol = rpart(pvi ~ edad + saldo_ppi + saldo_fondos, data = datos_ini, method = "class", 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 para 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 analistas 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 ejército o en el turno de noche de una fábrica, Cebrián y su gente han estado conmigo. En alguna ocasión hablaron del código secreto de la Biblia, 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 algo muy parecido a lo que tenemos más arriba. ...

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 cómo 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 cómo 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 universo como los clientes activos al último día de un mes y se determina cuáles 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 tres 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. 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 de compra, salud, fraude… ...

24 de junio de 2010 · rvaquerizo