Ir al contenido principal

Entradas

Visión artificial con redes convolucionales (CNN)

Las redes neuronales convolucionales o ConvNets son útiles en variadas aplicaciones dentro del machine learning, sin embargo, donde ha conseguido revolucionar el estado del arte es en la visión artificial y el procesado de imágenes. Lo que caracteriza a este tipo de redes es que es capaz de aprender en las primeras capas una serie de características básicas de la imagen, como son líneas o formas más o menos simples. En posteriores fases aprende a discriminar entre elementos más complejos, como ojos u orejas. Finalmente, en capas más profundas son capaces de diferenciar objetos complejos, como personas, perros, gatos o coches. En la siguiente imagen se plasma visualmente lo que quiero decir. Antes de hablar de las redes convolucionales convendrá explicar qué es eso de la convolución y para qué sirve. En el ámbito del tratamiento de imágenes, la convolución es una operación que involucra dos matrices. Por un lado la propia imagen a la que queremos aplicar la convolución (en forma de m...

Clasificación multiclase con deep learning y keras

Dentro de los diferentes tipos de problemas que trata de abordar el aprendizaje automático, uno de los más interesantes es la clasificación. Básicamente consiste en, dado un conjunto de elementos, asignarle a una etiqueta, donde cada etiqueta corresponde a una clase diferente. Por ejemplo, una aplicación interesante y bastante actual es clasificar a los visitantes de una web en dos categorías, los que, con alta probabilidad, pulsarán sobre un anuncio concreto y los que no. Este es un ejemplo de clasificación binaria, porque sólo hay dos categorías. Otro ejemplo puede ser el que ya vimos en el artículo sobre reconocimiento de caracteres manuscritos usando K-NN . En este caso hablábamos de un problema de clasificación multiclase en el que asignábamos a cada imagen una sola etiqueta de un conjunto de diez posibles (los dígitos del 0 al 9). Vimos que K-NN es un enfoque sencillo y efectivo para este tipo de problemas, pero hay otras alternativas. Vamos a enfrentarnos a un problema similar ...

Regresión lineal y descenso de gradiente con Python

En machine learning, el objetivo principal es encontrar un modelo que explique el comportamiento de un sistema (en el amplio sentido de la palabra). A partir de unos datos de entrenamiento, un sistema de aprendizaje automático ha de ser capaz de inferir un modelo capaz de explicar, al menos en su mayoría, los efectos observados. Pero también aplicar ese aprendizaje. Por ejemplo, un sistema de machine learning muy lucrativo para las empresas anunciantes es aquél que dado un perfil de usuario (datos de entrada A), sea capaz de predecir si pinchará o no (salida B) sobre un anuncio publicitario de, por ejemplo, comida para gatos. No es sencillo crear un modelo capaz de predecir el comportamiento del usuario (o sí), pero en todo caso, existen diferentes técnicas que nos permiten abordar el problema. En el caso del ejemplo que acabamos de ver, el modelo debería ser capaz de clasificar a los usuarios en dos clases diferentes, los que pulsarán y los que no pulsarán el anuncio de comida de gat...

Manipulación de datos con pandas

Cuando uno lee un libro o un artículo sobre machine learning encuentra multitud de explicaciones sobre el algoritmo tal o cual. Sin embargo, no se habla demasiado sobre la manipulación y el limpiado de los datos, que bajo mi punto de vista es tan o incluso más importante que utilizar el algoritmo adecuado. Nuestro aliado en esta tarea es la librería pandas . En lugar de hacer un recorrido exhaustivo por las funcionalidades de la librería, he preferido hacer uso de ella con un dataset real, para poder ver así, no sólo cuáles son sus funcionalidades, sino también cómo se aplican a datos reales. Así pues, en lugar de usar un dataset de los clásicos, he recurrido a uno real sacado de la web de datos abiertos del Ayuntamiento de Málaga. En concreto vamos a trabajar con el siguiente dataset, que se corresponde con las lecturas energéticas de los cuadros eléctricos durante el mes de marzo de 2017: https://datosabiertos.malaga.eu/dataset/lecturas-cuadros-electricos-marzo-2017 . Como siem...

Reconocimiento de caracteres manuscritos con k-nn

En la entrada anterior introducimos el algoritmo k nearest neighbors o de los vecinos más cercanos. Os conté como funciona el algoritmo y os presenté un ejemplo que clasificaba puntitos en un espacio en dos dimensiones. Como sé que os quedasteis con ganas de más (sí, aún os oigo suplicar que os cuente más) vamos a poner a prueba al algoritmo k-nn para ver si es capaz de aprender a reconocer caracteres manuscritos (problema conocido como OCR o reconocimiento óptico de caracteres). Como en el anterior artículo, os dejo un enlace al notebook de Jupyter que he usado para escribir este post: https://github.com/albgarse/InteligenciaArtificial/blob/master/Machine%20Learning/KNN%20Image%20Classifier.ipynb Para entrenar nuestro reconocedor de caracteres vamos a usar un dataset bastante conocido: MNIST . Desde esta web podéis descargar los cuatro archivos que lo componen: train-images-idx3-ubyte.gz: imágenes de entrenamiento train-labels-idx1-ubyte.gz: etiquetas de las imágenes de entrena...