{"id":3075,"date":"2020-11-19T07:17:08","date_gmt":"2020-11-19T06:17:08","guid":{"rendered":"https:\/\/inlab.fib.upc.edu\/?p=3075"},"modified":"2020-11-20T08:45:06","modified_gmt":"2020-11-20T06:45:06","slug":"redes-neuronales-para-predecir-la-ocupacion-en-autobuses","status":"publish","type":"post","link":"https:\/\/inlab.fib.upc.edu\/es\/uncategorized-ca\/redes-neuronales-para-predecir-la-ocupacion-en-autobuses","title":{"rendered":"Redes neuronales para predecir la ocupaci\u00f3n en autobuses"},"content":{"rendered":"<p>El inLab FIB est\u00e1 colaborando actualmente en un proyecto llamado Intelibus, conjuntamente con la empresa de movilidad&nbsp;<a href=\"https:\/\/inlab.fib.upc.edu\/ca\/entitats\/autocorb\" target=\"_blank\" rel=\"noopener\">Autocorb<\/a>&nbsp;y la compa\u00f1\u00eda TIC de desarrollo software&nbsp;<a href=\"https:\/\/geoactio.com\/\" target=\"_blank\" rel=\"noopener\">Geoactio<\/a>, para desarrollar un sistema de predicci\u00f3n de la ocupaci\u00f3n de pasajeros en los buses.<\/p>\n<p><!--more--><\/p>\n<div>&nbsp;<\/div>\n<div>\n<p>El inLab FIB est\u00e1 colaborando actualmente en un proyecto llamado Intelibus, conjuntamente con la empresa de movilidad <a href=\"https:\/\/inlab.fib.upc.edu\/ca\/entitats\/autocorb\" target=\"_blank\" rel=\"noopener\">Autocorb<\/a>&nbsp;y la compa\u00f1\u00eda TIC de desarrollo software <a href=\"https:\/\/geoactio.com\/\" target=\"_blank\" rel=\"noopener\">Geoactio<\/a>, para desarrollar un sistema de predicci\u00f3n de la ocupaci\u00f3n de pasajeros en los buses. Debido a la pandemia de la Covid-19, se ha acelerado la implementaci\u00f3n de esta funcionalidad, ya que puede ayudar a frenar los contagios y evitar aglomeraciones: si se informa a la gente de c\u00f3mo ir\u00e1n de llenos los buses con antelaci\u00f3n, los usuarios podr\u00e1n optar por viajar en autobuses que vayan m\u00e1s vac\u00edos. En este art\u00edculo del blog explicamos qu\u00e9 m\u00e9todos y algoritmos de predicci\u00f3n utilizamos y, aprovecharemos para entrar un poco en detalle en modelos de machine learning como las redes neuronales.<\/p>\n<p>En el campo de la inteligencia artificial hay muchas maneras de abordar un problema de predicci\u00f3n como este: mediante simulaci\u00f3n, estimando la demanda, implementando heur\u00edsticas, utilizando machine learning\/deep learning, etc. Dado que las empresas de autobuses suelen guardar datos e hist\u00f3ricos de los viajes de cada autobus, se abre la posibilidad de abordar el problema con aprendizaje supervisado (supervised learning), es decir, entrenar modelos con datos etiquetadas con el que queremos predecir . En el proyecto de Intelibus disponemos de datos provenientes de c\u00e1maras 3D del interior de los autobuses que cuentan las personas que suben y bajan en cada parada. Si juntamos estos datos con informaci\u00f3n de las diferentes l\u00edneas de autobuses, informaci\u00f3n de calendario e hist\u00f3ricos de validaciones de los pasajeros, ya tendr\u00edamos los datos necesarios para ser capaces de entrenar redes neuronales que predigan de empleo en cada parada.<\/p>\n<\/div>\n<h2>\u00bfQu\u00e9 es entrenar un modelo?<\/h2>\n<p>Cuando hablamos de entrenar una red neuronal, lo que queremos en realidad es ajustar los par\u00e1metros de una funci\u00f3n (red neuronal) para que aprenda una tarea concreta, es decir, que aprenda a mapear unos inputs a outputs. Esto se consigue utilizando grandes cantidades de datos para ir minimizando el error de predicci\u00f3n del modelo respecto a \u00e9stas. \u00bfOs suena la \u00abregla de la cadena\u00bb que os ense\u00f1aron para derivar y pensabais que nunca m\u00e1s oir\u00edais hablar de ella?, pues bien, el proceso de entrenamiento de una red neuronal se basa principalmente en la ingeniosa aplicaci\u00f3n de esta regla, la que nos permite calcular c\u00f3mo se deben ir modificando los par\u00e1metros de la red para minimizar el error de predicci\u00f3n iterativamente.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\" size-full wp-image-1446\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura2.jpg\" style=\"width: 259px; height: 203px;\" width=\"259\" height=\"203\" \/><br \/>\nEn nuestro caso, queremos que el modelo aprenda a calcular la ocupaci\u00f3n de los buses en cada una de las paradas por donde pasan. De modo que al modelo le debemos dar como input una representaci\u00f3n num\u00e9rica (vectores) de la informaci\u00f3n del bus, la parada, el calendario, etc. y queremos que nos devuelva el n\u00famero de pasajeros que habr\u00e1, tal como se muestra en la siguiente imagen. Con hist\u00f3ricos de unos meses anteriores ya podemos llegar a obtener una precisi\u00f3n de predicci\u00f3n bastante buena.<img decoding=\"async\" class=\" size-full wp-image-1449\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura3.jpg\" style=\"width: 503px; height: 300px;\" width=\"503\" height=\"300\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura3.jpg 503w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura3-300x179.jpg 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura3-370x221.jpg 370w\" sizes=\"(max-width: 503px) 100vw, 503px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>La gracia de utilizar redes neuronales es que nos permiten, con un \u00fanico modelo, poder predecir sobre cualquiera de las l\u00edneas de bus en cada una de las paradas, sin tener que hacer un modelo o algoritmo especializado para cada una de las l\u00edneas. Esto simplifica la complejidad de implementaci\u00f3n a la hora de llevarlo a producci\u00f3n y permite tambi\u00e9n aplicarlo en otras ciudades f\u00e1cilmente, donde las l\u00edneas y las paradas ser\u00e1n completamente diferentes.<\/p>\n<h2>Series temporales: Redes neuronales recurrentes<\/h2>\n<p>Sin embargo, podemos llegar a hacerlo mejor. El modelo que acabamos de presentar no tiene en cuenta la ocupaci\u00f3n previa de las paradas anteriores, la cual es una informaci\u00f3n muy relevante y, saberla puede condicionar mucho la ocupaci\u00f3n de la pr\u00f3xima parada. Para estos tipos de problemas que se tratan secuencias hay un tipo de redes neuronales llamadas redes recurrentes (Recurrente Neural Networks), que nos permiten trabajar con series temporales teniendo en cuenta los valores anteriores de empleo para predecir la de la siguiente parada. Para hacerse una idea de c\u00f3mo son, la siguiente imagen muestra un esquema simplificado de c\u00f3mo es el flujo de informaci\u00f3n de los inputs hasta los outputs. Lo que hacen, en resumen, es ir codificando la informaci\u00f3n de las paradas previas de forma compacta para, finalmente, obtener un vector (ht) que contiene toda la informaci\u00f3n comprimida de la secuencia a partir del cual podemos predecir el valor de empleo siguiente. As\u00ed pues, con esta arquitectura de red neuronal obtenemos mejores resultados, ya que el modelo puede llegar a captar los cambios y patrones en el empleo de pasajeros a lo largo del tiempo.<\/p>\n<p><img decoding=\"async\" class=\" size-full wp-image-1452\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura4.jpg\" style=\"width: 500px; height: 135px;\" width=\"500\" height=\"135\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura4.jpg 500w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura4-300x81.jpg 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura4-370x100.jpg 370w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<div>Y como es la predicci\u00f3n? En la siguiente imagen podemos ver un ejemplo de lo que el modelo predice para un bus en concreto: en el eje de las x tenemos el eje temporal y el eje y representa la ocupaci\u00f3n del bus. Podemos ver c\u00f3mo el empleo empieza a 0 al inicio del viaje, va subiendo y vuelve a bajar a 0 cuando finaliza el servicio, y as\u00ed sucesivamente (como podemos ver en las \u00abcolinas\u00bb que se forman en el gr\u00e1fico). La l\u00ednea <span style=\"color:#0000FF;\">azul&nbsp;<\/span>hace referencia a la ocupaci\u00f3n real que obtenemos de datos hist\u00f3ricos y la l\u00ednea <span style=\"color:#FF8C00;\">naranja<\/span> representa lo que ha aprendido la red neuronal (y, en concreto, los puntos <span style=\"color:#800080;\">lilas<\/span> son predicciones totalmente nuevas sobre viajes que no se han utilizado durante el entrenamiento).<\/div>\n<div>&nbsp;<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-1455\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura5.jpg\" style=\"width: 576px; height: 234px;\" width=\"576\" height=\"234\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura5.jpg 576w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura5-300x122.jpg 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/01\/captura5-370x150.jpg 370w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/div>\n<div>\n<p>En conclusi\u00f3n, vemos que estos modelos basados en redes neuronales son muy vers\u00e1tiles, y permiten resolver una gran diversidad de problemas de manera muy eficaz y precisa si disponemos de los datos necesarios.<br \/>\n&nbsp;<\/p>\n<h2>Referencias<\/h2>\n<p>Predicci\u00f3 d\u2019ocupacions a l\u2019autob\u00fas (<a href=\"https:\/\/www.autocorb.com\/prediccio-ocupacions-bus\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.autocorb.com\/prediccio-ocupacions-bus\/<\/a>)<\/p>\n<p>Neural Networks and Deep Learning (<a href=\"http:\/\/neuralnetworksanddeeplearning.com\/\" target=\"_blank\" rel=\"noopener\">http:\/\/neuralnetworksanddeeplearning.com\/<\/a>)<\/p>\n<p>Understanding Neural Networks (<a href=\"https:\/\/towardsdatascience.com\/understanding-neural-networks-19020b758230\" target=\"_blank\" rel=\"noopener\">https:\/\/towardsdatascience.com\/understanding-neural-networks-19020b758230<\/a>)<\/p>\n<p>Hochreiter, Sepp &amp; Schmidhuber, J\u00fcrgen. (1997). Long Short-term Memory. Neural computation. 9. 1735-80. 10.1162\/neco.1997.9.8.1735.&nbsp;<\/p>\n<\/div>\n<div>&nbsp;<\/div>\n","protected":false},"excerpt":{"rendered":"<p>El inLab FIB est\u00e1 colaborando actualmente en un proyecto llamado Intelibus, conjuntamente con la empresa de movilidad&nbsp;Autocorb&nbsp;y la compa\u00f1\u00eda TIC de desarrollo software&nbsp;Geoactio, para desarrollar un sistema de predicci\u00f3n de la ocupaci\u00f3n de pasajeros en los buses.<\/p>\n","protected":false},"author":594,"featured_media":31208,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[496,1],"tags":[],"experteses":[6],"class_list":["post-3075","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articulos","category-uncategorized-ca","experteses-data-science-i-big-data"],"acf":[],"_links":{"self":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/3075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/users\/594"}],"replies":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/comments?post=3075"}],"version-history":[{"count":0,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/3075\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media\/31208"}],"wp:attachment":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media?parent=3075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/categories?post=3075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/tags?post=3075"},{"taxonomy":"experteses","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/experteses?post=3075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}