¿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 )-1sqrt(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.
Cuando estudiaba en la primavera del 93 álgebra lineal para mis segundos examénes parciales, tenía en el temario ―que no sé si denominar correctito― dos asuntos a los que nuestra profesora ―y es difícil, ¿eh?, aunque admito que entonces no había internet― no supo sacar punta. Uno era el asunto entero de los valores propios. Recuerdo ahora que me sugerían constantemente la pregunta ¿para qué?
El otro, un pequeño desvío en el temario para tratar un asunto exótico y como metido con el calzador porque, tal vez, habíamos agotado el normal antes del fin del periodo lectivo: el problema de los valores propios generalizados. La pregunta que me obligaban a formularme era todavía más triste que la anterior. Era, simplemente, ¿qué?
Fue un curso árido, una ilación de definiciones, lemas, teoremas y corolarios. Y ejercicios con matrices 4×4 y que requería una no desdeñable capacidad para el cálculo mental: me ayudaron mucho en los exámenes los ejercicios que hacía por la mañana, camino de la universidad: sumar el producto de las dos primeras cifras de las matrículas de los coches al producto de las dos últimas según iban pasando, veloces y en manada, por la avenida.
Menos mal que ―dicen― la universidad ya no es así.
Años después redescubrí el problema de los valores propios generalizados como el posibilitador matemático de la técnica del análisis de la correlación canónica. Y esta como un algoritmo que puede usarse para:
Supongo que entonces, en aquellos años del ya sólo histórico fenómeno de la masificación universitaria, era innecesario anunciar a los futuros matemáticos que con sólo 18 años iban a adquirir herramientas teóricas suficientes para encarar unos problemas tan sugerentes. Quizás hoy ya no tanto.
En cualquier caso, quedan invitados mis lectores a hojear los artículos que enlazo y ver lo lejos que se puede llegar con, de alguna manera, tan poco.
Por ser viernes, traigo a estas páginas un vídeo tan pedagógico como ameno. Es la conferencia de Dick De Veaux dentro la M2010 Data Mining Conference auspiciada por SAS.
El autor repasa los siete pecados capitales de la minería de datos, a saber
No realizar las preguntas adecuadas
No entender el problema correctamente
No prestar suficiente atención a la preparación de los datos
Ignorar lo que no está ahí
Enamorarse de los modelos
Trabajar en solitario
Usar datos malos
Frente a ellas, propone las siguientes virtudes:
Define el problema
Prepara los datos usando conocimiento sobre el campo del que proceden
Mantente dispuesto y preparado para aplicar nuevas ideas y modelos
Ten en cuenta los valores no informados: crea variables derivadas
Trabaja en equipo
Asegúrate de la calidad de los datos
Usa modelos, no únicamente asociaciones
¡Ah! Y que nadie se pierda alrededor del minuto 7:30 el icono que aparece en la esquina inferior izquierda del escritorio del ordenador.
Un procedimiento de detección de clases automáticamente descubrió la distinción entre la leucemia mieloide aguda (AML) y la leucemia linfoblástica aguda (ALL) sin conocimiento previo de las clases. Después se construyó un predictor de clases…
En esencia, los autores tomaron (dicen) unos datos, aplicaron técnicas de clústering y encontraron dos clases. Supongo que validarían el experimento fehacientemente hasta tener cierta seguridad de que, efectivamente, había motivos para creer que los datos estaban escindidos en dos partes claramente diferenciadas. Y, posteriormente, fueron capaces de sustentar dichas diferencias utilizando información externa: efectivamente, los miembros de los grupos respondían a cuadros clínicos distintos.
Incluso en este caso, si los autores no sabían que en sus datos existían dos clases muy distintas, fue por que no preguntaron: la etiqueta se conocía desde el momento de la recopilación de los datos y las diferencias entre la leucemia mieloide y la linfoblástica son tan notorias (para un experto) como las que distinguen el día de la noche.
En todas las demás situaciones en las que he visto utilizar este tipo de métodos la situación ha sido muy distinta. (Salvo en los libros, claro. En los libros hacen trampa. En los libros plantean problemas de laboratorio absolutamente irreales: bidimensionales, con variables sin ningún tipo de problema, con grupos que se ven perfectamente a ojo, etc. ¡Ni los mencionaré en esta serie!)
En todas las demás situaciones de las que tengo noticia, incluso en las que he participado y llevan mi firma, por las que, en algunos casos, y por las que se han pagado decenas de miles de euros, el análisis no ha sido en absoluto riguroso. Quiero subrayar en esta serie de entradas tres características sospechosas que definen este tipo de estudios:
No replicabilidad
Dependencia de las hipótesis de partida y del preprocesamiento de los datos
Falta de rigor a la hora de analizar la validez de las clases obtenidas
En la entrada de hoy trataré la primera de ellas. Las dos preguntas que me sugiere el problema son las que dan título a las dos secciones siguientes de esta entrada.
Si los datos no tienen clases definidas, ¿las encontramos aun así?
Mala será la replicabilidad del método cuando uno es capaz de encontrar clases aun cuando no existen. Tomemos el siguiente pedazo de código, que crea un conjunto de datos con n.obs observaciones en un espacio de dimensión n.dim y busca n.clus clases en él:
¿Encuentra clases? ¿Se parecen a las que se obtienen al crear otro conjunto de datos con exactamente la misma distribución de partida?
Cierto que el paquete cluster proporciona herramientas para verificar hasta qué punto son buenas las clases obtenidas. Pero si habéis trabajado en el negocio, ¿las habéis utilizado alguna vez? ¿Habéis advertido a vuestros superiores (o clientes) de que vuestro clústering es sospechoso? En caso afirmativo, ¿qué os han respondido?
Si los datos tienen clases definidas, ¿las encuentra el algoritmo?
De nuevo, podemos hacer otro experimento con el siguiente trozo de código, que es una versión del anterior.
Esta vez hemos fabricado n.clus clases distintas que serán más o menos distintas en función del parámetro sigma. Aun conociendo de antemano el número de clases en vuestro conjunto de datos, ¿sois capaces de recuperar las clases iniciales? ¿Se parecen en algo los centros de las clases obtenidas a los preespecificados? ¿Cómo de grande tiene que ser sigma para obtener resultados razonables y consistentes? ¿Seríais capaces de deducir el valor del parámetro crítico n.clus si no supiéseis su valor al crear los datos?
Resumen
Los dos experimentos propuestos en esta entrada hacen referencia a dos elemenos de sospecha que me obligan a replantearme ―y entiendo que muchos otros compañeros de faena les ocurrirá igual― la validez de los métodos de clústering tal cual se usan en muchas aplicaciones: los resultados no son repetibles, incluso con los mismos (o una muestra de los mismos) datos.
Los resultados de un estudio de clústering tienen que ser (y temo repetirme):
Replicables bajo condiciones, submuestras e hipótesis diferentes.
Tiene que ser posible encontrar una causa extra-algorítmica del motivo por el que los sujetos se arraciman de esa manera y no de otra.
Y si no hay replicabilidad, si no se cumplen las dos condiciones anteriores, no hay ciencia. A lo más, charlatanismo.
Comienzo hoy una serie de entradas en seis entregas sobre una muy utilizada técnica de análisis de datos de la que soy un profundo detractor. Reconozco que uno de los motivos, aunque menores, de esta postura estriba en que carece de un nombre castizo y reconocido en español. Aunque por ahí gusta agrupación o agrupamiento, yo siempre he preferido arracimamiento: aparte de su valor visual, descarga el término grupo, manifiestamente sobreutilizado en muchos ámbitos.
Aparte de las estrictamente lingüísticas y eufónicas, tengo otros motivos por los que recelar de este tipo de técnicas que espero ir desgranando en las entradas sucesivas. Pero quiero comenzar con el relato de una pesadilla acaecida hace unos años que resume lo que se cuece en las trastiendas de sus valedores.
Trabajaba yo para una consultora especializada, entre otras cosas, en la llamada segmentación de clientes, una práctica de dudosa valía que los departamentos de marketing de determinadas empresas aplican de oficio. Consiste en partir la masa de clientes en determinados grupos (típicamente entre seis y doce) que comparten cierto tipo de características similares.
El quid de la cosa consiste en crear grupos accionables (que es otra manera de decir con interés para la empresa: básicamente, que respondan de una manera más o menos previsible a las acciones de marketing que se realicen sobre ellos), fáciles de describir, homogéneos con respecto a una serie de variables críticas, etc.
La segmentación de clientes no es un puro clústering: exige que los clústers obtenidos satisfagan determinados criterios. Por eso es típico seleccionar variables, transformarlas, remuestrear, modificar las condiciones iniciales de los algoritmos, etc. hasta que ―aquí reside la clave― la segmentación obtenida se acomode a los criterios deseables preestablecidos. ¡No otro es, típicamente, el criterio de bondad!
La pesadilla de la que quiero dar cuenta comenzó un buen día en que mi compañero Julio y yo habíamos acabado nuestra segmentación para una importante empresa española y la habíamos presentado en petit comité con nuestros rutilantes powerpoints. La gran presentación habia de realizarse el día siguiente. El número de clústers, su tamaño aproximado, el nombre de cada uno de ellos, el blablabá marketiniano de por qué su sin par relevancia, etc. estaban ya cincelados en mármol y eran absolutamente inamovibles… hasta que descubirmos un inexcusable error en el cálculo de una de las variables más relevantes. ¡Oh, calamidad!
De las dos opciones obvias (ambas incompatibles con el nocturno reposo) que se nos ocurrieron, descartamos la, posiblemente, más honesta: reconocer el error, rehacerlo todo y asumir las, previsiblemente, acérrimas consecuencias. Conscientes no obstante de que los algoritmos de clústering, dada su dependencia en el muestreo ―no lo hacíamos sobre la población entera de varios millones de clientes sino sobre muestras de varias decenas de miles de ellos― y las condiciones iniciales, son sumamente inestables ―es decir, dos ejecuciones diferentes sobre dos muestras de la misma población pueden dar resultados totalmente distintos― probamos suerte.
Y, voilá, a las tantas de la mañana, a fuerza de muestrear e iterar, obtuvimos una segmentación sobre los datos corregidos que nos plugo: encajaba a la perfección con la descrita de antemano con los datos truchos.
Puede que alguien pueda realizar alegaciones de índole moral a todo esto que aquí confieso. Y que la discusión al respecto puede ser sumamente enriquecedora. No obstante, anuncio interesan más las de tipo técnico, que iré desarrollando en futuras entregas.
En esta entrada de hoy, hija de la pereza, reproduzco un vídeo que el lector puede encontrar igualmente en Medialab Prado. Es una presentación de Javier de la Torre, de Vizzuality, una compañía que trabaja en un campo del que nos hemos venido ocupando en estas páginas: la visualización de la información.
La presentación tuvo lugar el 15 de febrero de 2011 dentro del evento Barcamp: periodismo de datos. Trata sobre Google Refine.
Extraigo de la bitácora de Rob J Hyndman y de una manera que roza el plagio mi entrada de hoy. Recoge diez reglas, diez mandamientos para el análisis de datos (en realidad, para el análisis econométrico, pero pueden trasladarse casi sin cambios al ámbito general) propuestas por Peter Kennedy. Son las siguientes:
Usa el sentido común (y la teoría económica)
Evita el error de tipo III (encontrar la respuesta adecuada a la pregunta incorrecta)
Conoce el contexto
Inspecciona los datos
KISS (Keep It Sensibly Simple)
Asegúrate de que tus resultados tienen sentido
Considera los beneficios y los costes de la minería de datos
Estáte preparado para aceptar soluciones de compromiso
No confundas significancia con relevancia
Acompaña tus resultados de un análisis de la sensibilidad
Los árboles de decisión representan la familia de métodos de minería de datos más empleados. Y no sé si todos mis lectores están al tanto de sus orígenes. La verdad es que ya escribí al respecto, hace tiempo, cuando hacía mis primeros pinitos en el mundo de las bitácoras y escribía en la de Raúl Vaquerizo. Entonces publiqué una entrada sobre la historia de CART y rpart de su implementación en R.
Ahora voy a dejar que sea el mismo Leo Breiman quién explique cómo nació la feliz idea que dio lugar al algoritmo.
Hace unos días se publicaron los resultado de la cuarta encuesta anual de minería de datos realizada por Rexer Analytics en la que 735 participantes de 60 países completaron sus 50 preguntas. Los hechos más relevantes que contiene son:
La principal aplicación de la minería de datos (siempre pienso que desgraciadamente) es en el campo de la gestión (o inteligencia) de clientes, lo que por ahí denominan CRM.
Los algoritmos más usados por los encuestados han sido árboles de decisión, regresión y análisis de conglomerados.
En cuanto a las herramientas, la más utilizada es R. El 43% de los encuestados afirmaron haberlo usado. Sin embargo, como herramienta básica de trabajo, la más usada parece ser STATISTICA, usada por un 18% de los encuestados. Las herramientas mejor valoradas fueron STATISTICA, IBM SPSS Modeller y R.
La mayor parte del análisis siguie realizándose en ordenadores personales, con los datos almacenados en local. Lo mismo ocurre a la hora de realizar el scoring. Los usuarios que más utilizan PMML son quienes emplean STATISTICA.
CITRIS (Center for Information Technology Research in the Interest of Society) está subiendo a su canal de Youtube los vídeos de las clases de un curso de minería de datos impartidos por el profesor Ram Akella en la Universidad de Berkeley.