Aprender a clasificar para la búsqueda de itinerario de vuelo

Por Neal Lathia, Senior Data Scientist, Londres.

Aprender a clasificar para la búsqueda de itinerario de vuelo

La búsqueda del vuelo perfecto es una de las actividades principales para los usuarios de la aplicación Skyscanner . Del mismo modo, pensar en formas de ayudar a nuestros usuarios a reservar el viaje ideal es uno de los problemas que más nos preocupamos. Recientemente, en el Taller de recomendaciones en turismo (parte de ACM RecSys 2017 ), tuve la oportunidad de dar una conferencia magistral donde compartí algunos de nuestros experimentos recientes en este campo, y particularmente, sobre cómo estamos aplicando el aprendizaje automático dentro de este problema. En esta publicación, ampliaré algunos de los pensamientos que compartí allí.

Un problema de búsqueda complejo

Muchos de nosotros ya hemos experimentado el dolor de buscar un vuelo ideal; hay tantos factores diferentes que entran en juego. ¿Es esto demasiado caro? ¿Podríamos llegar al aeropuerto por esta vez? ¿Deberíamos hacer una escala en algún lugar para ahorrar algo de dinero o pagar un poco más por un vuelo directo? ¿Deberíamos irnos un día antes y regresar un día después? Dependiendo de dónde vuele e intente volar, las posibilidades pueden parecer infinitas.

En una publicación reciente, Zsombor describió cómo la página de resultados de búsqueda de vuelos de la aplicación Skyscanner ha evolucionado con el tiempo : ahora se está alejando de una lista infinita de vuelos ordenados por precios y se está convirtiendo en un conjunto de herramientas (o widgets ) que ayudan a los usuarios a navegar la complejidad de esta elección. Si bien hay muchas ideas y mejoras que podemos prever que van a mostrar información y control, una de las preguntas que formulamos fue: ¿podemos ayudar a los usuarios sacando a la superficie inmediatamente los "mejores" vuelos?

Aprendiendo a clasificar

En la literatura de investigación, clasificar "elementos" (en este caso, itinerarios de vuelo) usando alguna noción de "lo mejor" o "relevante" se conoce como aprender a clasificar . La aplicación de varias formas de aprendizaje automático en este espacio problemático se ha estudiado extensamente y es cada vez más común en varios productos (por ejemplo, Search at Slack , Venue Search in Foursquare , y Ranking Feed de Twitter ).

La premisa básica es que si tuviéramos datos sobre elementos que los usuarios consideren relevantes para su consulta ( ejemplos positivos y elementos que los usuarios consideran que no eran relevantes para su consulta), ejemplos negativos, entonces podemos usarlos para formar un modelo de aprendizaje automático. que puede predecir la probabilidad de que un usuario encuentre un vuelo relevante para su consulta . Al hacerlo, hemos traducido el problema de clasificar elementos en uno de regresión binaria (nota: hay otros métodos, como el enfoque por parejas para el ranking que no cubro aquí).

Definir la relevancia en cualquier contexto es complicado. Muchos sistemas confían en medir esto implícitamente, al mirar en qué elementos están haciendo clic los usuarios . Sin embargo, en la aplicación Skyscanner, hacer clic en un resultado de búsqueda no es una señal muy fuerte de que los usuarios han encontrado lo que están buscando, simplemente puede hacer clic en el itinerario para obtener más información. Una señal de relevancia mucho más fuerte es el compromiso de hacer clic en el sitio web de la aerolínea / agente de viajes para comprarlo, lo que requiere múltiples acciones del usuario.

Relevancia en la búsqueda de vuelos: un resultado de búsqueda es relevante si lo compró.

Hubo algunas etapas en el camino desde la idea de clasificar los resultados de búsqueda de vuelo con el aprendizaje automático hasta los experimentos. Abordamos esto con dos flujos de trabajo: experimentos en línea y sin conexión.

Podría funcionar? Experimentos fuera de línea

Primero refinamos cómo recopilamos datos sobre la experiencia de búsqueda de cada usuario; esta información luego se alimentó a través de una canalización que se encargó de unir, transformar y remodelar en un conjunto de características y una puntuación de relevancia binaria .

Tener este tipo de datos históricos nos permite preguntar qué tipo de preguntas. ¿Qué pasaría si hubiéramos ordenado los vuelos de una manera diferente? ¿El vuelo que eligió aparecerá más cerca de la parte superior de la lista de resultados de búsqueda?

Formalmente, esto significa realizar una serie de evaluaciones fuera de línea. Desarrollamos un kit de herramientas para respaldar este trabajo: al igual que herramientas de código abierto similares , este conjunto de herramientas se ocupó de los aspectos básicos de la realización de un experimento de aprendizaje automático: dividir los datos en entrenamiento / prueba y recopilar una variedad de métricas (p. Ej., Media Promedio de Precisión y Rango Recíproco Medio ) durante cada prueba. Desarrollamos nuestra propia herramienta para poder comparar cómo cualquier enfoque de aprendizaje automático se compara con una simple línea de base: clasificación de precios.

Como era de esperar, muchos de nuestros experimentos iniciales no dieron resultado. Nuestra línea de base resultó ser increíblemente difícil de superar, tal vez dado que todos nuestros datos provienen de usuarios que ven los resultados de búsqueda clasificados de esta manera. Seguimos iterando aquí hasta que encontramos un conjunto de características que parecían funcionar mejor que la clasificación de precios, usando un modelo increíblemente simple para empezar: regresión logística .

¿Funcionará? Un experimento en línea

Un desafío abierto con los experimentos de aprendizaje automático fuera de línea es comprender cómo las medidas fuera de línea se correlacionan con el rendimiento en línea . En otras palabras, el hecho de que un algoritmo parezca funcionar mejor que la línea de base en los datos históricos , no significa que sea mejor para los usuarios. Para validar esto, recurrimos a un experimento en línea.

Para hacerlo, construimos todas las piezas restantes que necesitábamos para ejecutar un experimento de producción. En Skyscanner, esto significa construir componentes que interactúen con nuestra plataforma de datos y un servicio de micro para cumplir con las predicciones.

Una forma de evaluar este enfoque en una prueba A / B sería reemplazar por completo la lista ordenada por precio con una nueva ordenada por relevancia. Si bien este enfoque se está explorando activamente, la interfaz de usuario que probamos inicialmente fue un widget que recomendaba vuelos por encima de la lista ordenada por precio.

Al final, realizamos un experimento en el que se compararon los usuarios a los que se les dieron recomendaciones mediante el aprendizaje automático , usuarios a los que se les dieron recomendaciones usando un heurística que solo tuvo en cuenta el precio y la duración, y los usuarios que no recibieron ninguna recomendación.

Experimento en línea: recomendando vuelos por encima de la lista tradicional, clasificada por precio.

Nuestros primeros resultados: esfuerzo de búsqueda y conversión

Como se indicó anteriormente, no evaluamos esto al observar los clics: no estábamos interesados ??en que los usuarios hagan clic en un widget. En cambio, primero cuantificamos el esfuerzo de búsqueda al observar con qué frecuencia los usuarios filtrar / recurrir / re-buscar un itinerario en una sola sesión, tanto cuando recibieron recomendaciones de vuelo como cuando no lo hicieron. En este caso, no encontramos diferencias significativas.

Sin embargo, en términos más generales, estábamos interesados ??en medir la conversión : con qué frecuencia los usuarios comprarían un vuelo recomendado por el widget en comparación con la compra de un vuelo que caía por debajo de él, en la lista de resultados "tradicional". Encontramos evidencia de gran promesa: para nuestra sorpresa, este primer modelo de clasificación llevó más compras al widget que la variante basada en reglas.

Una mirada al trabajo futuro

Este experimento es uno de muchos; Gran parte del proceso consistió en sentar las bases para poder explorar las miles de hipótesis que el uso del aprendizaje automático para ofertas de clasificación de vuelos, tanto fuera de línea como en línea.

Hay mucho más por venir en este espacio en Skyscanner : experimentos que se centran en la interfaz de usuario, que pasan por plataformas, que prueban nuevos modelos de aprendizaje automático, y en los diversos widgets que se pueden construir con este enfoque.

Trabaja con nosotros

Hacemos las cosas de manera diferente en Skyscanner y estamos buscando más miembros de Engineering Tribe en nuestras oficinas globales. Eche un vistazo a nuestros trabajos de Skyscanner para obtener más vacantes.

¡Estamos contratando!

Sobre el Autor

Hola, soy Neal. Actualmente soy Científico Senior de Datos en la oficina de Skyscanner en Londres. Trabajé con un escuadrón que se basa principalmente en nuestra oficina de Budapest para los experimentos descritos anteriormente, por lo que la historia real detrás de la construcción de estas características para los viajeros también incluyó viajar un par de veces (a una hermosa ciudad en la que no había estado antes). Puede encontrarme en Medium y Twitter , o descubrir mi anterior vida académica en mi sitio web .

Neal Lathia – Medio
Leer escrito de Neal Lathia en Medium. Data Science, etc. Todos los días, Neal Lathia y miles de otras voces leen … medium.com

Texto original em inglês.