2 anos de laboratório de IA na Ruter — Parte 2
Como nosso hub de inovação ajuda a melhorar o transporte público
Esta é a parte 2 de uma série de artigos sobre o laboratório de IA da Ruter. Na primeira iteração do AI-lab, os alunos deveriam descobrir uma maneira de ajudar a equipe de suporte ao cliente, leia a parte 1 aqui ! Para a iteração de 2021, um novo grupo de quatro alunos foi encarregado de tentar prever atrasos na enorme rede de transporte de Ruter.

2021 — Mobilidade e previsões de tempo de viagem
Os atrasos são um fardo para os viajantes que usam o transporte público. Os viajantes experimentam incertezas sobre se chegarão a tempo. Uma análise interna da Ruter estima que os atrasos são 2,5 a 6 vezes mais onerosos para os viajantes do que o próprio tempo real de viagem. Portanto, são necessários modelos para prever com precisão esses atrasos em tempo real, e a equipe de quatro alunos decidiu usar modelos de aprendizado de máquina para conseguir isso.
O método atual para calcular o tempo estimado de chegada usa uma abordagem reativa. Quando um atraso é detectado em algum link, os demais links da jornada são ajustados por esse atraso. Este método assume que um atraso em um link não afeta os links downstream, mas isso geralmente ocorre se houver muito tráfego ou durante o horário de pico. O objetivo do laboratório de IA de 2021 era tentar uma abordagem baseada em dados para prever esses atrasos de forma proativa usando ML. A solução teria potencial para:
- Melhore a experiência do usuário fornecendo informações mais precisas em telas de exibição e aplicativos
- Forneça aos usuários informações sobre atrasos esperados ao planejar sua viagem
- Facilitar o planejamento dinâmico de rotas
Essa lógica pode esporadicamente fornecer dados defeituosos que são difíceis de descobrir, a menos que alguém mergulhe nos dados e observe rotas ou pontos de ônibus específicos, o que é difícil quando se está processando milhões de linhas. Uma quantidade significativa de tempo foi gasta categorizando paradas de ônibus e rotas com vários erros e, em seguida, decidindo se seria benéfico simplesmente remover esses pontos de dados de nosso conjunto de dados para melhorar o desempenho de nossos modelos de ML.
Todo o processo que seguimos para resolver a tarefa, desde a coleta de dados até a análise e determinação do melhor modelo de ML, pode ser resumido nas seguintes etapas principais:

Coletando dados do barramento:
Antes de buscar os dados desejados, tivemos que obter uma visão geral do data warehouse e das diferentes tabelas que ele continha. Os scripts foram escritos em SQL, buscando dados de um banco de dados PostgreSQL.
Coleta de dados externos:
para aumentar os recursos preditivos de futuros modelos de aprendizado de máquina, queríamos adicionar dados externos relevantes. Dados meteorológicos históricos e dados de tráfego foram, portanto, buscados na Internet e mesclados em nosso conjunto de dados. No entanto, devido a uma resolução grosseira das estações de tráfego, entre outras coisas, esses dados tiveram um impacto mínimo em nossos modelos de aprendizado de máquina.
Limpeza de dados:
Os dados brutos não estavam em um formato utilizável, além de conter vários registros errados e viagens incompletas. Falta de dados e duplicatas também eram problemáticos. Para lidar com isso, um script python fortemente dependente da biblioteca pandas foi desenvolvido. Esse script foi resultado de um processo mais longo de tentativa e erro usando o notebook Jupyter e o AWS Sagemaker.
Engenharia de recursos:
encontramos uma correlação significativa entre o tempo de viagem de um ônibus em uma rota específica e o tempo de viagem de um ônibus que percorre a mesma rota anteriormente. Com a inspiração da análise de séries temporais, criamos vários recursos que pensamos que poderiam ajudar o modelo - incluindo qual rota estava sendo conduzida como recurso categórico parecia natural. Isso significou que a equipe encontrou “A Maldição da Dimensionalidade”, pois mesmo nossa pequena seleção de rotas de ônibus continha centenas de trechos diferentes entre duas paradas. Em vez disso, optou-se por incluir essas informações usando diferentes médias para diferentes trechos, evitando também um vazamento de memória em nosso conjunto de dados, mais especificamente garantindo que as médias fornecidas como recursos não contenham dados que apareceram depois do ponto de dados atual.
Modelos de aprendizado de máquina de treinamento:
havia muita liberdade associada ao teste de diferentes modelos de aprendizado de máquina. Fomos encorajados a experimentar os dois modelos de aprendizado de máquina que conhecíamos de antemão e aprender novos modelos. Um modelo de regressão linear foi usado como linha de base, e um extrato dos modelos que foram testados contra ele são: “Regressão Ridge”, “GAM”, “Redes neurais” e “Modelos de árvore impulsionados”. Os modelos de árvore aprimorados, como o XGBoost, produziram os melhores resultados, embora a melhoria do modelo de regressão linear de linha de base tenha sido menor. Isso decorreu da grande correlação entre o tempo de viagem e a característica “média dos últimos 10 tempos de viagem para este trecho”. Nossas principais ferramentas para esta parte foram o Amazon Sagemaker com python.

Previsão:
depois de treinar um modelo de aprendizado de máquina, ele pode ser salvo e usado para prever tempos de viagem para novos conjuntos de dados. Uma continuação de nossa atribuição pode incluir a produção do modelo com um pipeline que busca dados de barramento, executa a transformação de dados e alimenta os dados no modelo. As previsões podem então ser enviadas para o aplicativo Ruter e telas de exibição.
Análise do modelo ML:
Após a seleção do modelo, nos aprofundamos nos detalhes das previsões e resíduos do modelo. Entre outros, queríamos saber o quanto esse modelo funcionava melhor do que a solução atual, obter uma visualização do erro para os diferentes links de uma determinada linha de ônibus, descobrir onde o modelo funcionava mal e por quê. As respostas foram visualizadas através de diferentes plots, e a análise se tornou o principal evento de nossa apresentação no final do verão.

Desde o verão de 2021, a lógica para estimar atrasos foi ainda mais otimizada, então as comparações podem parecer diferentes hoje.
Para resumir o verão de 2021, éramos 4 alunos trabalhando com a tarefa: “Usando modelos de aprendizado de máquina para prever tempos de viagem em tempo real”. O verão terminou com uma apresentação sobre novas descobertas, problemas, resultados e uma análise dos resultados. Nosso trabalho com coleta de dados, limpeza de dados, resultados e percepção dos dados lançou as bases para nós dois continuarmos como estagiários trabalhando meio período. Como estagiários trabalhando meio período, algumas das coisas que fizemos foram observar como os modelos de aprendizado de máquina funcionam quando omitimos recursos envolvendo o passado imediato e previsões futuras. O estágio a tempo parcial concluiu com a análise de dados com novas técnicas de registo de chegadas e saídas.
Em 2022, tivemos vários casos de uso interessantes para ML no transporte público, fique atento à parte 3 da série de artigos do AI-lab!
Escrito por Sindre Skaugset Olderkjær e Fredrik Wilhelm Butler Wang