Cómo Yandex.Taxi predice el tiempo de entrega del automóvil utilizando el aprendizaje automático

Imagina que necesitas llamar a un taxi. Abre la aplicación, ve que el auto llegará en unos siete minutos, haz clic en "Ordenar" - y ... el auto está a 15 minutos de ti, en todo caso. De acuerdo, desagradable?

Debajo del corte, hablaremos sobre cómo los métodos de aprendizaje automático ayudan a Yandex.Taxi a predecir mejor ETA (Hora estimada de llegada - hora prevista de llegada).



Primero, recuerde que el usuario ve en la aplicación antes de ordenar:



En el mapa, el azul indica los puntos óptimos para abordar un taxi. Pin rojo: el punto al que el usuario llama un taxi. El pin muestra cuánto tiempo llegará el automóvil. En un mundo perfecto Pero en el mundo real, otras personas cercanas también se autodenominan a través de la aplicación Yandex.Taxi. Y no sabemos qué automóvil irá a quién, porque se distribuyen solo después de realizar el pedido. Si el automóvil ya ha sido asignado, para el pronóstico usaremos la ruta y el tiempo de Yandex.Maps cuando avancemos por el camino óptimo. Esta vez (posiblemente con un pequeño margen) mostraremos al usuario inmediatamente después de realizar el pedido. La pregunta sigue siendo: ¿cómo se puede predecir ETA antes de ordenar?

Y aquí aparece el aprendizaje automático. Hacemos una selección con objetos y las respuestas correctas y enseñamos al algoritmo a adivinar la respuesta de acuerdo con las características del objeto. En nuestro caso, los objetos son sesiones de usuario, las respuestas son el tiempo después del cual el automóvil llegó realmente. Los signos del objeto pueden ser parámetros numéricos conocidos antes del pedido: el número de conductores y usuarios de la aplicación junto al pin, la distancia a los vehículos de servicio más cercanos y otros valores potencialmente útiles.

¿Por qué es esto importante?



En un mundo ideal, las personas hacen todo por adelantado y siempre planifican su tiempo con precisión. Pero vivimos en el mundo real. Si una persona llega tarde al trabajo o, lo que es peor, al aeropuerto, es importante que comprenda si llegará a tiempo para partir y llegar a su destino.
Al decidir qué ordenar, el futuro pasajero se guía, entre otras cosas, por el tiempo de espera. Puede ser muy diferente en diferentes aplicaciones para llamar a un taxi, y en diferentes tarifas de una aplicación. Para que el usuario no se arrepienta de la elección, es muy importante mostrar la ETA exacta.

Todo parece ser simple. Presente más señales, entrene a un modelo, como CatBoost, pronostique el tiempo antes de la llegada del automóvil, y puede terminar allí. Pero la experiencia muestra que es mejor no apresurarse y pensar con cuidado, y luego hacerlo.

Al principio, no teníamos dudas de que era necesario predecir el tiempo a través del cual el conductor llegaría al usuario. Sí, no sabemos con certeza qué automóvil se asignará antes del pedido. Pero podemos predecir la ETA utilizando datos no sobre un controlador específico, sino sobre los controladores cercanos al pedido. Por supuesto, el pronóstico debe ser lo suficientemente honesto para que el usuario pueda planificar el tiempo.

Pero, ¿qué significa "honesto"? Después de todo, cualquier algoritmo de pronóstico es malo o solo estadísticamente bueno. Hay resultados exitosos y francamente malos, pero debe "promediar" para no desviarse significativamente de las respuestas correctas. Debe entenderse que "en promedio" es diferente. Por ejemplo, el promedio es de al menos tres conceptos de estadística: expectativa, mediana y moda. La imagen del magnífico libro de Darrell Huff "Cómo mentir usando estadísticas" muestra perfectamente la diferencia:



Queremos que el modelo en promedio cometa pocos errores. Dependiendo del valor de "promedio", hay dos opciones para evaluar la calidad de los pronósticos. La primera opción es mostrar al usuario la expectativa matemática del tiempo antes de que llegue el taxi. Como resultado, se capacitará un modelo que minimiza el cuadrado medio del error de pronóstico (Error Cuadrático Medio, MSE):

MSE= frac1n sumni=1(yi hatyi)2 rightarrowmin



Aqui yi - respuestas correctas,  hatyi - pronósticos del modelo.

Otra opción es no confundirse con el pronóstico de ETA principalmente en una dirección, hacia arriba o hacia abajo. En este caso, le mostraremos al usuario la mediana de la distribución del tiempo antes de que llegue el taxi. Como resultado, se capacitará un modelo que optimiza el módulo promedio del error de pronóstico (Error absoluto medio, MAE):

MAE= frac1n sumni=1|yi hatyi| rightarrowmin



Pero nos dimos cuenta de que nos estábamos adelantando un poco.

Repensar el enunciado del problema


Después de la cita, sabemos qué tipo de automóvil va para el usuario, lo que significa que podemos estimar su tiempo de viaje en Yandex.Maps. Esta vez se muestra en el pin después del pedido. Por un lado, ahora tenemos más información y el pronóstico será más preciso, pero, por otro lado, esta también es una estimación con un error.

Esa fue la trampa en la tarea de pin ETA. Si bien el conductor no está asignado, es necesario predecir exactamente la hora en que se mostrará la ruta Yandex.Mart, y no la hora real antes de la entrega del automóvil.

Parecería, ¿qué tontería: en lugar del valor exacto, tome otro pronóstico como objetivo? Pero eso tiene sentido, y he aquí por qué. En el camino hacia usted, el auto designado puede demorarse. El conductor se metió en una situación peligrosa en la carretera, en un atasco debido a un accidente o salió a comprar agua. Tales demoras son difíciles de predecir. Crean ruido adicional en la variable objetivo, por lo que la tarea ya difícil de predecir ETA en el pin se vuelve aún más difícil.

¿Cómo deshacerse del ruido? Predecir la variable objetivo suavizada: el tiempo que se muestra después de que se asigna la máquina en función de la ruta al usuario.

Esta es la lógica desde el punto de vista empresarial: de todos modos, no puede perder el tiempo en el camino a lo largo del camino óptimo desde ETA, pero se pueden reducir los retrasos adicionales al trabajar con los conductores.

Métricas de calidad, datos, modelo y capacitación.


Descubrimos que para ETA en el pin, es necesario predecir no el tiempo real, sino el tiempo que se recibirá después de que la máquina se asigne a lo largo de la ruta. De las dos métricas de calidad, MAE y MSE, elegimos MAE. Quizás, desde el punto de vista de la intuición del pronóstico, es más lógico evaluar la expectativa (MSE), en lugar de la mediana (MAE). Pero MAE tiene una buena característica: el modelo es más resistente a los valores atípicos entre los ejemplos de entrenamiento.

Los signos se dividen en grupos:
- construido por hora actual;
- geo (coordenadas, distancia al centro de la ciudad y objetos significativos en el mapa);
- pin (cuántos y qué automóviles están cerca, su densidad se calcula de manera diferente);
- estadísticas sobre la zona (como de costumbre cometemos errores, cuánto predecimos);
- datos sobre los conductores más cercanos (cuánto tiempo alcanzan, cuánto está el primero más cerca que el segundo, etc.).

Por supuesto, CatBoost fue entrenado en estos signos. El argumento decisivo fue que el aumento de gradiente implementado en CatBoost sobre árboles equilibrados se ha establecido durante mucho tiempo como un método de aprendizaje automático muy poderoso, y el método de codificación de características categóricas en CatBoost compensa regularmente nuestras tareas. Otra buena característica de la biblioteca es el aprendizaje rápido en la GPU.

Ahora unas pocas palabras sobre qué modelos se compararon. La ETA inicial (antes de ser especificada por el aprendizaje automático) se calculó en función del tiempo durante el cual podía llegar la máquina más cercana al usuario. El modelo actual (utilizado en la aplicación ahora) es lo que se hizo mediante el aprendizaje automático y de qué trata este artículo. Además, pronto se lanzará un nuevo modelo en producción. Ella usa un orden de magnitud de características más significativas para resolver el problema. La siguiente tabla muestra las mediciones de calidad de estos modelos en datos históricos. Por cierto, todavía tenemos muchos planes: ven a ayudar .

Calidad de predicción de validación de ETA *


Error absoluto medio
Error más de 1 minuto
Error más de 2 minutos
Error más de 5 minutos

ETA original


82,082


29,95


18.12


3,7


Modelo actual


79,276 (–3,4)


29,33 (–2,1)


16,98 (–6,3)


3 (–19,2)


Nuevo modelo


78,414 (–4,5)


28,95 (–3,4)


16,62 (–8,2)


2,8 (–23,2)




* Porcentaje (entre paréntesis indica el cambio del ETA original).

El aprendizaje automático nos permitió ganar alrededor de dos segundos, o 3.4% de la desviación promedio del pronóstico. Y en el nuevo modelo, casi otro segundo, un total de 4.5%. Pero a partir de estos números, es difícil entender que la ETA ha mejorado significativamente. Para sentir los beneficios del aprendizaje automático, debe prestar atención a la última columna. Las faltas con un pronóstico de más de 5 minutos se convirtieron en 19.2%, y en el nuevo modelo, ¡incluso 23.2% menos! Por cierto, tales errores ocurren solo en 3 y 2.8% de los casos en modelos que usan aprendizaje automático.

Resumen


Especificamos la ETA en el pin principalmente para proporcionar a los usuarios un pronóstico confiable. Pero, por supuesto, con cualquier aplicación de aprendizaje automático en los negocios, es imprescindible evaluar el efecto económico. Y entienda si es comparable al costo de construir e implementar modelos. Después de la prueba A / B en línea, resultó que nosotros, mediante el aprendizaje automático, recibimos un aumento estadísticamente significativo en la conversión de un pedido a un viaje (después de todo, un pedido se puede cancelar) y un aumento en la conversión de una sesión de usuario a un pedido.

En ambos casos, estamos hablando de un efecto del orden de 0.1 puntos porcentuales. Esto, por cierto, no contradice la significación estadística: en nuestros volúmenes de datos, incluso tal diferencia se detecta de manera confiable en 2–4 semanas. Y con relevancia comercial, de hecho, tampoco todo está mal: resultó que los costos de aclarar la ETA son rechazados por el aumento de la conversión en solo unos meses.

Como resultado, obtuvimos un caso útil e ilustrativo. El refinamiento de la ETA en el pin se ha convertido en una historia instructiva sobre la selección cuidadosa de la variable objetivo. En el lado del producto, este es un ejemplo muy motivador: mejoramos la aplicación y vimos que los usuarios la apreciaban. Esperamos que la refinada ETA ayude a nuestros pasajeros a reunirse con mayor frecuencia en reuniones, trenes y aviones.

PD: si está interesado en otras tecnologías Yandex.Taxi, le recomendamos una publicación sobre precios dinámicos , que mi colega publicó recientemente.

Source: https://habr.com/ru/post/es431196/


All Articles