Data Mining

Los mejores y más útiles trucos de R

Como estamos medio de fiesta y da pareza poner en funcionamiento los engranajes del cerebro para producir ideas originales, me limitaré a apuntar un enlace en el que los usuarios han propuesto y votado sus mejores trucos de R.

Para los más perezosos, indicaré que el campeón ha sido la función str().

Y para los menos perezosos, aparecen en la lista métodos para acceder y manipular datos alojados en GoogleDocs directamente.

Ibercivis, una plataforma de computación ciudadana

Creo que es hecho conocido que existe el proyecto SETI@home, una red de ordenadores que ceden voluntarios para analizar nosequé tipo de datos para la nosequé clase de esotéricos fines. Nunca me interesó el asunto en sí, aunque sí la plataforma.

Más que el ser capaces de robarle el wifi a un marciano, el subproducto más intersante del proyecto ha sido BOINC, la plataforma de software que permite distribuir trabajos intensivos en uso de recursos computacionales a través de una red de ordenadores. Eso ha permitido la emergencia de un buen número de proyectos que lo usufructan para fines más tangibles (aunque no universalmente más útiles).

Tres fracasos y medio con R

Hoy, mientras Raúl departía en el cuarto de al lado —él os dirá por qué y para qué— y hacía tiempo para saludarlo, me he entretenido fracasando tres veces y media en lo que abajo desarrollo. No pensaba publicarlo hasta que, reflexionando, he considerado que, a veces, más útil es una buena pregunta que algunas certezas. Inconcluso —o fracasado— puede no significar inútil o imperfecto.

Veamos en qué han consistido mis fraccionarios fracasos.

Una fabulilla (sobre PRIM) con múltiples moralejas

–Érase una vez un banco…
–¿Me cuenta Vd. un cuento?
–Mismamente, señora.
–¿Quiérese, pues, decir que cuanto Vd. relate es pura ficción, no pareciéndose ni las personas (físicas o jurídicas) ni los lances de su aún inaudita historia a personas (físicas o jurídicas, respectivamente) y lances reales, casualidades éstas que pudieran derivar, según la naturaleza de su exposición, en responsabilidades legales, políticas o de otra imprevisible índole y gravedad?
–Considere para la totalidad de los efectos mi respuesta afirmativa a su más que retórica pregunta, un, como gusta decir a los eruditos en la materia, solemnísimo disclaimer.
–Prosiga entonces, que lo escucho con asombrado interés.
–Con su venia, señora. Érase pues un banco…
–¿Banco, caja de ahorros o sucursal de una entidad de crédito foránea?
–No entre en distingos, señora, que me echa a perder el disclaimer. Digamos que banco y sigamos adelante.
–Ea pues… y disculpe.
–Tal banco (aunque, para el caso, bien pudiera haber sido una caja de ahorros o, como bien puntualizaba, la sucursal de una entidad de crédito extranjera) tenía clientes que usaban tarjetas de crédito y débito para sus habituales fines. Cada que la usaban para comprar en un comercio o similar, la tal entidad se quedaba un cacho. Pero cuando sacaban con ella dinero de un cajero, la entidad debía abonar un pico.
–¿Y no cobraban las tan habituales comisiones?
–No, dado que sus fines eran benéficos para con sus depositantes.
–Permítame, si no le importa, anotar en mi PDA (o papel de apuntar) esto que me participa como ejemplo sin parangón de oxímoron.
–Tómese su tiempo y guárdelo en el sostén, que ahí quedará calentito, al socaire de las inclemencias del invierno mesetario y no se le traspapelará.
–Mullidamente archivado queda. Prosiga.
–Pues la tal benéfica institución financiera (me complazco, como ve, en reiterar la tan atinadamente identificada figura literaria) no sólo quería ganarse el cielo al que aspiran, cuando fenecen, las personas jurídicas sino que, además, no siendo tonta, quería retrasar el tránsito hasta el ulterioriorísimo de los anaqueles.
–Para lo que, sospecho, hay que facturar pasta gansa.
–No se le escapa una, señora. Efectivamente, a facturar y no ser facturada aspiraba.
–Como las no tan benéficas, ¿verdad?
–Como tales, mas con una no pequeña salvedad. En lugar de azuzar (incentivar, dicen ahora los pedagogos de nueva generación) a sus clientes mediante la introducción de siempre jugosas comisiones para que desdeñasen los cajeros, quisieron proceder de otra manera.
–Me intriga Vd. Soy toda orejas. ¿Qué novedoso plan urdieron?
–Pues plantearon el cultivar de alguna manera esas inercias a las que tan dados somos los homínidos superiores cuando menos gala hacemos de nuestro manido epíteto de racionales. No sé si me explico o si, por lo contrario, he dejado los conceptos como colgando y revoloteando en el sutil aire.
–Muy bien no se explica, pero le adivino la intención: zanahoria y no palo. ¿Es así?
–Equilicuá.
–Y eso, ¿cómo se hace?
–Hay maneras.
–¿Cuáles?
–Ahí llegaremos. Lo relevante del punto es que no las conocían.
–¿Entonces?
–Llamaron por teléfono.
–Ay, Dios mío, esto se acelera: abandonamos el planteamiento, nos adentramos precipitadamente en el nudo y preveo un galopante desenlace no apto para cardíacos y epilépticos (tales como mi difunto).
–Tranquilícese, señora, que no le va en ello el pan y hágase cargo que me escucha por falta de otro más simpático entretenimiento.
–¿A quién llamaron? ¡Dígame sin asomo de demora!
–A unos señores que entraron en el mundo de la consultoría como el uno y el dos en el país de los ceros.
–¿Para medrar y hacer dinero?
–Bien conoce Vd. el fabulario español.
–Aquí donde me ve, cursé bachillerato con aplicación y provecho.
–Eso la honra: quedan ya pocas como Vd.
–Y, dígame, ¿se parecían más al uno o al dos?
–En su estilo y, salvando las distancias, eran pura raíz de cuatro.
–Me hago cargo. ¿Y qué hicieron?
–No se lo puedo contar.
–¿Me va a dejar así, toda ganosa?
–Si me deja sobarle la PDA, puede.
–¿En la Renfe y cabe impúberes? No hay trato.
–¿Ve?
–¿Entonces?
–Le hablaré de PRIM.
–¿El de Reus?
–No, ése es Prim. Fíjese que yo he usado mayúsculas por doquier.
–Ya decía yo. Ya nadie se acuerda del general.
–Es que metió a los borbones en el tren de Irún.
–¡Falta aún hacen gentes de su temple y calibre!
–¿Sabe, ya que lo menciona, que tiene calle en el DF?
–¿Donde las putillas?
–¿Putillas? Verdaderos putones verbeneros. Pero, eso sí, aseadas: se asperjan el chumino con ladillol. Y algo de inglés hablan.
–Es de ley, teniendo la embajada de los Estados Unidos de Norteamérica a tiro de piedra.
–¿Conoce Vd.? Me sorprende.
–¡Mundo tuve! Atropellaron tanto gringo rijoso cruzando Reforma que tuvieron que poner un semáforo.
–Nos aleja tanto circunloquio del meollo de nuestra conversa. Déjeme hablarle de PRIM con mayúsculas por doquier, que del otro ya se ocuparon a trabucazos y no hay remedio.
–Siga pues. ¿Quién es ese otro PRIM?
–No es un quién sino un cómo. PRIM quiere decir Patient Rule Induction Method
–Madre mía, ¡en inglés y !
–Es que nació a medio camino de Stanford, que fue México y ahora no, y Australia. Y algún nombre había que ponerle.
–¿Y cuál es su naturaleza o condición?
–Pues verá: se trata de un algoritmo (palabra de origen árabe, para que luego digan y maldigan) de minería de datos que permite encontrar zonas del espacio muestral donde una variable objetivo tiene un comportamiento singular y sobresaliente respecto a la media.
–Su cuento está cada vez menos claro y tendrá que dignarse a ofrecerme un ejemplo meridiano.
–Para eso comencé mi historia hablándole de bancos y tarjetas. Digamos que tal banco tiene x clientes y asociadas a cada uno de ellos, tropecientasmil variables (edad, ingresos anuales, dirección, cuotas satisfechas a la Real Asociación Colombófila de la Alpujarra, etc.). Por otro lado, una variable que mide en qué grado usa, por decir algo, su tarjeta de crédito…
–Lo sigo con más interés que aprovechamiento y más perplejidad que ninguna de las anteriores…
–Pues verá, mete todas esas variables a un ordenador, así, tal cual, sin mayores contemplaciones, pulsa el pley , se toma unas cañas, regresa… ¿y qué se encuentra?
–¡Ay, qué emoción…! ¿Qué? Dígamelo, que me reconcome la intriga…
–Pues se encuentra unos hiperrrectangulillos.
–¡Nunca lo hubiese imaginado! ¿De qué pasta y hechura son los tales?
–No tienen pasta ni hechura: los hiperrectangulillos son, hablando de manera más vecina al común entender, grupos de clientes que, por una parte, son similares respecto a ciertas variables descriptivas y, por la otra, tienen un comportamiento homogéneo en cuanto a la medida objetivo, siendo ésta, a su vez, muy distinta de la media.
–Sigo sin verlo claro.
–A ver, imagine que la tal variable objetivo es el ratio o cociente entre el dinero que sacan los clientes de los cajeros y la suma de sus compras con tarjeta…
–Eh…
–Es decir, pintamos una rayica (que significa dividir), ponemos arriba la plata del cajero y abajo lo que paga con la tarjetica. Y nos fijamos en si pesa más lo de arriba que lo de abajo.
–Claro, ahora me apercibo: lo de arriba son liabilitis y lo de abajo, asets
–¡Me sorprende Vd.! Gasta un spanglish tan cacofónico como impreciso. ¡Y sin saber de lo que habla, como si fuese toda una consultora yunior con ambiciones!
Desespabilada que es una. Y sin hacer la mili, ¡fíjese!
–No es enteramente así, pero como si lo fuese. En resumen, si el cocientico es alto, el cliente es un pesado que le hace agujeros al banco (o caja de ahorros…). Si es bajo, lo contrario; y al cliente habría que darle besos en la frente.
–Cargo me hago.
–Entonces, un hiperrectangulillo contiene, pongamos por caso, a clientes de lo que otrora fue el Reino de Aragón, que ganan menos de 100.000 pesetillas al mes, que viven en casa alquilada y no tienen churrumbeles. Y resulta que éstos son, de entre los pesados, los que más.
–¡Menuda cuadrilla! Seguro que Botín los ponía tiesos a comisiones.
–Puf, ése (note que acentúo según la gramática vieja) les mandaba los sicilianos a casa…
–Bueno, ¿y qué hace un banco (o caja…) benéfico con tal hiperrectangulillo?
–Vaya por orden y no queme etapas en falso, que el diablo se nutre de ambigüedades: los consultores dan al pley , sacan los rectangulillos, los imprimen en cuartillas, clavan éstas con chinchetas en una corchera y luego, en peticomité , junto con los resabidillos del banco acuerdan qué hacer con los sujetos que contiene cada uno.
–¡A los mañicos de su ejemplo les podían rifar unos botes de malocotón en almíbar si usaban menos el cajero!
–Ahí tiene Vd. toda la razón del mundo y me quita las palabras de la boca y las ideas de las intrincadas convoluciones frontales de mi cerebro. Pero bueno, tampoco me enfado con Vd. porque con lo que iba a ilustrarla es todo viejo y reconocido de casi todos: conoce, primero, a tus clientes (y ayúdate de PRIM para tal fin) y, después, mira a ver qué haces con ellos (la rifa de los que Vd. llama malocotones es una estupenda idea propia de un avezado mercadólogo).
–¿No me diga que en la tal entindad bancaria (o…) no procedieron de tal guisa?
–Podría decirle si no fuese porque Cide Hamete Benengelí, de cuyos desorganizados papeles aprendí el cuentecillo que le relato, llegado al punto que contestaba su pregunta, derramó café sobre el legajo y se corrió la tinta. Es como si yo le contestase con la boca llena de polvorones: oiría ruido, se le llenaría el escote de migas, pero no se enteraría de nada. Además, gana Vd. con eso que, de confesarle la verdad, luego habría de matarla para que no divulgase el secreto.
–Mejor, pues, permanecer sumida en la contumaz ignorancia. Pero, dígame, eso de PRIM, siendo cosa tan fina, ¿cómo es que no se conoce más y mejor y se aplica con más diligencia y oportunidad? ¿Es acaso una de esas teorías…?
–¿Teoría? Es teoría y praxis, señora. Una praxis la mar de práctica. Tanto que puede descargársela a su computadora sin aflojar un ochavo.
–Y usarse, ¿se usa?
–¡Y tanto! Allá en París…
–¡Tierra de masones! No me vale ejemplo alguno allende los Pirineos. ¡En París! Lo que no es tradición…
–Pues sí, señora, sí, en París hay una empresa que gana dinero a espuertas con una variante de PRIM.
–Y Vd. que parece tan gabachuzo, ¿por qué no se va con viento fresco a trabajar con ellos?
–No me tiente, señora, no me tiente ni me salga con carpetovenicidades extemporáneas, que me lío la manta a la cabeza… ¡No estoy de humor!
–Tampoco se me ponga así… Disculpe, pero es que cuando me acuerdo de lo que les hicieron a Daoiz y Velarde me hierve la sangre… ¡Y eso que han pasado ya 201 años y pico de aquello!
–Dispensada… y, ¿por dónde íbamos?
–No me acuerdo, pero déjeme que le haga una pregunta: si la cosa es tan buena, ¿por qué no se la conoce más?
–Por lo de siempre: la idea está encriptada.
–¿Encriptada?
–Sí, en párrafos llenos de texto y en inglés.
–¿Sólo se encuentra en ese enlace?
–¡Qué va! De hecho, la idea aparece explicada de manera sustancialmente más accesible en la biblia de la minería de datos. Pero igualmente encriptada por el mismo y arcano procedimiento.
–¿Llama Vd. encriptar a escribir de manera ordenada y lógica?
–¿Con letras? Sí. La gente ya ha perdido la capacidad de leer texto y le abruma el negro sobre el blanco. Si quiere que algo no se se sepa, escríbalo con buena sintaxis, cuidada ortografía y lógicamente riguroso discurso.
–Vd., tan avanzado en unas cosas, parece un carca en otras.
–¡Qué va! El lenguaje escrito es cada día más ideográfico. Volvemos a los alfabetos egipcio y chino (pero con colorines). ¿No se da cuenta?
–No me había apercibido, pero si Vd. lo cree así… ¡será!
–Y eso que el nuestro fue ideográfico en sus orígenes, ¿sabía? El progreso mal entendido cela corrientes regresivas…
–¡Ni que siguiese Vd. a Donoso Cortés en tuiter!
–¿Sabía Vd. que la letra A representaba una vaca?
–No tenía conocimiento.
–¿Se lo demuestro?
–Venga, ¿cómo?
–Haga el pino y yo profiero la A mayúscula.
–¿A la de tres?
–A la de tres: uno…, dos…, ¡tres! AAAAAAAAA
–Ya.
–¿La ha oído boca abajo?
–Talmente. Igualica que una res. ¡Alberga Vd. saberes güikipédicos!
–Y Vd. tiene las enaguas hechas un zarrio.
–Es la crisis. Y Vd., poco cababallero, por mirar.
–Pues sepa Vd. que cada civilización giró la susodicha letra noventa grados hasta que la dejó boca abajo, como colgada de una viga.
–Esta digresión erudita nos aleja del meollo de su fabulita, ¿sabe?
–Convengo, pero en su esencia, moralejas y todo, la doy por finiquitada. ¿Cree que le aportará provecho?
–No lo descarto, aunque su natural campo de aplicación resulta, cuando más, tangencial a mis domésticos y consuetudinarios quehaceres.
–Ya siento haberle dado la chapa, pero, o participaba mi fabulilla o me ésta me reconcomía por los adentros.
–No se me ponga así. ¿Quiere medio clines?
–No es para tanto; además, he de apearme: veo acercarse un revisor.
–¿Viaja sin billete?
–Es norma de la empresa: por recortar gastos, no paga el kilometraje.
–Entiendo.
–Tenga Vd. buen día.
–Igualmente, fue un placer.

Traducir código SAS a Java

Hacía tiempo que no escribía en este blog pero creo que la noticia bien amerita un hiato en mi contumaz incuria.

Dias ha, escribí sobre WPS, un clon de SAS. Ahora he descubierto que también es posible ejecutar SAS sin SAS. Un producto de la empresa Dulles Research permite compilar código SAS en Java.

Podría abundar en corolarios, pero me parecen de lo más evidentes. Así que finalizaré mi tan noticiosa como breve intervención saludando a un fiel lector mío por ver si, esta vez, se queda con la copla.

¿Qué hacer con los valores perdidos de nuestras variables?

Creo que casi todos los que han hecho modelos matemáticos alguna vez en su vida se han encontrado con la pregunta que titula este breve artículo. Aunque más que artículo es una reflexión y sobre todo espero que al final sea un pequeño foro de ideas y de métodos con los que hacer frente a este problema.

Lo primero que me planteraría yo es: ¿por qué perdemos datos? Podemos tener una imperfección a la hora de recoger la información y podría ayudarnos a mejorar el proceso. También un valor perdido puede ser un valor en si mismo. No es lo mismo tener un consumo de 0 euros con un teléfono móvil que no tener teléfono móvil, sin embargo si sabemos que tenemos teléfono móvil un valor perdido es un 0 ya que no aparece el consumo en nuestros sistemas; en la telefonía este es un caso prototípico de valor perdido. Otro ejemplo es la medición de un paciente que ha abandonado el estudio, en este caso el dato recogido es nulo, y debemos evaluar si tener en cuenta ese registro para nuestro estudio. El primer paso ante un análisis de los valores perdidos es definir «valor perdido».

Monográfico. Arboles de clasificación con RPART

Con este rápido monográfico voy a acercarnos a los árboles de regresión con R. Esta metodología de predicción realiza construcciones lógicas que establecen reglas que nos permiten clasificar observaciones en función de una variable respuesta y de las relaciones existentes entre las variables dependientes. En esta primera aproximación no no voy a entrar en algoritmos ni en tipos de árboles (hay suficiente documentación en la red) intentaré en despertar la curiosidad del lector sobre este tipo de análisis y sobre todo quiero acercar a R al mundo empresarial un ámbito donde creo que R no destaca (al menos en España).

IBM compra SPSS

La noticia es de hoy. Los grandes vendedores de software y servicios quieren completar sus portafolios de productos. SPSS intentó extenderse a otras áreas del BI sin demasiado éxito. IBM hizo lo mismo en el área de la minería de datos. Incluso corrieron rumores de boda entre SAS y Teradata que quedaron en una propuesta de integración tecnológica.

Quedan unos cuantos proveedores de soluciones de minería de datos independientes. Sus accionistas deben de estar frotándose las manos.

Sobre la historia de CART y rpart

Hace unos días conversábamos Raúl y yo sobre árboles de clasificación. En particular, hablábamos de CART, el algoritmo propietario de Salford Systems. Me intrigó saber cuál sería la diferencia entre dicho algoritmo y la alternativa existente en R, rpart.

El autor de dicho paquete, Terry Therneau, tuvo la gentileza de ofrecer una introducción histórica al particular de la que ofrezco algunos fragmentos que traduzco yo mismo a continuación:

[…]

Tanto el programa comercial CART como la función rpart() están basados en el libro Classification and Regression Trees. Como lector y revisor de alguno de sus primeros borradores, llegué a dominar la materia. CART comenzó como un enorme programa en Fortran que escribió Jerry Friedman y que sirvió para contrastar las ideas contenidas en el libro. Tuve el código durante un tiempo y realicé algunos cambios, pero me resultó demasiado frustrante el trabajar con él. Fortran no es el lenguaje adecuado para un algoritmo recursivo […]. Salford Systems adquirió los derechos de dicho código e ignoro si alguna de las líneas origininales permanecen en él todavía. Mantuve muchas conversaciones con su principal programador (hace 15 o 20 años) sobre procedimientos para hacerlo más eficiente, esencialmente un problema interesante de indexación óptima.

partykit: un paquete de R para generar y manipular árboles de decisión

Los usuarios de R disponen de una serie de algoritmos estándar para generar y manipular árboles de decisión. Los más habituales están contenidos en alguno de los siguientes paquetes:

  • rpart, tal vez mi favorito
  • RWeka, un paquete más genérico que permite realizar llamadas a funciones de Weka desde R
  • mvpart
  • party

Cada uno de ellos tiene un interfaz distinto y operaciones como las de realizar predicciones, dibujar los árboles, etc. exigen conocer funciones específicas. (Éste es, de hecho, un problema genérico de R derivado de su naturaleza cooperativa).

Herramientas visuales y libres de minería de datos

El otro día me preguntó una amiga estadística qué herramienta visual de minería de datos libre —imagino que también quería decir gratuita— le recomendaba. Pensaba que la respuesta a la pregunta era sobradamente conocida de los que nos movemos en nuestro estrecho mundillo. La constatación —sobre una muestra que he ampliado a todo un récord de dos individuos— de que lo cierto es lo contrario me ha empujado a redactar esta entrada en el blog.

Macros SAS. Tramificar en función de una variable respuesta

Sobre la idea de “dumificar” variables he ideado un proceso para agrupar variables cuantitativas en función de una variable respuesta. Los que disponéis de herramientas de análisis más complejas tipo Enterprise Miner o Clementine ya disponéis de algoritmos y funciones que realizan esta útil tarea, además los árboles pueden trabajar con variables continuas. Pero un modelo es bueno si las variables de entrada están bien elegidas y bien construidas y como paso previo al análisis multivariante el análisis univariable es imprescindible. Tramificar una variable continua en función de una variable respuesta no va más allá de un análisis univariante, igualmente podemos tener dependencia lineal entre variables, algo que sólo detectaremos con análisis multivariables. Pero este sencillo algoritmo puede ayudarnos a conocer mejor algunas variables que deseamos introducir en nuestro modelo.

El Data Mining no es la caja negra que selecciona clientes

El manuscrito Voynich es un libro escrito hacia el siglo XVI cuyo contenido debe ser muy sofisticado y completamente revolucionario. Y debe de serlo porque a fecha de hoy, y tras 500 años estudiándolo nadie ha descifrado su significado. Así el manuscrito Voynich es algo tremendamente revolucionario que no sirve para nada, sólo para traer de cabeza a los criptógrafos durante 5 siglos y no pone de acuerdo a las áreas de conocimiento que lo estudian. ¿Y esto que tiene que ver con el Data Mining y con el marketing? Pues es un claro ejemplo de como no debe ser un modelo para el mundo del marketing.