Machine Learning fácil fácil

Dentro de esa serie de posts en los que explicamos de un modo muy asequible cosas tan abstractas como los hash, los blockchains o incluso la economía colaborativa, llega el momento de hablar de algo que a la mayoría le parece super futurista y abstracto, pero que en realidad es fácil fácil: el machine learning.

El objetivo principal de machine learning (aprendizaje automático) es que las máquinas aprendan para tomar decisiones. En concreto, su aplicación suele centrarse en que dado un nuevo elemento, un programa de ordenador decida si está en una categoría de un grupo de categorías dado.

highway toll photo
Photo by Dougtone

Vamos a ejemplificarlo con un caso que pudiera ser real: resulta que el gobierno decide que para volver a hacer las autopistas rentables, va a cambiar su modelo. Quitará el límite de velocidad, y los conductores pagarán en función de la velocidad a la que transiten. Para las que se pagan a posteriori no tienen problema y lo implementan en un par de meses, pero las que se pagan por anticipado son un problema y aunque ven que es un modelo que funciona, no lo pueden aplicar ya que no pueden cambiar todas las cabinas de peaje al otro extremo de los tramos.

Un investigador de una universidad se percata casi por accidente de que la gente que más rápido transita utiliza ciertas marcas de automóvil influenciados por los tramos y las horas del día. No es en el 100% de los casos, pero si se cumple en un porcentaje suficientemente alto como para decidir que se puede cobrar en el peaje un fijo en función de la marca del coche que se tenga.

Para esto se tomarían un montón de fotos de radares, cámaras y demás dispositivos de vigilancia y si clasificarían en función de la marca del coche que aparece en ellas. Cuanto más grande sea la muestra inicial mucho mejor, pero pasa como con las muestras de encuestas de población: con ¿650? personas con determinada distribución, se puede predecir el comportamiento de todo Cantabria, y tener 1000 personas no hace que se acierte mucho más, tal vez se afine un 0.01% adicional que no resulta sustancial.

De estas fotos agrupadas en categorías, se seleccionan ciertas propiedades que sean diferenciales. Estas pueden ser muy variadas, por ejemplo puede ser la disposición de los pixeles del centro de la foto en una conversión a grises, puede ser las coordenadas de la cabina de peaje dónde se tomo, la hora, el número de pixeles que hay entre las ruedas, … cualquier información que se tenga puede ser útil, pero no toda la información lo es. Por eso hay que trabajar con esas propiedades para reducirlas al mínimo necesario a tratar para tomar una decisión acertada. Por ejemplo, se puede llegar a la conclusión de que la distribución de pixeles del centro de la foto aporta exactamente lo mismo que los pixeles que hay entre las ruedas, por lo que no tiene sentido tratar ambas propiedades y es mejor gastar energías en determinar el valor de una sola de ellas.

Cuando ya se han encontrado las propiedades adecuadas, se plantea una formula, el modelo: un algoritmo sencillo que dada una nueva imagen nos vaya a determinar en que categoría hay que incluirla. Esta puede ser algo tan sencillo como:

ax+by+cz

siendo a, b, y c constantes que hemos determinado en nuestros procesos previos, x el color predominante en la foto, y un valor valor que representa la distribución de pixeles centrales de la foto y z la hora en la que se tomó la foto.

El valor de esta formula nos dirá que de 0 a 0.2 son los coches de marcas cuyos propietarios suelen ir despacio, de 0.2 a 0.6 son los que suelen ir a la velocidad marcada por la vía, y de 0.6 a 1 los que suelen ir por encima de la velocidad recomendada.

Por tanto, una vez obtenida esta fórmula, ya se pueden procesar las fotos tomadas en las cabinas de telepeaje, de tal modo que se determine instantáneamente si un conductor debe pagar 2, 5 o 10 euros.

Esto tan sencillo es machine learning: encontrar ese modelo que se puede aplicar de un modo automático para tomar decisiones. Fácil ¿no?

Una vez entendido esto podemos entrar en la distinción entre aprendizaje supervisado o no supervisado, deep learning y otras cosas; pero estas son otras historias que tendrán que ser contadas en otro momento.