lunes, 5 de junio de 2017

Clasificadores: el encuentro entre Data Science, Machine Learning y Redes Neuronales



Con frecuencia, cuando se ponen de moda, las fronteras entre diferentes tecnologías o simplemente técnicas se vuelve confusas. A veces porque realmente no son tan nítidas, a veces porque el ‘marketing tecnológico’ intencionadamente aplica incorrectamente términos de moda a tecnologías ya conocidas y menos ‘glamurosas’, a veces por pura confusión o ignorancia del que usa los términos.

Una de las zonas más borrosas hoy en día, al menos en mi percepción es la que separa a Data Science o Big Data de Machine Learning y a ésta de Deep Learning o Inteligencia artificial.

Quizá valga la pena dedicar tiempo y espacio a marcar todas esas fronteras pero, en este artículo, sólo voy a hablar de clasificadores y cómo se relacionan con algunos de esos términos. Y lo hago, motivado e inspirado por la descripción que en su libro ‘The Data Science Handbook’ hace Field Cady sobre los clasificadores, una descripción por un lado bastante simple y pedagógica pero que me parece rigurosa, basada en el conocimiento y que, personalmente, me ha permitido visualizar muy bien cierta relación entre Data Science, Machine Learning y Redes Neuronales.

Intentemos entender primero qué es un clasificador. Podemos decir que un clasificador es un algoritmo que, recibiendo como entrada cierta información de un objeto, es capaz indicar la categoría o clase a que pertenece de entre un número acotado de clases posibles. Por ejemplo, podemos leer una imagen que representa un número (como cuando se leen las matrículas de los coches en ciertos aparcamientos) y clasificarlo indicando de qué dígito se trata. O podemos recibir como entrada la imagen de un animal y decir si se trata de un gato, un perro o un loro. En algunas ocasiones, más que una clasificación, lo que proporciona es un valor numérico que indica la confianza que tenemos de que la entrada se corresponda con una cierta clasificación.

Field Cady nos dice que, en realidad, un clasificador, uno basado en Machine Learning, funciona en dos fases:
  • En una primera fase es entrenado, es decir, recibe una gran cantidad de datos de ejemplo y su clasificación correcta, de forma que se pueden ajustar los parámetros del algoritmo para un funcionamiento óptimo.

  • Cuando ya está entrenado es cuando ya funciona como describíamos más arriba: recibe unos datos de entrada y da la clasificación correspondiente como salida.
A continuación, Cady nos describe los siguientes clasificadores:
  • Árbol de decisión (‘Decision Tree’): simplemente una estructura donde en cada nodo se hace una pregunta y, en función de la respuesta, se sigue hacia un nodo u otro. La respuesta final es la categoría que andamos buscando.

  • Bosques aleatorios ('Random forest'): una colección de árboles de decisión entrenados cada uno con un subconjunto de los datos disponibles y que se ocupan sólo de un subconjunto de las características. La decisión final se toma como una media de las decisiones individuales de los árboles.

  • Grupo de Clasificadores (‘Ensemble Classifier’): Una generalización de los bosques aleatorios. Tomamos varios clasificadores (árboles de decisión o no), se entrenan bajo condiciones diferentes, y sus resultados se agregan de alguna forma. La idea subyacente es que cada clasificador en muy bueno en algo y los diferentes clasificadores son bastante independientes, de forma que se espera que la agregación sea una buena clasificación.

  • Máquinas de Vectores de Soporte (‘Support Vector Machines’): Se trata de un tipo de clasificadores que asumen que se puede establecer fronteras lineales en el espacio total de valores posibles de forma que, dependiendo de dónde se encuentre un conjunto de datos concreto, estará a alguno de los lados de la frontera, lo que lleva a su clasificación según el lado en que se encuentre. Asumen una separabilidad lineal (las fronteras vienen dadas por ecuaciones lineales).

  • Regresión Logística (‘Logistic regression’): Es como una versión no binaria de las Support Vector Machines. También suponen algún tipo de frontera pero lo que hacen es asignar probabilidades de una clasificación u otra según lo cerca o lejos que se encuentren de la frontera.

  • Regresión Lasso (‘Lasso Regression’): Una variante de la anterior, pero que tiende a eliminar las zonas de clasificación confusa.

  • Bayes ingénuo (‘Naive Bayes’): una aplicación simplificada de la estadística bayesiana en que, se parte de unos valores iniciales de confianza en una clasificación y, durante el entrenamiento se van ajustando

  • Redes Neuronales (‘Neural Nets’): en que un conjunto de nodos estructurados en capas, obtienen una salida en función de sus entradas y la aplicación de unos pesos. Estos pesos se ajustan durante el entrenamiento, y es la forma en que aprenden. Las redes neuronales son en general buenas cuando se trata de clasificar con base en muchas características.

Si se observa el listado anterior vemos que, en todos los casos, tenemos unos algoritmos que toman una serie de entradas y generan unas salidas, que son la clasificación. Y vemos que todos ellos ajustan de alguna forma sus parámetros mediante el aprendizaje basado en un amplio conjunto de ejemplos con sus entradas y su respuesta correcta. 

Todos son herramientas de Data Science (de análisis de datos) y en todos hay aprendizaje (machine learning).aunque el algoritmo específico pueda ser muy diferente.

Bajo esta perspectiva, desde un punto de vista externo, tratando todos los clasificadores como cajas negras,todos se comportan igual. Su algoritmo interno es diferente y sus resultados o mejores áreas de aplicación pueden variar, pero hacen lo mismo y tienen todos la capacidad (y la necesidad) de aprender. Y esto va desde algoritmos tan sencillos de entender como los árboles de clasificación como los más complejos y en cierto modo incomprensibles de una red neuronal.

La verdad es que, visto así, parece entenderse con más claridad la cercanía de conceptos, a priori bastante diferentes, y por qué no siempre las fronteras están claramente definidas. Si no eres muy especialista, o si sólo te importan los resultados y no cómo se llega a ellos, las cosas no son muy distintas.

Eso no justifica el que nos esforcemos en nombrar y entender cada tecnología por sí misma, pero hace más disculpable,mucho más disculpable. a aquel que no lo consigue.

Pero no dejemos de intentarlo, por favor.

Nosotros, no dejaremos de hacerlo.