Archivo de la categoría: Opinión

Cloud words con R. Trabajar con la API del Europe PMC con R

Hace años ya tuvimos nubes de palabras en el blog y ya era hora de ir actualizando algunas cosas. Y además quería aprovechar y presentaros un paquete de R que nos permite consultar la API del Europe PMC. Para quien no sepa que es el Europe PMC podemos decir que es un un buscador de documentos y artículos científicos (que ahora todo el mundo molón llama papers) y que tiene una API desde la que podemos acceder desde R mediante el paquete europepmc.

Obtener datos de la API de Europe PMC con R

El primer paso para trabajar con la librería de R europepmc sería obtener el número de artículos publicados con el topic “Autism” en su descripción, para ello podemos hacer:

#install.packages("europepmc")
library(dplyr)
library(ggplot2)
library(europepmc)

autismo <- epmc_hits_trend("Autism", period = 2000:2019, synonym = TRUE)
autismo
ggplot(autismo, aes(year,  query_hits)) + 
  geom_line() +
  xlab("Año de Publicación") + 
  ylab("Articulos publicados sobre Autismo")

La función del paquete de R europepmc epmc_hits_trend obtiene de un periodo dado el número de artículos y el número de artículos de un determinado tópico. Como vemos se está incrementando casi exponencialmente el número de artículos dedicados al Autismo en los últimos años, no es una tendencia particular, se está incrementando el número de papers (asco de término pero que tiene que aparecer para las búsquedas), estamos ante la “burbuja de los papers” ya que da mas notoriedad hacer mucho que hacer bien, ya se lo leerá una inteligencia artificial, en fin que me disperso. Pero la función que puede resultarnos más interesante es epmc_search que crea un data frame con las búsquedas de los artículos con su ISBN, fechas de referencia, autores,… nos va a servir para obtener unas nubes de palabras sobre los escritos acerca del autismo Seguir leyendo Cloud words con R. Trabajar con la API del Europe PMC con R

Me rindo, es necesario trabajar en Agile

Imagen de previsualización de YouTube

“Agile sounds good” y representa todo eso que critico. Tenía compuesta y preparada una canción que versiona el “Me cago en el amor” de Tonino Carotone, “Me cago en el Agile” se llamaba. ¿Por qué este cambio de opinión tan radical?  Porque no se trabaja de forma horizontal, se trabaja de forma vertical y cada uno hace la guerra por su cuenta. Me voy a mi terreno Agile Analytics

Echamos y vendemos humo. Empecemos: arquitectos, ingenieros, científicos de datos,  analistas de negocio, diseñadores,…  y al final nos olvidamos que estamos ahí para ganar € o hacer ganar a nuestra organización €, €€€€€€ no estamos para conectar nodos edge, ingestar data lakes con millones de registros que nadie usa, diseñar algoritmos, crear contenedores, APIs, visualizaciones espectaculares, mapas interactivos, inteligencias artificiales, etecé, etecé. ¿Objetivo final del proyecto? ¿Cuántos € retorna? Bueno pues ha sido necesario de crear una parafernalia con pizarras y posit para que no nos desviemos de esos objetivos y que en último término sean capaces de medir cuantos € supone cada proyecto. Si todos los implicados en un proyecto trabajaran de forma conjunta, ¿serían necesarias estas figuras? No, pero como eso no pasa, no es que sea necesario, es que se torna imprescindible trabajar en Agile.

Me gustaría plantear una visión distinta de las personas y los roles dentro de un proyecto analítico:

  • Jefe de proyecto (project manager sounds better). Esto ni Agile, ni cascadas, hace falta alguien que se las lleve y que reparta, no queda más remedio. Es muy importante su rol en la documentación y entregables de resultados.
  • Científico, ingeniero o arquitecto de soluciones. Al final son los que trabajan tutelados por un jefe de proyecto.
  • Sponsor de negocio. Este es el que plantea el caso de negocio,  el que pone en marcha toda la maquinaria para plantear un proyecto.
  • Usuario de negocio. Persona que en último término va a usar las herramientas que estén desarrollando y el que tiene un problema que la analítica puede resolver. La línea entre sponsor y usuario es fina.
  • Product Owner (la prefiero en english). Esta figura es la clave porque es la verdadera figura horizontal a las anteriores, rol multidisciplinar tiene que entender el lenguaje de todas las personas implicadas y velar por la correcta administración del proyecto, el que se traga la correcta documentación e imputación de las tareas, que si el resto lo hiciera bien no sería necesario. Junto con el jefe de proyecto cuida del cumplimiento de los objetivos a corto plazo.
  • Scrum máster. Es la persona encargada de que todo lo anterior se lleve a cabo y para ello dispone de una serie de ceremonias y de ritos ridículos pero que sin ellos todas las figuras anteriormente citadas harían lo que les viene en gana. Tiene una tarea de interlocución a más alto nivel en la organización muy importante ya que en el caso de producirse retrasos, problemas o impedimentos en el desarrollo de los proyectos debe ser capaz de eliminar esos problemas. También mide junto con negocio y dirección cual es el impacto económico de los proyectos llevados a cabo.

Esta es mi visión de un proyecto en Agile Analytics y alguno llevo encima (con cierto éxito).  No entro en las ceremonias, que tienen su pena y su gloria también pero obligan a que todos los elementos participantes de un proyecto se reúnan, se escriban actas y se gestionen tareas. Si alguien quiere hablaré sobre ellas.

Ahora bien, hace 20 años yo trabajaba sentado con Ana (de Negocio), tenía 2 pcs porque con uno ejecutaba Business Object y si no me salía la cucaracha con el otro realizaba los análisis con Access/Excel. Vale que vendíamos politonos, paquetes de SMS y móviles de concha pero no era necesaria toda esta parafernalia y éramos 2. Podemos opinar sobre la complejidad de los problemas de negocio actuales, la información disponible o el entorno competitivo son argumentos para trabajar de este modo, pero en mi opinión el problema está en la lejanía y la especialización.  Al final no salían las cosas, así que algunos listos han vestido de metodología (que poco me gusta esta palabra) el sentido común y han dado una solución a este problema y con un halo marketiniano muy molón que llamamos Agile. A todo esto la mayor beneficiada ha sido 3M que en 2018 estaba en máximos de cotización, creo que ahora está cayendo un poco quizá haya vuelto el sentido común, no creo, hasta yo me he rendido.

Los principales problemas de los españoles. Animaciones con R y gganimate

La realización de gráficos animados con R, gganimate y ggplot2 es algo que quiero empezar a trabajar en mis visualizaciones de datos, una buena forma de llamar la atención sobre nuestros gráficos. Para ilustrar el ejemplo he recogido los datos que publica mensualmente el CIS con las 3 principales preocupaciones de los españoles que podéis encontrar en este enlace, por cierto, este enlace tiene toda la pinta de ser una salida en SAS, no me parece muy apropiado pero no diré nada porque imagino que serán lectores del blog (ya podíais hacer una salida más acorde con los tiempos). El caso es que la primera parte de nuestro trabajo será el “scrapeado” de la web. Scrapear verbo regular de la primera conjugación:

library(XML)
library(dplyr)
library(lubridate)

#Lectura de los datos del CIS
url < - "http://www.cis.es/cis/export/sites/default/-Archivos/Indicadores/documentos_html/TresProblemas.html"
doc = htmlParse(url,  encoding = "UTF-8")
tableNodes = getNodeSet(doc, "//table")

#Leemos la tabla que tiene un formato un tanto peculiar
problemas <- readHTMLTable(tableNodes[[2]], skip.rows=1)
problemas <- problemas %>% filter(!is.na(V1)) 

#Transformamos los puntos en 0, parece que estuviera hecho con SAS
haz.cero.na=function(x){ifelse(x==".",0,as.numeric(as.character(x)))}

problemas < - cbind.data.frame(as.character(problemas$V1),sapply(problemas,haz.cero.na),stringsAsFactors=FALSE)
problemas <- problemas %>% select(-V1)

#El primer elemento de la tabla contiene los nombres que vamos a emplear
nombres < - readHTMLTable(tableNodes[[2]])[1,]
nombres$V1="Problema" 
nombres <- as.vector(t(nombres))

names(problemas) <- nombres

#Hay un registro en la tabla que tiene el número de encuestas, no es necesario
problemas <- filter(problemas,Problema != "(N)")

Cosas interesantes en el código. Hacemos HTMLParse de la web y nos quedamos con las tablas, Seguir leyendo Los principales problemas de los españoles. Animaciones con R y gganimate

El desarrollo de la Inteligencia Artificial, un paralelismo con el desarrollo de la aviación

Estoy en el claustro de profesores del Máster de la UNED en Big Data y Business Analytics y revisando la documentación, las clases teóricas y las clases prácticas he decidido incluir una diapositiva que establece un paralelismo entre el desarrollo de la Inteligencia Artificial (IA) y el desarrollo de la aviación. Este paralelismo se me ocurrió tras una conversación con una de esas personas que trabajan en este negocio y son íntegras y honradas [empezamos a quedar pocos]. El caso es que he añadido la siguiente imagen en la formación:

A ver, mi trabajo no es hacer diapositivas bonitas. Planteo un paralelismo que, en mi opinión, describe lo que estamos viviendo ahora. Me ahorro a Da Vinci, la Edad Media y los inicios, estamos más avanzados, tenemos Python… El caso es que podemos hacer nuestros primeros trabajos, estamos en disposición de planear, algunos estamos diseñando parapentes para tirarnos por las colinas y otros ya tienen aviones, aviones como los que hicieron los Hermanos Wright, con mucho esfuerzo vuelan. Seguramente en los ámbitos más avanzados estarán trabajando los primeros aviones de guerra como sucedió en la Primera Guerra Mundial. Igual que en la IA, la mayoría estamos agitando los brazos y dando saltitos al tiempo que decimos “mira como hago IA”, hay proyectos donde ya vuelan pero el coste para levantar el vuelo es mucho. Y por supuesto, en el ámbito armamentístico quizá se estén dando los primeros pasos en verdadera Inteligencia Artificial. Es inherente al hombre destruirse por eso imagino que en la Defensa es donde estarán los proyectos más avanzados.

Estos primeros proyectos generarán otros de mayor tamaño que se podrán empezar a utilizar comercialmente por aquellos que dispongan de más m€dio$ como los primeros bombarderos de la segunda guerra mundial que fueron la semilla de la aviación comercial. Sin embargo, necesitamos ese gran invento, ese gran desarrollo para que esto empiece a funcionar y se pueda democratizar, como sucedió con la aparición del avión a reacción, ese, desde mi ignorante punto de vista, es el giro copernicano en la historia de la aviación. En el caso de la IA podría tratarse de la computación cuántica porque a día de hoy con bits, con 010100100010101111 los tensores sólo pueden hacer aviones como los hizo Oscar Wright o buenos aviones de combate si ponemos medios. Con los 01010111 a un tensor le cuesta una cuadrilla de peones mejorar a un cálculo matricial.

Al final todos estos desarrollos se tienen que transformar en dinero, como la aviación empezó a usar la aviación comercial, al principio serán unos pocos privilegiados y luego se democratizará como está pasando con el precio de los billetes de avión que han bajado su precio (ajustado a inflación) un 50% desde 1980. Después, cuando la AI empiece a funcionar, todos tendremos un teclado basado en IA y nos moveremos en coches autónomos y construiremos aberraciones como el Airbus A380 que no irán a ningún sitio.

Con esta opinión no estoy diciendo que no se invierta, al contrario, es necesario invertir para obtener un uso comercial, con esta opinión estoy alertando. No dejéis que os vendan transbordadores espaciales, que el negocio empieza a oler a humo.

¿Qué nos pasa con R? (de nuevo)

Hace años ya sorprendió R situándose muy arriba en la lista tiobe de lenguajes de programación subió en los años siguientes y ahora nos encontramos con una sorprendente bajada en el índice:

¿Volvemos a tener complejo por usar R? A veces tengo la sensación de que no eres un “pro” si no usas Python. Debe ser que determinados framework funcionan mejor en otros lenguajes, o no, pero nos da vergüenza usar R (de nuevo).

Ya no nos interesa el GDPR

GDPR en Google Trends un pico en mayo de 2018 y desaparece el interés. Será porque todas las compañías se han adecuado a ese marco general legislativo y no es necesario trabajar más en ello o será porque seguimos en modo “preproducción”. En cualquier caso es probable que esta legislación haya nacido anticuada, es probable que no la hayamos entendido e incluso es probable que no sea necesaria. 

Y recuerda, legislar también nos cuesta dinero. 

Las mujeres son más inteligentes pero no están en puestos directivos

A raíz de una noticia sobre la reestructuración del consejo directivo de un gran banco en España donde sólo una mujer ha sido elegida entre los 12 puestos de dirección general me ha surgido la oportunidad para explicar que es una distribución de probabilidad, que es una distribución normal y que es la media y la desviación típica.

Aquí tenéis en python un código que simula el IC de los hombres y el IC de las mujeres, no me he complicado mucho la vida ni he buscado datos al respecto pero leyendo un poco creo que deben de parecerse mucho a esto:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

hombres = np.random.normal(loc=60, scale=32, size=10000)
mujeres = np.random.normal(loc=70, scale=25, size=10000)

p1=sns.kdeplot(hombres, shade=True, color="r")
p1=sns.kdeplot(mujeres, shade=True, color="b")
sns.plt.show()

Bonito gráfico de densidades con varias variables hecho con seaborn y kdeplot de sintaxis sencilla que pone de manifiesto con unos datos simulados (con cierto talento) que en media la mujer es un 15% más inteligente que el hombre, pero la dispersión de la inteligencia del hombre es mayor, o como le he dicho a la persona que le he explicado que es la distribución normal, hay hombres muy tontos y hombres muy listos, muchos más que mujeres muy tontas y mujeres muy listas; así es la biología.

Pero ya os digo yo que la relación de hombres/mujeres inteligentes no es 1/12, así que esa importante entidad bancaria no está tomando decisiones correctas. Ellos verán lo que hacen pero no ha sido una medida inteligente, probablemente porque la ha tomado un hombre.

Porque no vamos a cobrar pensiones. Animación con R y pirámides de población

Estoy creando material para un módulo de un máster que voy a impartir y escribiendo sobre seguros de ahorro he llegado a crear esta animación:

Se trata de una animación con las pirámides de población de España desde 1975 hasta 2018 de 5 en 5 años. El sistema de pensiones español se basa en 5 principios:
1. principio de proporcionalidad
2. principio de universalidad
3. principio de gestión pública
4. principio de suficiencia
5. principio de reparto

La animación va directa contra el principio de reparto. En el sistema español nadie ha cotizado para garantizarse su pensión, los actuales trabajadores pagan las prestaciones de aquellos trabajadores jubilados. Si tras leer estas dos frases y mirar la animación sigues recelando de la migración de personas a España espero que tengas un buen plan de ahorro privado.

Esta animación está hecha con R, los datos están descargados del INE pero están ligeramente cocinados (no al estilo Tezanos). En https://github.com/analisisydecision/wordpress tenéis este Excel con el formato adecuado, el código empleado para realizar la animación está en https://github.com/analisisydecision/wordpress/blob/master/Piramide_poblacional.R Es un buen ejemplo de uso de plotrix y pyramid.plot espero que el código no tenga algún gazapo…

Facebook y su Facebookgate son buenas noticias para el data scientist y para el oficio en general

En todo el lío de Facebook y su Facebookgate o Facegate ha aparecido el nombre de Cambridge Analytica empresa dedicada al análisis de datos para el desarrollo de campañas. Probablemente en la mente de todos está la forma de operar de esta compañía con estorsiones, prostitutas y malas artes varias. Sin embargo yo me quedo con lo que se supone que ha hecho esta empresa con los datos de millones de usuarios de Facebook, los análisis llevados a cabo por Cambridge Analytica han influido en la campaña presidencial de Estados Unidos y en el referéndum por el Brexit. Es decir, gestión de grandes volúmenes de datos y métodos de análisis (no sé si avanzados o no) son capaces de poner y quitar presidentes de la democracia más importante del mundo.

Si una muestra de datos, una muestra de usuarios de Facebook (porque sólo es una pequeña parte) provoca ese tipo de “terremotos” electorales ¿os imagináis que se puede hacer con nuestros datos de Facebook? Pues eso, inimaginable. Pueden hacer series a nuestro gusto, saber si pueden darnos un préstamo, determinar el precio de nuestro seguro de vida, pueden saber lo que necesitamos incluso antes de necesitarlo. Una pequeña parte de lo que sabe Facebook de nosotros porque somos nosotros los que hacemos Facebook. En el momento de escribir estas líneas Facebook está bajando su cotización bursátil, y yo opino que debería subir porque acaba de demostrar su potencial: Una red social que puede sacar a millones de británicos de la Unión Europea para hacer más grande a los enemigos de la Unión.

Podemos pensar que es el momento de poner control, de regular, que estamos trabajando en directrices del tipo GDPR que protege nuestra privacidad, que las multas pueden poner coto a este tipo de actuaciones. ¿Poner control a la publicación libre de una opinión? Podemos poner control al uso de esa información, pero ese concepto de “uso” es el que puede ser más difuso desde el momento en el que entra en juego el uso de datos anónimos. Ejemplo, si no das tu consentimiento expreso para que tu información pueda ser usada te cobro por el servicio, si das ese consentimiento el servicio será gratuito, yo te garantizo que eres un elemento anónimo. Y muchos anónimos han puesto como presidente del gobierno de Estados Unidos a Donald Trump.

Para mi todo esto no son malas noticias, se acaba de demostrar que mi trabajo y el de otros muchos mineros de datos, data scientist, gestores de la información… funciona ¡y de qué manera! Yo ya lo sabía porque ya son años haciendo que grandes compañías gasten menos o ganen más con datos. Y por cierto, no estaría mal que Cambridge Analytica compartiera su trabajo en github.

De actuario a científico de datos

De_actuario_a_cientifico_de_datos1

Si vemos las tendencias de búsqueda de Google Trends entre “actuary” y “data scientist” desde 2015 se aprecia que la segunda tendencia ha ido en aumento en los últimos tiempos hasta ser una búsqueda tan popular o más que la tendencia “actuary”. Aunque tengo formación como estadístico e informático he trabajado haciendo labores de actuario especializado en precios tanto de nuevo negocio como en renovación durante muchos años y ahora estoy evolucionando para convertirme en científico de datos. He hablado en algún evento de este cambio de paradigma que va más allá de quitarme la corbata y venir a trabajar en zapatillas. En mi opinión el origen de este cambio está en el trabajo en entornos colaborativos y por consiguiente en el uso y la extensión del software libre y los beneficios que esto supone.

El actuario es un tipo de la vieja escuela con mucha formación académica a sus espaldas, experto en su negocio, que sabe mucho de estadística y gurú en software comercial de precio alto que está expresamente pensado para su trabajo diario. Todo va medido al milímetro ya que suele moverse en entornos regulados y nada puede escapar a su control ¡su trabajo está sujeto a una supervisión!. Y ahora aparecen unos tipos que, a golpe de formación en Coursera, hacen modelos de todo tipo y de forma industrial basados en técnicas de aprendizaje automático con lenguajes de programación compuestos de librerías que cualquiera se puede descargar de la red y donde cada programador aporta su granito de arena. Un entorno con menor control que es más difícil de regular.

El cambio está ahí y es importante adaptarse, no podemos ser reaccionarios, de hecho el actuario ha trabajado en cambios tecnológicos y de negocio fundamentales. Algún actuario que esté leyendo esto habrá vivido una migración de una tarifa univariable a una tarifa multivariable ¿qué pasó? Se pasó de un dominio total de una tarifa por parte del equipo de negocio a una estructura más complicada pero ¿cuáles fueron los resultados? Mejoraron las ventas y mejoró la siniestralidad. Es así, personalmente lo he vivido. Y el actuario ha sido capaz de plasmarlo en una nota técnica. Optimización de precios en renovación, lo mismo, sólo que esto cuesta más dejarlo plasmado en una nota técnica, pero el actuario ha sido capaz. ¿No va a ser capaz el actuario de emplear nuevas técnicas de modelización y optimización? Cuidado, no mal interpretemos, no se trata de perder la cabeza con el deep learning (por ejemplo), que se están viviendo situaciones extremistas del tipo “no me fío de los modelos” a “sin el deep learning estamos fuera”, hay que hacer una transición. Y esta transición, en mi opinión, hay que basarla precisamente en las técnicas de modelización cimentadas en nuevos lenguajes de programación y desarrollos colaborativos.

El cambio es necesario y no debemos ser ajenos, yo personalmente lo estoy viviendo, en 9 meses me he actualizado tecnológicamente. Es verdad que aun me ruboriza comprobar como distintos motores que hacen MapReduce son capaces de dar resultados diferentes, sólo varían unos pocos cientos me dicen, a ver como se lo cuentas a un supervisor. O el caso en el que se busca el mejor modelo con miles de variables en base a bucles y donde sólo importa el AUC o se reclasifica un factor de forma automática en base a tal o cual algoritmo. Está siendo duro pero se abre un mundo de posibilidades donde nuestra creatividad ya no está limitada por el software, además esta nueva forma de trabajar la podemos adaptar a nuestras necesidades creando aceleradores que nos permiten centrarnos en el negocio y no tanto en la programación, no es necesario ser un gurú en programación ni trabajar con “pantallas negras” ya que se elaboran entornos más amigables y donde muchas tareas las puedes automatizar, te haces el software a medida. Por otro lado podemos resumir el comportamiento de modelos que van más allá de una clasificación lineal, no son cajas negras porque hay técnicas y medios para explicar como se comporta mi cliente dentro de un modelo, incluso podemos hacer un chatbot que te resuma el comportamiento cliente a cliente. Y cuando hacemos optimización matemática con la renovación de nuestra cartera… se acabó de depender del fabricante, ahora podemos usar la última técnica que ha implementado una universidad en cualquier lugar del mundo.

Hay que cambiar o estamos fuera por más que creemos marcos regulatorios para garantizarnos el trabajo durante unos años.