Saltar para o conteúdo

Use Case

Validación de direcciones para optimizar la tasa de éxito en entregas

Daniel Azevedo · 17 de marzo de 2021

En los últimos años, el comercio electrónico ha crecido significativamente en diversos sectores como alimentación, retail y electrónica. En la segunda mitad de 2020, este aumento fue aún más notable, triplicando la cifra de años anteriores, fundamentalmente por el contexto de pandemia que impulsó las compras online.

Ante este crecimiento del comercio electrónico, la logística de distribución en entregas ha enfrentado nuevos retos para mantener el cumplimiento de una mayor cantidad de pedidos en los plazos esperados. Como consecuencia directa, las reclamaciones relacionadas con pedidos online también han aumentado de forma considerable (44% más que el año anterior), siendo la más frecuente la demora en la entrega.

Existen diferentes factores que conducen a entregas fallidas, siendo uno de ellos las direcciones incorrectas o incompletas. Por tanto, en este artículo analizamos diferentes soluciones para validar las direcciones proporcionadas, con el objetivo de maximizar la probabilidad de entregas exitosas.

Datos históricos a considerar

Para que un pedido se considere entregado correctamente, debe llegar a tiempo a la persona indicada, utilizando la información que los clientes proporcionan al realizar la compra. Esta información, que constituye nuestros datos de entrada, se ilustra en la siguiente tabla:

Validación de direcciones y códigos postales

Una manera de mejorar la eficiencia de las entregas es validar la dirección y el código postal proporcionados antes de iniciar el proceso de distribución, para asegurar que la dirección no contiene errores de escritura ni información relevante faltante.

Validación de direcciones:

La validación de direcciones puede resultar compleja debido a su formato variable. Por ello, presentamos dos enfoques diferentes:

  • Solución supervisada
  • Solución auto-supervisada

El primer paso, común a ambos enfoques supervisado y auto-supervisado, consiste en extraer características relevantes de las direcciones proporcionadas (y códigos postales), para utilizarlas como entrada en los modelos. Estas características son:

  • Nombre de la calle
  • Número de la calle
  • Número de puerta (en caso de ser un edificio)
  • Nombre del distrito
  • Persona receptora de la entrega

Un método adecuado para extraer estas características del texto de la dirección es utilizar Named Entity Recognition para identificar diferentes entidades, como número de puerta, nombre de persona u organización. Para formatos más estructurados (como códigos postales), las expresiones regulares también resultan viables, permitiendo definir las reglas del formato esperado. Existen ya librerías disponibles para análisis de direcciones como libpostal y pyap.

Una vez extraídas las características de los datos, podemos aplicar diferentes enfoques para validar las direcciones proporcionadas.

Solución supervisada

En este primer enfoque, el objetivo es entrenar un modelo capaz de predecir si una dirección es correcta o no (por ser incompleta o imprecisa) basándose en el historial de éxito de entregas anteriores. Utilizando aprendizaje supervisado, podemos seguir dos metodologías diferentes: Machine Learning tradicional y Deep Learning.

Machine Learning tradicional

Desde una perspectiva más tradicional del aprendizaje, podemos realizar primero la extracción de características y alimentar un modelo de Machine Learning con esas características para predecir la corrección de una dirección.

Además de las características de la dirección, existen otros dos atributos relevantes para determinar el éxito de la entrega: tipología del edificio y tipo de zona****.

Característica tipología del edificio

Esta característica indica si la dirección corresponde a una vivienda unifamiliar o a un apartamento en edificio, lo cual puede ser información importante para los modelos.

Una solución simple y manual sería utilizar la API de Google Maps para verificar si el número de puerta extraído de una calle específica corresponde a un apartamento o a una vivienda.

Otra opción consiste en analizar el historial de entregas en la misma dirección (número de puerta + nombre de calle) y si el número total de entregas es significativamente superior al promedio, esto indicaría un apartamento u oficina. Si es significativamente inferior, probablemente se trate de una vivienda unifamiliar.

Característica tipo de zona

Determinar si la entrega se realiza en una zona residencial o comercial/industrial también puede influir en el éxito de la entrega. Esta información debería ser otra característica de los datos de entrada. Por ejemplo, si se trata de una dirección comercial, la información sobre la persona que recibirá el paquete adquiere mayor relevancia.

Un enfoque de vecinos más próximos sería adecuado para extraer esta información, puesto que, lógicamente, si los edificios vecinos son viviendas residenciales, existe una probabilidad alta de que la dirección en cuestión también sea residencial.

Así, basándonos en el nombre de la calle y el número de puerta, podemos identificar los vecinos más próximos. Si la mayoría de ellos son comerciales/industriales, estaríamos ante una dirección de este tipo. En caso contrario, se consideraría residencial.

Variable objetivo

Como nuestro modelo tiene como objetivo predecir si una dirección es correcta o no, solo son relevantes las entregas exitosas y las fallidas por dirección no encontrada. Las demás entregas deben excluirse (basándose en el campo Estado de Entrega del conjunto de datos original).

Por lo tanto, basándonos en las diferentes características consideradas, nuestros datos de entrada podrían representarse como se muestra a continuación:

Número de puerta*: Si es None o está vacío, indica que se trata de una vivienda. En caso contrario, se encuentra en un bloque de apartamentos.

Para la fase de modelado, debemos utilizar un modelo de Clasificación (por ejemplo, Regresión Logística o SVM), ya que disponemos de una variable objetivo binaria.

Deep Learning

En lugar de utilizar un modelo tradicional de Machine Learning, podemos explorar un enfoque de Deep Learning para predecir si una dirección es correcta o no.

En este caso, no existe una fase de extracción de características. Alimentamos directamente las direcciones de entregas anteriores a una Red Neuronal Recurrente (a nivel de carácter), que aprenderá a representar internamente cada dirección (secuencia de caracteres), mapeándola a su correspondiente variable objetivo.

Aunque hemos presentado estas dos perspectivas, Machine Learning tradicional y Deep Learning, de forma separada, pueden combinarse utilizando métodos ensemble (como stacking o promediado de modelos).

Solución auto-supervisada

En este segundo enfoque, utilizamos una solución auto-supervisada, donde la idea consiste en, dado un conjunto de direcciones de la base de datos, aplicar técnicas de aumento de datos de texto y utilizar esa información como variable objetivo para que un modelo supervisado aprenda a diferenciar direcciones válidas de incorrectas.

En particular, podemos aplicar las siguientes técnicas de aumento de datos de texto:

  • Inserción aleatoria: Incorporación de nuevas palabras en las direcciones. Estas pueden seleccionarse aleatoriamente o proceder de otras direcciones válidas.
  • Permutación aleatoria: Cambio aleatorio del orden de caracteres, que puede realizarse a nivel de carácter o palabra. Además, la permutación puede efectuarse dentro de la misma dirección o combinando direcciones válidas diferentes.
  • Eliminación aleatoria: Supresión aleatoria de caracteres o palabras de una dirección.
  • Inserción de duplicados: Adición de palabras duplicadas en las direcciones, incrementando su ruido.
  • Reemplazo de sinónimos: Sustitución de algunas palabras por sus sinónimos. Un ejemplo sería reemplazar Street por Road.

Hemos utilizado estas técnicas en un proyecto anterior aquí.

Para garantizar que estamos aumentando direcciones válidas, solo las direcciones que resultaron en entregas exitosas deben utilizarse como entrada en la fase de aumento de datos.

La siguiente figura ilustra un ejemplo de aumento de datos para la generación del conjunto de datos:

Después de generar automáticamente la variable objetivo, podemos entrenar un modelo supervisado (clasificación binaria) para detectar si una dirección es correcta o no, donde la entrada sería similar a la tabla presentada anteriormente.

Curso

The Machine Learning Spectrum

Conoce más sobre diferentes tipos de aprendizaje.

Saber más

Validación de códigos postales

El código postal puede validarse fácilmente ya que tiene un formato predefinido (por ejemplo, 1234 – 567). Por tanto, podemos consultar una base de datos con todos los códigos postales conocidos y buscar una coincidencia que valide el código postal proporcionado.

Si no encontramos coincidencia, podemos comparar cada código postal conocido con el proporcionado y evaluar su similitud utilizando criterios específicos como la distancia de Levenshtein o la similitud del coseno de N-Gramas o word embeddings. El más similar al código postal proporcionado es el candidato más probable para ser el código postal correcto.

A continuación se presenta un ejemplo donde un código postal con errores de escritura (W) se corrige utilizando la distancia entre word embeddings de otros 4 códigos postales válidos. La siguiente figura ilustra cada código postal como un vector de dos dimensiones, obtenido del word embedding (tras reducción de dimensionalidad):

Como podemos ver en la figura, el código postal inválido (punto rojo) está más cerca de P4 que de cualquier otro punto de datos, lo que indica que P4 debería ser el código postal correcto.

Optimización

Validar las direcciones antes de realizar las entregas debe ayudar a optimizar la tasa de éxito, aunque existen algunos criterios a considerar al analizar los resultados de la validación de direcciones, a saber:

  • Coste de realizar la entrega, en función de la distancia y el tiempo.
  • Coste de confirmar, a través de una llamada telefónica, que la dirección es correcta. Además, existe también la posibilidad de que la llamada no se conteste y no se pueda confirmar la dirección.
  • Confianza de la predicción de validación de la dirección.

En este caso, la confianza de la predicción ayuda a medir la necesidad de una llamada de confirmación, en función de la distancia a la dirección de entrega. Si la confianza de la validación de la dirección es alta, el coste de una llamada de confirmación puede evitarse, independientemente de la distancia. Si la confianza es baja, debe existir un balance entre el coste de la entrega y el coste de la llamada de confirmación. Cuanto mayor sea la distancia al destino de entrega, mayor será la relevancia y el valor de realizar una llamada de confirmación, incluso considerando la posibilidad de que no se consiga la confirmación.

El objetivo de esta fase es minimizar el coste total asociado a una acción determinada, considerando la necesidad de una llamada de confirmación basada en la probabilidad de confirmación, distancia y confianza de la validación de la dirección.

¿Quieres profundizar en esta idea?

Agenda una reunión con Pedro Serrano

Conocer a Pedro Saber más

Conclusión

El propósito de este artículo ha sido analizar una solución para validar direcciones de entrega, con el fin de maximizar la probabilidad de una entrega exitosa.

Comenzamos analizando los datos de entrada más adecuados para este contexto y qué características pueden ser relevantes. Posteriormente, exploramos diferentes técnicas para validar direcciones y códigos postales proporcionados por los clientes al rellenar formularios de pedido.

Para la validación de direcciones, describimos dos enfoques diferentes: un enfoque supervisado en el que presentamos dos perspectivas diferentes para detectar si una dirección es válida o no: Machine Learning tradicional y Deep Learning. El segundo enfoque fue un modelo auto-supervisado, donde el aumento de datos permitió el etiquetado automático de datos, para predecir si una dirección es válida o no. Respecto a la validación de códigos postales, presentamos una técnica simple basada en similitud utilizando word embeddings de direcciones para comparar la afinidad entre diferentes códigos postales.

Finalmente, analizamos la relevancia de la validación de direcciones para minimizar los costes totales implicados.

Si tienes otras ideas sobre cómo validar direcciones, ¡no dudes en contactarnos!