Datanalytics

Archivo

Entradas Etiquetadas ‘minería de datos’

Limpieza de cartera y miscelánea de artículos

Miércoles, 25 de enero de 2012 Sin comentarios

He decidido limpiar mi cartera. Llevo en ella unos cuantos artículos impresos que me acompañan desde hace mucho y que, por un lado, me da pena tirar y, por el otro, no me aportan en el día a día. Voy a reciclar el papel sobre el que los imprimí y, a la vez, dejar en enlace a ellos por si a mí un día (o a alguno de mis lectores otro) me da por volver sobre ellos. Son:

Localidad, globalidad y maldición de la dimensionalidad

Viernes, 13 de enero de 2012 2 comentarios

Escribo hoy al hilo de una pregunta de la lista de correo de quienes estamos leyendo The elements of statistical learning.

Hace referencia a la discusión del capítulo 2 del libro anterior en el que trata:

  • El compromiso (trade off) entre el sesgo y la varianza de los modelos predictivos.
  • Cómo los modelos locales (como los k-vecinos) tienden a tener poco sesgo y mucha varianza.
  • Cómo los modelos globales (como los de regresión) tienden a tener poca varianza y mucho sesgo.
  • Cómo la maldición de la dimensionalidad afecta muy seriamente a los modelos locales y mucho menos a los globales.

Y voy a tratar de ilustrar esos conceptos con un ejemplo extraído de mi experiencia de consultor.

Trabajé un otoño-invierno en un banco que quería precedir la propensión de sus clientes a adquirir nosequé producto. Nuestros lumbreras de turno pergeñaron un procedimiento —nosotros, en eso, éramos unos mandaos— que consistía en lo siguiente:

  1. Seleccionar unas cuantas variables altamente predictivas.
  2. Partirlas en 2, 3 o 4 tramos.
  3. Asignar a los clientes —unos dos millones— a la casilla (determinada por los tramos de las variables) que les correspondía.
  4. Deducir las propensiones de los clientes de cada casilla, esencialmente, a partir de los de una muestra de unos cuantos miles de clientes seleccionados —aproximadamente— mediante un muestreo estratificado por celda a los que se hacía una especie, digamos, de encuesta.

Si hay pocas variables, hay pocas celdas y a cada una le corresponden muchos casos de muestra. Pero si se quieren utilizar muchas variables, el número de casos por celda comienza a descender. Y en ocasiones, como nos sucedía, había celdas vacías: no existía ninguna clienta de edad avanzada con residencia en municipios de menos de 5000 habitantes, etc.

El problema es el mismo que el plantea el libro bajo el epígrafe de maldición de la dimensionalidad, aunque bajo una óptica algo distinta.

Nuestro modelo de predicción era bastante local. Imaginemos —aunque no era exactamente así—, que predecimos la propensión de los clientes de una celda como la media de la de los seleccionados en dicha celda. Nos podemos preguntar:

  • ¿Qué pasa si en una determinada celda sólo hay un (por ejemplo) cliente seleccionado?
  • ¿Hasta qué punto es fiable extrapolar a una casilla entera las propensiones de, únicamente, doña Juana y doña Miguela?

Las predicciones de cada casilla —una especie de modelo local—, por el hecho de responder a muy pocos sujetos —efecto de la maldición de la dimensionalidad— son muy inestables.

Si el año siguiente se hubiese repetido el estudio —¿lo habrán repetido realmente?— en cada casilla eligirían, probablemente, representantes distintos y, muy probablemente también, variarían mucho los resultados.

Si por un lado el proceso se repitiese año tras año, durante muchos, muchos años obteniéndose la serie de propensiones estimadas p_i y, por el otro, Dios bajase de los cielos y revelase el valor verdadero, p de la propensión en una casilla determinada, entonces podríamos calcular

 \frac{1}{n} \sum \left(p_i -p \right)^2 = \frac{1}{n} \sum \left(p_i - \frac{1}{n} \sum p_i \right)^2 + \left(\frac{1}{n} \sum p_i - p \right)^2

El segundo término representa el sesgo de la predicción en la casilla, la diferencia entre la predicción media (sobre muestras distintas) y el valor verdadero del parámetro. Y podemos conceder que, si el número de años es suficientemente alto, podría considerarse próximo a cero. Y el primero correspondería a la variabilidad de las predicciones entre los distintos años que, de acuerdo con la discusión anterior, sería elevado. Precisamente porque, debido a la maldición de la dimensionalidad, las predicciones están basadas en muy pocos sujetos.

Pero imaginemos que en lugar de utilizar el esquema anterior nos hubiésemos decantado por un modelo de regresión logística basado en unos cuantos cientos o miles de sujetos. Y que cada año, como en la situación anterior, se repitiese el análisis. Seguramente, los coeficientes del modelo no variarían sustancialmente de año en año pero que el error de predicción en algunos subconjuntos de sujetos singulares —piénsese en las celdas de la discusión anterior— estuviese desviado, igualmente desviado, todos los años. Por lo que cabría esperar muy poca variación interanual pero mucho sesgo.

¿Qué es preferible? ¿Cómo pueden mitigarse estos problemas? Pues, primero, siendo conscientes de que existen. Y segundo, leyendo el libro, sea con nuestros 22 voluntarios o por cuenta propia.

Comienza la lectura de “The Elements of Statistical Learning”

Lunes, 9 de enero de 2012 2 comentarios

Mediante la presente, notifico a los interesados en la lectura de “The Elements of Statistical Learning” que esta semana tenemos que dar cuenta de los capítulos 1 (que es una introducción muy ligera) y 2 (donde comienza el tomate realmente).

Esta noche Juanjo Gibaja y yo estudiaremos la mecánica de lectura en común.

Los interesados pueden escribirme a cgb@datanalytics.com para, de momento, crear una lista de correo.

Minería de datos: estado de la profesión y tendencias

Miércoles, 4 de enero de 2012 Sin comentarios

Supongo que muchos de los lectores de esta bitácora conocerán ya el enlace que les presento. El resto encontrarán, seguro, de interés el resumen que Gregory Piatetsky-Shapiro, editor de KDNuggets, hizo del estado de la profesión en la conferencia SuperData Summit en San Diego el pasado año.

Para acceder a las diapositivas, pínchese sobre la imagen siguiente:

¿Nos leemos “The Elements of Statistical Learning” de tapa a tapa?

Viernes, 23 de diciembre de 2011 18 comentarios

Propone Juan José Gibaja como propósito intelectual para el año nuevo el leer The Elements of Statistical Learning —libro que puede descargarse gratuita y legalmente del enlace anterior— de tapa a tapa, en grupo y a razón de capítulo por semana.

La idea es hacerlo en común, enlazando el contenido del libro con código —sea disponible o de nuevo cuño cuando la situación lo requiera— y haciendo públicos las ideas que resulten de esta lectura en una red de bitácoras (a la que esta pertenecería).

Y la pregunta es… ¿alguno de mis lectores se suma?

Categories: minería de datos, r Tags: , ,

¿La correlación “del siglo XXI”?

Lunes, 19 de diciembre de 2011 3 comentarios

Bajo el título Detecting Novel Associations in Large Data Sets se ha publicado recientemente en Science un coeficiente alternativo a la correlación de toda la vida para cuantificar la relación funcional entre dos variables.

El artículo (que no he podido leer: si alguien me pudiera pasar el pdf…) ha tenido cierto impacto, al menos momentáneo, en la red. Puede leerse un resumen en esta entrada u otro bastante más cauto en la de A. Gelman. Existe información adicional (e incluso código en R) en esta página.

Las dos ideas motivadoras de este método son:

  • Generalidad: poder detectar cualquier tipo de relación funcional entre dos variables, no únicamente relaciones lineales (como el coeficiente de correlación).
  • Homegeneidad: el estadístico debería ser similar cuando se comparen configuraciones con una relación funcional distinta paro un nivel de ruido análogo (véase la figura adjunta).

En muchos contextos, el análisis de un conjunto de datos comienza por el estudio de una matriz de correlaciones entre variables tal como

que resalta la relaciones de dependencia lineal entre conjuntos amplios de variables. Con el aporte de este nuevo artículo, tal vez podrían identificarse otro tipo de relaciones funcionales igualmente interesantes. Con tiempo, le echo un vistazo.

DataWrangler: limpieza y transformación interactiva de datos

Martes, 11 de octubre de 2011 Sin comentarios

Quiero dar a conocer hoy una alternativa a Google Refine de la que he tenido noticia no hace mucho: DataWrangler.

Se trata de una herramienta concebida para acelerar el proceso de manipulación de datos para crear tablas que exportar luego a Excel, R, etc.

Los interesados pueden echarle un vistazo al artículo que escribieron sus autores, Wrangler: Interactive Visual Specification of Data Transformation Scripts y, cómo no, usarlo.

Predicciones a toro pasado y el perro que no ladró

Jueves, 29 de septiembre de 2011 Sin comentarios

Es fácil predecir a toro pasado. Casi tan fácil que asestarle una gran lanzada al moro muerto (el refranero es así de incorrecto políticamente, lo siento).

Esas son las ideas que me sugirieron fundamentalmente la lectura del un tanto hagiográfico Superordenadores para ‘predecir’ revoluciones y del artículo al que se refería, Culturomics 2.0: Forecasting large-scale human behavior using news media tone in time and space.

El artículo nos explica cómo utilizando resúmenes de noticias de diversas fuentes era posible haber predicho las revoluciones de Egipto, Túnez y Libia. Y, casi, casi, cómo haber encontrado a Bin Laden.

Pero como en aquel episodio de Sherlock Holmes en el que el perro no ladró, la pieza fundamental no es lo que se cuenta sino lo que se calla: ¿qué otras revoluciones se predijeron erróneamente? ¿Qué de los falsos positivos? ¿No habremos redescubierto una suerte de Nostradamus de silicio?

Merece también la pena echar un vistazo al mapa de civilizaciones que revela el dispositivo:

¿Son Francia y Suráfrica parte de la misma civilización? ¿Y Suiza y Afganistán? ¿Y Canadá está más próximo a Marruecos o Irán que a EE.UU.? ¿Y qué tendrán que ver Noruega y Marruecos?

En fin, que la cosa está aún verde, verde, verde y que, en tanto,… cantos de sirena.

SVD de matrices enormes con R

Viernes, 5 de agosto de 2011 1 comentario

Supongo que mis lectores habrán leído acerca del Netfix Prize. En el vídeo de este viernes se ilustra cómo se puede R para implementar la parte más computacionalmente intensiva de la solución ganadora utilizando el paquete irlba, la descomposición de la matriz de datos en sus componentes singulares (más propiamente, obtener algunas de ellas).

Clústering (III): sobresimplificación

Miércoles, 3 de agosto de 2011 5 comentarios

¿Quién fue el segundo hombre en pisar la luna? ¿Y el tercero? Aunque a veces pareciese lo contrario, ¿sabe que hay futbolistas que no son ni Ronaldo ni Messi? ¿Y otros ciclistas además de Contador e Induráin? ¿Y que la Fórmula 1 no se reduce a un tal Alonso?

Diríase que por razones sicológicas, nuestro cerebro tiende a sobresimplificar, se siente cómodo con una representación escueta de la realidad, es reacio a los distingos y grises. Le pirran las etiquetas: dígame de qué partido político es Vd. y enseguida crearé mis propias certezas sobre su opinión acerca de la Guerra de Irak, la visita del Papa a Madrid y el bikini de Leire Pajín.

En esa tendencia a etiquetar y sobresimplificar se basa gran parte del éxito de las técnicas de clústering. Así, cuando a Quetelet le bastaba un único homme moyen hace casi doscientos años, nuestros estadísticos de hoy parecen encantados con media doceneja.

Pero Quetelet, en el fondo, estaba interesado en aquellas desviaciones de los individuos con respecto a su ideal homme moyen: si Quetelet estableció el índice de masa corporal no fue tanto para caracterizar las características antropométricas de su hombre medio sino para poder mejor detectar y cuantificar las desviaciones, tanto por exceso como por defecto, en individuos reales. Hoy en día estas distinciones les resultan odiosas. Al fin y al cabo, no es lo que los clientes de nuestros consultores quieren oír.

¿Prueba de lo anterior? Tómese cualquier presentación comercial/profesional en la que se describan los resultados de un análisis de este tipo. ¿Cómo se describen los clústers? Medias. Se resumen en listas de enunciados del tipo: la media de la variable X en el grupo Y es Z. A lo más, ofrecen una comparación entre la media de una variable dada en un grupo determinado y la media global de la población entera.

Traté en tiempos, cuando trabajaba en una consultora, de crear algún tipo de procedimiento honesto para visualizar clústers. Mi propuesta —manifiestamente perfectible por otro lado— quedó totalmente eclipsada por la de un colega que decidió que bastaba (y era cool) representar las medias de todos los grupos en un gráfico de araña con tantos radios como variables en el que cada clúster venía representado por un color distinto. ¡Nunca antes había visto la necesidad de usar la lupa —existe, ¿eh?— de Windows! Pero era un gráfico que escondía los indicios de sospecha y evitaba de antemano todo tipo de preguntas odiosas por parte de los clientes.

Pero, ¿y la variabilidad dentro de cada clúster? ¿Algún comentario sobre las zonas grises? ¿Cuáles son las observaciones que pertenecen al clúster A y no al B por un pelín de gato?

Hemos visto en una entrada anterior que los centros (o centroides) de los clústers son, habitualmente, irreproducibles. Que es decir poco menos que arbitrarios. Además, la asignación de los sujetos a cada uno de ellos, bien mirada, también es cuestionable.

El siguiente código —y supongo que las mejoras que a él realicen los lectores— permite cuantificar una serie de aspectos que uno nunca verá planteados ni en libros de investigación de mercados ni en los caveats de las consultoras. Permite ver cómo la distancia entre los sujetos de los grupos y sus centros crece al aumentar el número de variables. Es decir, cuantas más variables se utilicen para realizar un análisis clúster, mayor será la diferencia o distancia entre un sujeto y el individuo prototípico que lo representa.

av.dist <- function( n.dim, n.iter ){
       a <- b <- rep( 0, n.dim )
       a[1] <- 0.5
       b[1] <- -0.5
 
       calcular.distancias <- function( ){
               x <- 2 * runif( n.dim ) - 1
               sqrt( c( sum( ( x - a )^2 ), sum( x - b )^2 ) )
       }
 
       distancias <- replicate( n.iter, calcular.distancias() )
}
 
foo <- function( n.dim ){
       tmp <- av.dist( n.dim, 1000 )
       median( pmin( tmp[,1], tmp[,2] ) )
}
 
foo( 2 )
 
foo( 20 )
 
res <- sapply( 1:100, foo )

Queda como ejercicio para mis lectores estimar el tamaño —en proporción del número total de sujetos— que quedan en la zona gris entre ambos centroides según aumenta el número de dimensiones.

En resumen, el éxito del llamado análisis clúster responde en muchos casos y aplicaciones a una inercia sicológica que empuja al ser humano a la sobresimplificación. Dejada aparte la irreproducibilidad, sus efectos distorsionadores aumentan con el número de variables. Y, finalmente, muchos profesionales que aplican este tipo de estudios hacen dejación de sus responsabilidades —o las ignoran— cuando soslayan la variabilidad de los sujetos alrededor de sus prototipos y pasan or encima del problema que suponen las zonas grises.

Y la semana que viene, más.