Cuando la gente ve por primera vez una demo de un producto de Machine Learning (como esta de BigML), en general hay una sensación de que es algo mágico. Seguramente se debe a que se aprecia una forma distinta sobre cómo trabajan los ordenadores. En lugar de constar de un código estático, que se comporta como una calculadora que siempre da el mismo resultado cuando los datos son los mismos, un sistema basado en Machine Learning trabaja con los patrones que va descubriendo en los datos a medida que se le entregan. Se trata de programas dinámicos que cambian con el tiempo y de los que no se obtienen los mismos resultados cuando los datos de entrada son los mismos.
Al contrario de lo que sucede con la programación que podríamos llamar “tradicional”, un sistema basado en Machine Learning se ajusta a un entorno cambiante, adaptándose a las nuevas situaciones según se le va alimentando con datos frescos.
Sin embargo es importante entender que el análisis predictivo no es magia, y aunque el algoritmo aprende, sólo puede extraer sentido de los datos que le proporcionamos. Los algoritmos no tienen capacidad de intuición como los humanos, sea esto bueno o malo, por lo que el éxito del sistema depende principalmente de los datos de entrada.
El truco de las “demos” es que los datos ya están seleccionados, limpiados y transformados de forma que el algoritmo puede descubrir “fácilmente” los patrones. El proceso completo de generación de un modelo predictivo, desde la captura de los datos hasta la predicción, equivale en este enfoque a cocinar un plato. Los ingredientes serían los datos, y la receta el algoritmo: si los ingredientes están en mal estado, por muy buena que sea la receta el plato no saldrá bien. De forma equivalente, si los datos no son de calidad (es decir, no están bien seleccionados, limpios y transformados), incluso el mejor algoritmo nos dará unas predicciones de baja calidad.
De los datos a los algoritmos
Vamos a ver someramente cómo es el proceso previo de preparación de los datos. Es habitual enfrentarse a un proyecto de análisis predictivo con muchos datos. Muchos es muchos. La primera tarea es recopilarlos todos. Normalmente están en diferentes repositorios:
- En el CRM de la empresa.
- En bases de datos SQL (o noSQL).
- En hojas de cálculo.
- En las redes sociales.
- En el programa de facturación empresarial.
- En el programa de gestión de las listas de correo electrónico.
- En los informes de transacciones bancarias.
- En la cabeza de alguien…
Frecuentemente estos datos están “sucios”, es decir, tienen errores o discrepancias entre los diferentes campos que están en bases de datos distintas. Por ejemplo, es posible que la letra “ñ” o los acentos estén codificados en diferentes formatos en función de dónde hayamos recogido el dato. La fase de limpieza de datos comprende, entre otras tareas:
- Igualar formatos
- Descartar campos
- Corregir errores ortográficos
- Dar formato a fechas
- Eliminar columnas duplicadas
- Borrar registros no útiles
Con los datos “limpios” ya se puede empezar a hacer una selección de los que serán útiles para hacer las predicciones. En esta fase hay que quedarse con la “señal” y eliminar los campos que aporten “ruido”. Este trabajo se suele llamar Feature Engineering:
- Descartar los campos con contenido aleatorio
- Descartar los campos dependientes
- Seleccionar los que son “predictores”
La transformación de los datos, que también pertenece a la llamada Feature Engineering, trata de generar nuevos campos predictores basados en los que ya se tienen. El conocimiento del dominio (del negocio, del ámbito que se está analizando) es fundamental para abordar esta fase. Esta, junto con la fase de selección de campos predictores, son las que más esfuerzo intelectual y creativo necesitan, ya que no sólo hay que conocer el ámbito de estudio, sino que es necesario conocer con cierta profundidad cómo funcionan los algoritmos predictivos, cómo interpretan internamente los datos y cómo se buscan las relaciones entre ellos.
A modo de ejemplo, se puede pensar que en un proyecto de predicción de baja de clientes es suficiente con disponer de la fecha de alta y la de baja. Podríamos interpretar que el algoritmo, analizando estos dos datos, es capaz de “deducir” la antigüedad del cliente. Pero no es así. La transformación, en este caso muy sencilla, sería añadir un nuevo campo que fuera la resta de las dos fechas y transformarlo en número de días (o meses, o años, en función de que lo consideremos mejor). Una pequeña modificación como esta puede mejorar enormemente la capacidad predictiva del sistema.
Conclusiones
Las plataformas de Machine Learning As A Service (MLAAS) están acercando sustancialmente el análisis predictivo (frente al análisis descriptivo) a las empresas de cualquier tamaño. Lo que hacen los grandes desde hace años, ahora se está generalizando a todas las empresas. El proceso por el que estamos pasando nos recuerda a la evolución que tuvieron las bases de datos en los años 80 y 90 del siglo pasado: lo que en un principio era difícil de explicar (cómo funcionan y para qué sirven), ahora está de tal forma integrado en todos los sistemas que es compliado encontrarse con uno que no tenga una base de datos en sus entrañas.
Los algoritmo son importantes, pero no son lo más importante. La fase previa de recolección y preparación de datos requiere un esfuerzo y conocimientos mínimos para poder llevar un proyecto con éxito. Esta fase puede tomar entre un 80% y un 90% del tiempo del proyecto.
Factores como la experiencia, la intuición, el conocimiento del negocio y de los clientes son básicos. Estas competencias puedes tenerlas en tu empresa, o quizás necesites contratarlas fuera 🙂