Entrenando una red neuronal en Python

Mucha gente cree que utilizar el Machine Learning para resolver problemas cotidianos es muy complicado, pero no es del todo cierto, en realidad conociendo algunas herramientas en poco rato se puede tener en marcha un sistema que aprenda a dar respuesta a un problema y se adapte con el tiempo para mejorar su precisión.

He creado un pequeño juego de Piedra Tijeras Papel para enseñar a una red neuronal (muy simple, sin hacer ningún tipo de configuración y «fine tuning») y mostrar cómo la red neuronal aprende poco a poco y mejora con cada iteración su precisión.

El vídeo está hecho de madrugada, así que espero que sepáis perdonar mi lentitud a la hora de detectar los fallos que yo mismo voy cometiendo durante la creación del código.

¿Que te ha parecido? ¿Has conseguido llegar hasta el final sin dormirte?

Update: He subido el Notebook a mi cuenta de GitHub con el nombre PiedraTijerasPapel – LIVE

Soluciones para bases de datos grandes

Uno de los retos que sueles encontrarte en el mundo de las bases de datos a nivel técnico es que sean capaces de almacenar muchos millones de documentos (filas) y a la vez sean capaces de encontrar el resultado (una aguja en un pajar) en muy pocos milisegundos.

Si tienes un proyecto pequeño y una base de datos que se maneja en gigas de datos, las soluciones son sencillas de implementar. Con algunos ajustes en la capa de aplicación (si los puedes meter) y alguna que otra capa de cache, tu base de datos rejuvenece unos cuantos años.

Si la base de datos ya es de un tamaño considerable y hablamos de teras de información, es probable que ya tengas oídos los términos como cluster, sincronización, maestro y esclavos, además de las expresiones «necesitamos más disco», «el backup va muy lento» o «¿puedo tener una copia en local?» que pueden hacerte perder la cabeza por momentos.

Dependiendo del proyecto, puedes apoyarte en la arquitectura, gastando un buen montón de euros adicionales para mejorar la respuesta de tus bases de datos.

Pero, si no dispones de presupuesto para montar un Oracle Exadata y Oracle Coherence (por poner un ejemplo famoso) y tu proyecto puede aprovecharse de una base de datos NoSQL, es muy interesante que le pegues un vistazo a MongoDB.

Con MongoDB puedes crear de forma muy sencilla una plataforma que puede crecer tanto en redundancia (ReplicaSet) como en almacenamiento (Sharding), manteniendo siempre un muy buen nivel de capacidad de respuesta.

La configuración es bastante sencilla y amigable. Entrar a nivel de detalle de configuración te llevará muy poco tiempo y podrás hilar muy fino (si tu proyecto lo requiere) para configurar y adaptar las máquinas de bases de datos a tus necesidades. Con pocos euros, obtendrás unos resultados que pocos te podrán discutir.

Para medir esos resultados no hace falta que montes un Munin o un Ganglia que muestre las gráficas típicas que te dan mucha información interesante de un simple vistazo. Puedes utilizar el servicio de MongoDB Management Service (MMS) para ello. Instalando un simple agente en tus nodos, en pocos minutos tendrás toda una lista de gráficas muy completas que mostrarán información ordenada de que está ocurriendo con tu base de datos.

MongoDB Management Service

En la captura de arriba se pueden ver las gráficas de un par de nodos de un ReplicaSet. En el MMS puedes organizar uno o más tableros donde colocar las gráficas que te interesan para cada cosa concreta, haciéndote la vida más fácil si necesitas ver el estado de tu granja de servidores de base de datos de un vistazo.

Yo he implementado MongoDB + MMS ya en bastantes nodos de distintos proyectos y entornos productivos. La ventaja de tener en muy poco tiempo toda una solución compleja de base de datos lo convierte en un producto muy, muy, muy interesante para proyectos donde se trabaje con grandes cantidades de datos.

¿Todavía no lo has probado? ;)

En busca de nuevos retos

Una de las mejores cosas que me han pasado en mi vida profesional han sido estos últimos doce meses, donde he tenido el lujo de formar parte del equipo de Habitissimo. Durante estos meses he estado pegado a grandes profesionales que me han enseñado muchas cosas, más de las que yo me hubiese imaginado nunca. Y como ya he dicho en alguna que otra ocasión, en esta época he cobrado más en conocimientos y experiencias que en euros (y no soy precisamente económico). :)

Han sido meses de grandes cambios en toda la web, el equipo técnico hemos programado nuevas secciones y mejorando en lo posible la experiencia del usuario. En mi caso concreto, además, he aportado muchas secciones de estadísticas y mediciones a nivel interno. Estoy muy orgulloso de poder decir que he puesto algún que otro granito de arena en una de las pocas startup de éxito de España.

Aunque voy a echar mucho de menos los «Momentos Habitissimo» (gracias a todos, de verdad), a partir del próximo 1 de septiembre deja de ser mi cliente principal, al que más horas le dedicaba y me encuentro con un gran hueco en mi agenda del día a día.

Así que, se me presenta una gran oportunidad. De pronto tengo tiempo para dedicar a nuevos proyectos, para encontrar nuevos retos, nuevos equipos de trabajo con los que aprender y aportar algo de mis conocimientos. Y como ya he pasado por casi todos los formatos estos últimos 10 años como profesional en la informática, trabajando para autónomos, pequeñas empresas, grandes empresas e incluso montando mi propia empresa, creo que podré adaptarme a casi cualquier entorno que me presenten, si el reto es interesante. :)

Voy a ponerme a revisar mi perfil en Linkedin y actualizar el estado, a ver si alguien se pone en contacto conmigo y puedo volver a actualizarlo en breve, para añadir un nuevo proyecto / empresa.

¿Conoces algún proyecto donde yo pueda encajar?

Estadísticas de Trabajos en Habitissimo

En los últimos días he estado trabajando en una nueva sección para Habitissimo, se trata de la sección de trabajos en Habitissimo, donde gracias al volumen de datos que tenemos en la base de datos, podemos mostrar ciertos datos interesantes para empresas.

La información (muy simplificada para su fácil comprensión) está mostrada en los siguientes bloques.

Evolución de Trabajos de los últimos meses.

Evolución de Trabajos

Por ejemplo: Evolución de trabajos de Aire Acondicionado.

Nivel de competencia para Trabajos.

Nivel de Competencia

Por ejemplo: Nivel de Competencia de Construcción de Casas en Asturias

Provincias o poblaciones con más trabajos de Reformas.

Categorías de Trabajos Solicitados

Por ejemplo: Provincias con más trabajos de fontaneros

La sección es muy similar a la de Precios que ya hice hace un tiempo también para Habitissimo.

Me resulta divertido trabajar con números, estadísticas y ofrecer resultados «sencillos de leer». Si además puede ser útil para la gente, más todavía.

¿Crees que puede ser útil esta nueva sección de Habitissimo?

Visita a las oficinas de Tuenti Madrid

Visita a las oficinas de Tuenti

Este año he podido repetir la conexión con la Google I/O, esta vez invitado a presenciarlo en las oficinas de Tuenti Madrid. Como el año pasado cuando me invitaron a ir a las oficinas de Google, me he llevado mi cámara de fotos y he podido tomar algunas.

Visita a las oficinas de Tuenti Madrid

Como de costumbre, he creado un set de fotos en mi cuenta de flickr llamado Visita a las oficinas de Tuenti Madrid.

Sin duda, unas oficinas envidiables y un gran equipo técnico que se portaron de maravilla. Muchas gracias chicos. Ha merecido la pena coger un vuelo desde Mallorca para ir a veros. :)