#16 La mejor solución para cocinar tu modelo analítico

  • Autor de la entrada:
En este momento estás viendo #16 La mejor solución para cocinar tu modelo analítico
Foto de Christina Morillo en Pexels

¡Buenos días y buenos datos!

Hablar es barato. Enséñame el código.

Linus Torvalds. Ingeniero software finlandés-estadounidense. 

Cuando Linus Torvalds acuñó esta frase, alguien le estaba tratando de convencer sobre la facilidad de implementar cierta funcionalidad sin hablar realmente de cómo iba a desarrollarlo.

Aunque creo que yo no he dicho que sea fácil desarrollar un modelo, hasta aquí he escrito mucho de algoritmos, problemas y métricas.

Es el momento de entrar en la cocina.

Si recuerdas, el aprendizaje automático se ocupa del desarrollo y la aplicación de algoritmos para que las máquinas aprendan a partir de los datos.

Y para que las máquinas aprendan, interactuamos con ellas a través de software en:

  • Plataformas.
  • Entornos de trabajo (frameworks en inglés).
  • Lenguajes de programación.
  • Funciones y librerías.

Veamos las soluciones software más utilizadas para analítica avanzada mientras cocinamos nuestro algoritmo.


La vida es como una caja de bombones

¿Quién no se acuerda de esta frase tan entrañable y a la vez tan certera de la película de Forrest Gump?

Y es que la vida es como una caja de sorpresas y … un modelo analítico es como una tortilla española.

Me dirás pero, ¿qué tiene que ver la vida con un modelo y una tortilla con bombones?

Realmente poco, aunque un algoritmo, como la vida no sabes por qué derroteros te puede llevar.

En realidad lo que me gustaba era el título y la analogía con la comida porque hoy te voy a hablar de modelos que se cocinan como tortillas.

Y es que desarrollar un nuevo modelo de aprendizaje automatizado puede asemejarse a la elaboración de un plato de cocina.

La combinación de ingredientes, técnicas e instrumentos puede llevar a descubrimientos culinarios nunca vistos anteriormente y generalmente repetibles (si merece la pena claro…).

La plataforma

Cocina
La cocina. Imagen por Charlotte May de Pexels.

Para guisar una tortilla española lo primero que necesitamos es una cocina que estará más o menos equipada según el lugar, preferencias y posibilidades.

Puede que sea una cocina «high class» como diría mi amigo Sergio y tenga de todo: cocina de inducción multi-zona, horno con auto-limpieza, microondas, Thermomix y hasta robot amasador de pan.

En esta, hacer una tortilla casera va a ser coser y cantar. Gran parte del flujo va a estar automatizado y sólo se necesitará un poco de maña para cuajar.

O es posible que tengamos lo básico y nos tengamos que conformar con una cocina de gas. Aquí el proceso se nos complica un poco más, tirando de brazo y sartén de principio a fin.

E incluso puede que seamos nómadas digitales y estemos viviendo en un apartahotel en la Costa del Sol que sólo tiene una pequeña zona con microondas y cafetera.

Aquí tortilla «de la abuela» vamos a tener poca. Lo que si podemos hacer es comprar una preparada y a calentar.

Con cada una de estas alternativas disfrutaremos de una tortilla aunque hayamos llegado a ella de diferentes formas en función de las capacidades de nuestra cocina (y del cocinero/a…).

Lo mismo pasa cuando queremos construir un modelo analítico.

En este caso la «cocina» se llamará plataforma de analítica avanzada.

La plataforma es el entorno básico para desarrollar primero nuestro algoritmo y ejecutar después.

Generalmente está compuesta por:

  • hardware o soporte sobre el que se ejecutan las aplicaciones software.
  • sistema operativo o software que coordina todas las aplicaciones dentro de la cocina.
  • uno o varios entornos de trabajo o frameworks que organizan los pasos, procesos, librerías de código software y documentación de cada aplicación de principio a fin.

Por nombrar alguna, os dejo un listado de las principales a continuación.

Con tantas opciones, ¿con cuál me quedo?

La selección de tu plataforma depende de factores variados.

  • Primero, no es lo mismo si tu proyecto es pequeño o tiene una magnitud importante y necesitas una solución eficiente y escalable para ejecutar código distribuido.

  • Segundo, ¿tienes expertos en la casa?

Si es así seguramente quieres una solución “yo me lo guiso y yo me lo como”.

Por el contrario, si tus habilidades técnicas son menores, te pueden interesar productos tipo AutoML donde prácticamente no tienes que programar. La plataforma te lo da todo prácticamente hecho como si fuera “comida a domicilio”.

  • Tercero, ¿cómo andas de presupuesto? 

Poco que decir aquí. Cada plataforma tiene su precio desde gratis hasta cobrar por el proceso ejecutado.

  • Finalmente, ¿buscas código abierto o confías más en productos propietarios? 

En un entorno empresarial, lo barato puede salir caro porque las alternativas gratis o más económicas no suelen incluir soporte.

Generalmente vas a querer que alguien se centre en mantener la plataforma mientras tú te dedicas a tu negocio.

Aún así, cada empresa tiene sus peculiaridades y esta lista de requisitos suele extenderse con lo que seleccionar una plataforma suele convertirse en una apuesta importante.

De hecho es difícil que cumpla tu lista de necesidades al 100% que por otro lado irán evolucionando, al igual que las soluciones.

De ahí que es importante que pienses “multi-plataforma” y elijas una que se pueda interconectar fácilmente con otras y sea fácil de migrar si decides cambiar en un tiempo.

En el mundo real, nada es fácil, ¡es mejor dejar abiertas el mayor número de opciones para el futuro!

El entorno de trabajo (framework)

Receta

 

La receta. Imagen por ready made de Pexels.

Una vez que tenemos nuestra cocina para trabajar, necesitamos una receta para hacer nuestro guiso.

Según el momento, nos puede apetecer la tortilla de estilo paisano de mi madre, la “jugosiña” de mi primo de Betanzos o la deconstruida que hizo famoso a Ferrán Adriá.

Cada una tiene su guía con sus métodos, ingredientes y accesorios y el resultado, aunque es tortilla, será sutilmente distinto.

Además, una receta nos permite volver a cocinar el mismo plato una y otra vez sin necesidad de reinventarlo.

Y si te sientes valiente, también te proporciona el entorno de herramientas, técnicas e ingredientes para explorar y darle tu toque. ¿Cómo sabrá una tortilla «al estilo Impulsatek»?

Algo similar nos encontramos cuando desarrollamos nuestro modelo.

Necesitamos una receta, un esquema con los pasos y un ecosistema de métodos, librerías de software y documentación que darán sentido a la aplicación que estoy desarrollando. 

A este conjunto de procesos, software y documentación lo llamamos framework

Un framework nos permite repetir el proceso de construcción del algoritmo sin tener que pensarlo una y otra vez y además facilita la experimentación.

Normalmente se desarrollan sobre plataformas y a su vez evolucionan con esta de ahí que muchas veces nos refiramos a plataformas y frameworks indistintamente.

Algunos de los entornos de trabajo que más te vas a encontrar si sigues por estos derroteros de la ciencia de datos (sin contar los de las plataformas mencionadas anteriormente) son:

Scikit Learn

Scikit learn

Tensorflow y Keras

Tensorflow

Pytorch

Pytorch

Spark

Spark

Tidyverse.

Tifyverse

El lenguaje de programación

Cuadro de mandos de horno

 

El programa. Imagen por joingate de Getty Images.

¿Sabéis lo que es Python?

Te lo has encontrado hablando de los frameworks y no, no estoy pensando en una serpiente.

Como te conté en publicaciones anteriores, las máquinas “hablan” su lenguaje, un lenguaje formal, el lenguaje de programación.

Y esto le pasa a todas las máquinas con las que interactuamos como los electrodomésticos de nuestra cocina.

Mi horno entiende de temperaturas, tiempos y modos (calentamiento, bandeja abajo, bandeja arriba y abajo, aire, gratinado…).

Mi cocina interpreta números (0 al 9), zonas (derecha arriba, placa derecha abajo…) y modos (bloqueo, no bloqueo).

En la Thermomix seleccionas programas, números, tiempos y más y prácticamente te olvidas.

De igual forma ocurre con nuestros modelos de analítica avanzada.

Se programan en sus propios lenguajes y de estos destacan dos especialmente.

Por un lado, está Python.

Nombrado el lenguaje de programación más popular de 2021 según los índices TIOBE y PYPL.

Es usado ampliamente para el aprendizaje automático.

Tiene muchas librerías diseñadas específicamente para tratamiento de datos así como frameworks de analítica avanzada.

Por otro lado, está R.

Es un lenguaje diseñado por académicos y estadísticos ya hace más de 20 años.

Por ello, estaba más desarrollado que Python cuando comenzó el auge de la analítica avanzada hace más de 10 años.

Sin embargo, está perdiendo terreno ya que es más difícil de mantener.

De hecho, Python se ha convertido en el estándar de facto del desarrollo de aprendizaje automático en el entorno empresarial.

Entorno de desarrollo o IDE

Dentro de nuestras plataformas de aprendizaje, una de las aplicaciones imprescindibles es el entorno de desarrollo o IDE (Interactive Development Environment en inglés).

En una cocina los IDE serían los cuadros de mandos de cada electrodoméstico aunque probablemente, un símil más exacto es el de un editor de texto.

Un IDE es un editor de código donde escribes las órdenes de tu programa y compruebas si funcionan.

Los entornos de desarrollo más relevantes en aprendizaje automático son Jupyter Notebook y Jupyter Lab para Python y RStudio para R.

Hay otro IDE interesante que es Colabs. Es un entorno de desarrollo Python gratis en la nube de Google, que facilita mayor capacidad de procesamiento para el desarrollo de modelos tipo redes neuronales.

Las librerías

Botes

 

Los preparados. Imagen por anthonysp de Getty Images.

En un restaurante, cuando se cocinan muchos platos, se necesita simplificar y acelerar el proceso.

En el caso de nuestra tortilla aparecen los preparados de patatas y de huevo ya disponibles con antelación.

Preparados que hoy se usan para hacer una tortilla pero mañana sirven para hacer otras recetas: ¿pescado al horno? ¿mayonesa?…

Es decir, hacer una tortilla se puede simplificar hasta el punto de mezclar botes y cuajar en la sartén.

Hemos sustituido los pasos de “cortar patata”, “echar aceite en sartén y calentar” y “rehogar patata en sartén hasta que esté blandita” por un bote fabricado siguiendo esos mismos pasos con antelación.

En definitiva, hay partes de la receta original que no tendré que hacer cada vez que quiero disfrutar de mi plato.

De hecho, puedo redefinir mi receta re-escribiéndola con estas modificaciones e incluso incorporar los nuevos botes a otras recetas de manera habitual. Estaría modificando mi framework.

En la programación software, y por extensión en el desarrollo de modelos analíticos, tenemos algo equivalente con las librerías.

Las librerías de software son conjuntos de funciones que sustituyen operaciones complejas.

En general, los framework están compuestos por librerías y se diferencian de éstas en el alcance.

Una librería se centra en una función concreta mientras que un framework da sentido a una aplicación.

En aprendizaje automático hay miles de librerías.

Algunas de las más utilizadas en Python serían: Numpy (para realizar operaciones matemática sobre vectores), Pandas (para tratamiento de datos en formato tabla), Seaborn o Matplotlib (para visualización de datos) o sklearn (con todas las funciones de Skit-learn ya mencionado).

De igual forma, en R, dentro del universo Tidyverse, tenemos librerías como tidyr o dplyr (para tratamiento de datos) o ggplot2 (para visualizar información).

TL;DR:

Para que las máquinas aprendan a partir de los datos tenemos que interactuar con ellas:

  • A través de plataformas que establecen el lugar de trabajo y las capacidades disponibles como Google Cloud Platform, Amazon Web Services, Databricks, Anaconda, Knime, Cloudera y muchas más.
  • Con entornos de trabajo o frameworks que son los esquemas y ecosistemas de herramientas que nos guían para construir nuestras aplicaciones como Scikit learn, Tensorflow, H2O o Tidyverse.
  • Mediante los lenguajes de programación que entienden las máquinas como Python y R.
  • Y con funciones y librerías que simplifican los procesos y permiten replicar pasos que se utilizan repetidamente como Numpy, Matplotlib y Pandas.

En definitiva, como en una cocina, los instrumentos disponibles son los que determinarán como desarrolle mi modelo.

Si has llegado hasta aquí, mil gracias y si te ha gustado, compártelo en redes y dímelo en comentarios.

Te espero en las siguientes entregas de «La época de la información» donde volvemos a las primeras etapas del desarrollo de nuestro modelos para adentrarnos en el flujo de obtención y tratamiento de los datos.

Referencias

Hoy mis referencias son principalmente culinarias. Te dejo algunas recetas de tortilla española que me han inspirado así como una comparativa entre R y Python que me ha gustado.

El resto de recursos los he ido enlazando a lo largo del texto: