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

Trucos R. La función mod para R

Buscando algunas cosas sobre R, he encontrado esta función que hice hace mucho tiempo. De hecho, puedo decir que es de las primeras que hice, allá por 2001 (creo), cuando empecé a conocer esto de R. Por aquel entonces aseguré que el futuro pasaba por R y, nueve años después, sigo diciendo lo mismo; el tiempo me dará la razón; lo que no me imaginaba es que hiciera falta tanto tiempo. En fin, historias del dinosaurio. ...

27 de julio de 2010 · rvaquerizo

Gráficos dinámicos en R con la función text

En graphics tenemos la función text y hoy nos vamos a divertir con esta función. Simplemente lo que hace es poner un texto en un gráfico. Lo más sencillo: # Gráfico sin nada plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE) # Ponemos un texto en el centro text(10, 10, "Ejemplo de uso de text") En un gráfico sin nada escribimos; sólo indicamos la posición y el texto a escribir. Vamos añadiendo opciones: # Gráfico sin nada plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE) # Ponemos un texto en el centro text(10, 10, "Ejemplo de uso de text", srt = 45, col = 1, cex = 3, vfont = c("sans serif", "plain")) Ahora modificamos la inclinación del texto con srt, el color, el tamaño y con vfont la fuente. Podemos jugar con los colores del texto realizando un bucle for: ...

22 de julio de 2010 · rvaquerizo

Laboratorio de código SAS. Vistas + PROC MEANS vs. PROC SQL

Las vistas son muy importantes cuando trabajamos con SAS. El problema del espacio in disco se acentúa cuando trabajamos con SAS; este problema podemos minimizarlo empleando vistas. También hay otras situaciones en las que se recomienda usar vistas: cuando realizamos agregaciones sobre campos de una tabla y, a la vez, realizamos una operación sobre estos campos, es muy habitual emplear el PROC SQL. Ejemplo de lo que cuento: data importes; do idcliente = 1 to 2000000; importe = ranuni(34) * 1000; output; end; run; * FORMA 1: SQL; proc sql; select var(sqrt(importe)), var(importe) from importes; quit; Sobre una tabla con 2.000.000 de registros, hacemos la varianza de un campo importe y de la raíz cuadrada de ese mismo campo importe. Es decir, hacemos la varianza sobre la operación aritmética de un campo. Para hacer este trabajo con PROC MEANS sin tener que crear un nuevo campo en la tabla, haríamos una vista y un MEANS posteriormente: ...

19 de julio de 2010 · rvaquerizo

Monográfico. Funciones INTNX e INTCK para fechas en SAS

Las funciones INTNX e INTCK de SAS atraen muchas visitas a esta web. Aunque ya hay algún mensaje en el que muestro cómo funcionan, creo que algunos trabajadores me agradecerán este monográfico. INTNX e INTCK son funciones para trabajar con fechas en SAS. INTNX sirve para trabajar con periodos, por lo que el resultado que ofrece será una fecha; e INTCK sirve para trabajar con intervalos, por lo que el resultado que nos ofrece será un número entero. Ésta es la premisa fundamental. Entonces: ...

6 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

Trucos SAS. Envío de email con DATA

Si deseamos enviar un email con SAS, hemos de realizar un proceso similar al que os presento a continuación. Es una duda que me ha llegado a través de correo electrónico; la resolución la comparto con todos por si vuelve a surgir. No quiero plantear macros complicadas ni parametrizaciones “extrañas”. Esto se hace a través de FILENAME EMAIL: filename outbox email "rvaquerizo@analisisydecision.es"; data _null_; file outbox to=("rvaquerizo@analisisydecision.es") cc=("rvaquerizo@analisisydecision.es") subject="Prueba" attach="c:\temp\borra.sas"; * CUERPO DEL MENSAJE; put "Este es un mensaje automático."; put " "; put " "; run; En outbox ponemos el correo de salida; después hacemos un DATA _NULL_ que escribe en el buzón de salida; en TO ponemos los destinatarios entrecomillados; en CC las copias; en SUBJECT ya sabéis, y en ATTACH también. Después, si queremos escribir en el cuerpo del mensaje, empleamos PUT. ...

28 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

Truco R. Insertar imagen en un gráfico

Quería pintaros mi estimación sobre el mundial de Sudáfrica con R. La he hecho con el corazón más que con la cabeza. Es evidente que no será así. Esta estimación la pinto utilizando dos paquetes de R más que interesantes. El rimage no está en CRAN; es una cosa muy rara, un paquete propietario pero que tiene la función read.jpeg que permite crear objetos de imagen en R. El otro paquete interesante es TeachingDemos, que nos permite añadir imágenes a los gráficos de R; me acerqué a él cuando esta web tenía un logo; ahora ya no lo tiene. También me parece que puede ser de utilidad la función download.file. ...

22 de junio de 2010 · rvaquerizo

Trucos R. Conectar a internet por el puerto 8080

Con R hay veces que no podemos acceder a internet desde nuestro trabajo. Esto es porque el puerto 80 suele estar cerrado por motivos de seguridad. Sin embargo, el puerto 8080 es más habitual dejarlo abierto. Para conectar R con internet y facilitar la descarga de paquetes, la conexión con Yahoo Finance, Bloomberg… podemos hacer lo siguiente: buscar el Rgui.exe en nuestro equipo y, a la hora de ejecutarlo, poner la opción --internet2. Con ello hacemos que R se conecte a internet con el puerto 8080. Por ejemplo, en Windows sería: ...

22 de junio de 2010 · rvaquerizo