10 Algoritmos que debería conocer todo Científico de Datos

Todo lo relacionado con Big Data, Inteligencia Artificial y Aprendizaje Automático es apasionante. El problema es que la cantidad de cosas que hay que aprender es abrumadora y uno no sabe muy bien por dónde empezar, si por algún lenguaje como R, una distribución de Hadoop o algo de bases de datos. Mi sugerencia es que empieces por comprender cómo se abordan los problemas, independientemente del lenguaje y herramienta que vayas a usar. Las aplicaciones se quedan obsoletas y tendrás que estar re-aprendiendo a usarlas continuamente, pero los algoritmos perduran y si los entiendes bien al principio, serán una buena base para toda tu carrera profesional.

En todo ámbito profesional hay una jerga, un vocabulario que tenemos que dominar. En este caso, todo Científico de Datos debe conocer unos algoritmos básicos que constituyen la “caja de herramientas” de su trabajo diario. Por ejemplo, en una noticia que publicaba recientemente en mi blog de Big Data comentaba que un equipo de investigación había dado importantes pasos en la comprensión de la mecánica celular usando series temporales en vez de reglas de asociación. ¿Cuál es la diferencia? ¿Por qué es importante conocerla?

La diferencia estriba en la naturaleza de los datos que vamos a usar y cómo se analizan para obtener respuestas. Esta es la misión fundamental del Científico de Datos: dado un problema cotidiano, ser capaz de expresarlo en forma de algoritmos que puedan ser resueltos por un sistema de cómputo intensivo. Para ello, hay que saber en cada momento qué estrategia es la más adecuada al problema que nos presentan y los datos de los que podemos disponer. Teniendo esto en mente, los 10 algoritmos básicos que debes conocer son los siguientes:

  1. Agrupaciones (clustering). Los algoritmos de agrupaciones intentan determinar la distancia óptima de un punto a otro en un conjunto y cómo mejorar esa distancia mediante la creación de subgrupos. Por ejemplo, el tiempo de asistencia de los servicios de extinción de incendios mejoraría si ponemos más parques de bomberos en una zona pero, dada una población concreta con una distribución geográfica, ¿cuál es el número ideal de parques de bomberos? ¿A partir de qué numero dejamos de obtener un beneficio en una mayor velocidad de respuesta y pasamos a tirar el dinero en parques que no sirven para gran cosa? De todos ellos, el método de n-promedios (o k-means) es uno de los más fáciles de aprender.
  2. Reglas de asociación. A menudo observamos fenómenos que se producen con una regularidad superior a la que el simple azar nos sugiere. Por ejemplo, es fácil deducir que todo el que compra patatas fritas o nachos va a montar un aperitivo y también comprará refrescos o cervezas. Pero intuir que esta correlación existe y saber en qué proporción se produce es algo muy distinto. Tan distinto como que los centros comerciales destinan una gran cantidad de recursos a determinar estas “reglas de asociación” que permiten detectar productos que se venden juntos, incluso cuando no hay una relación directa entre ellos. Eso se consigue mediante el algoritmo de Apriori.
  3. Regresión lineal. Esta técnica tiene un nombre un poco exótico, pero es algo que hacemos casi todos los días ya que se trata de cualquier cálculo en el que estimamos un valor de salida en función de distintos valores de entrada. Por ejemplo, en la concesión de préstamos sabemos que hay que tener en cuenta la edad, la antigüedad laboral y el sueldo para decidir el techo de riesgo, el importe máximo que concedemos a una empresa o individuo. Pero algunos de esos parámetros pueden tener más peso que otros. La regresión es el conjunto de técnicas que permiten determinar la proporción en la que interviene cada uno de los parámetros de entrada, como el cálculo de Mínimos Cuadrados Ordinarios, que calcula la distancia del promedio de todos los puntos de la muestra a la recta ideal.
  4. Regresión logística. Es una variación de la técnica anterior, que se produce cuando el resultado que buscamos es una respuesta binaria, en lugar de un valor concreto. Siguiendo el mismo ejemplo, calcular el techo de crédito de un candidato nos da un valor económico, como que una empresa tiene un crédito máximo de 12.000 € en función de su facturación y capital social. Pero también podríamos plantearlo de otra forma: dada una cantidad concreta, por ejemplo nos piden 30.000 €, ¿cómo determinamos si se concede o no se concede? Esa respuesta no es un número, sino la alternativa entre dos valores y se calcula mediante una regresión logística.
  5. Series temporales. El análisis de series temporales se aplica a todos los fenómenos que tienen historia; es decir, para los cuales hay una serie de valores guardados a intervalos regulares de tiempo. Por ejemplo, el consumo de carburante en una población es algo de lo que tenemos una larga serie histórica, por lo que las empresas de distribución pueden usar esa información para calcular las reservas que tienen que acumular de cara a la siguiente temporada. El cálculo de series temporales es una especie de regresión lineal enrevesada, ya que hay que eliminar dos componentes en los datos que nos llegan: los fenómenos estacionales, que se producen de forma repetitiva, y los cíclicos, que se apartan de la norma en periodos definidos. Esto se consigue mediante el método de Box-Jenkins.
  6. Arboles de decisión. Esta es una de las técnicas de aprendizaje automático más útiles y, al mismo tiempo, una de las más confusas para el aficionado o el novato. Realmente no se trata de una secuencia de “preguntas” que nos llevan a una solución final, sino de una sucesión de elecciones en la que, para cada rama del árbol que vamos dibujando, seleccionamos el parámetro que proporciona la mayor ganancia de precisión en la respuesta que estamos buscando. Los árboles de decisión de usan desde hace décadas en sistemas expertos y son realmente interesantes, aplicando distintos criterios o algoritmos para determinar la eficacia de las elecciones, como el algoritmo ID3 o el CART.
  7. Clasificadores bayesianos ingenuos. Un clasificador es un algoritmo que permite asignar etiquetas a una situación tras observar otras situaciones similares. Por ejemplo, cuando leemos un libro podemos etiquetarlo como una obra de “ficción”, “ensayo” o “biografía” en función de una serie de características que hemos definido previamente con otras obras de referencia. Imagina ahora la utilidad que tiene un algoritmo así para clasificar la avalancha de información que aparece cada día en Internet. Los clasificadores bayesianos ingenuos son un grupo de algoritmos que son capaces de realizar esta tarea con muy poca información de referencia.
  8. Análisis de texto. Una de las áreas más importantes en el análisis de datos, dada la enorme cantidad de información que se genera continuamente en este formato. Pensemos, por ejemplo, en la complejidad que encierra buscar precedentes jurídicos entre las miles de resoluciones judiciales que se emiten todos los días o encontrar la página Web que nos interesa con ciertas palabras clave entre todas las que podemos encontrar en Internet. Estas operaciones son imposibles de realizar sin algoritmos de análisis y clasificación de texto.

Hasta aquí tienes un resumen de los métodos y algoritmos más básicos que debes conocer, según recogen la mayoría de libros académicos. Los tienes perfectamente cubiertos, por ejemplo, en el libro que utilizamos para los cursos de certificación y que te recomiendo: Data Science and Big Data Analytics, de EMC Edutacional Services. Si quieres aprender a aplicar todo esto de forma práctica, échale un vistazo a Machine Learning with R. Aunque el libro de EMC tiene algunos ejemplos de código, éste está mucho más centrado en la aplicación de los algoritmos.

Yo, además, añadiría otros dos apartados a tu “caja de herramientas”:

  1. MapReduce. Si quieres comprender cómo funciona Google, cómo es posible triturar millones de datos en pocos segundos buscando una aguja en un pajar o los documentos más relevantes en una consulta, es imprescindible que entiendas el funcionamiento de Map Reduce. No es demasiado complejo y te aclarará muchas cosas. El documento original en el se explica todo está disponible de forma gratuita en esta dirección.
  2. Redes neuronales. Las redes neuronales buscan una imitación de los mecanismos fisológicos que se dan en el sistema nervioso animal para resolver problemas de gran complejidad, como la detección de patrones. Todo esto parece magia, pero no lo es y el funcionamiento no es tan complejo como podría parecerte, pero hay que pensar de una forma distinta a “hacer una lista de instrucciones” para llegar a la solución.

Voy a tratar de explicarte todas estas técnicas y algoritmos de forma general en las próximas entradas, alternando con otros temas de gestión de proyectos. Espero que te parezca interesante.

 

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *