Engineering

Introducción al Machine Learning: nuestro Supply Traffic Filter

Index Exchange Supply Traffic Filter

Ahora que estamos rodeados de coches autónomos, asistentes personales controlados por voz y motores de recomendación integrados en nuestros servicios de streaming favoritos, parece que solo hemos visto la punta del iceberg del Machine Learning. Para muchos de nosotros, cada vez controla una mayor parte de cómo vivimos y decidimos pasar nuestro tiempo.

Los ingenieros de Index Exchange, apasionados de la tecnología que marca el ritmo de nuestro mundo, se han volcado en el Machine Learning y más concretamente en el ámbito del aprendizaje supervisado. Nuestro canal optimizado con Machine Learning, «Supply Traffic Filter», es un buen ejemplo de la inversión que hemos realizado en este ámbito. Estamos aquí para explicar exactamente cómo lo hemos hecho.

Un gráfico que muestra el proceso de seguimiento y prueba de un desafío de Machine Learning.

Selección del reto

En cualquier proyecto de Machine Learning, el primer paso es definir el reto. No todos los problemas son buenos candidatos para resolverlos mediante Machine Learning. Tenga en cuenta lo siguiente:

  1.     Resolver el problema de forma manual: ¿Requiere mucho tiempo? ¿Conlleva establecer reglas muy complejas?
  2.     ¿El resultado cambia con tanta frecuencia que es muy difícil de mantener?
  3.     ¿Existen dificultades para obtener datos relevantes del problema porque el volumen de datos es muy grande?

En Index Exchange, uno de estos retos era gestionar un volumen desorbitado y que no dejaba de crecer. Un buen ejemplo de ello es que, cuando estalló la pandemia, inmediatamente observamos un aumento espectacular del tráfico en nuestro perímetro y, al mismo tiempo, los técnicos de nuestro centro de datos estaban limitados por las restricciones de desplazamiento. Teníamos que averiguar una forma de seguir escalando el tráfico y ser más eficientes al gestionarlo, sin que los editores y anunciantes que confían en nuestra plataforma se vieran afectados, o casi. Predecir el valor de las subastas entrantes sería complicado, teniendo en cuenta el enorme volumen de datos. La combinación de todos estos factores planteaba un reto de Machine Learning y, más concretamente, un enfoque de Machine Learning supervisado.

Puede leer más sobre nuestro enfoque de la situación aquí .

Selección de características

Ahora tenemos un reto de Machine Learning que resolver. ¡Qué interesante! El siguiente paso es elegir cuáles son las mejores características. Una característica de Machine Learning es una propiedad o rasgo que pueden medirse. La selección de características es un paso esencial, ya que el rendimiento del modelo de Machine Learning depende de él en gran medida. Las características adecuadas pueden mejorar significativamente el rendimiento del modelo y reducir el tiempo de entrenamiento. Por su parte, unas características irrelevantes pueden afectar de forma negativa al rendimiento del modelo. Entonces, ¿cómo se puede saber si una característica es adecuada o no para sus necesidades?

Identificación de características

Lo primero es buscar todas las características posibles. Cuando Index Exchange empezó a trabajar en Supply Traffic Filter, los investigadores tenían ante sí numerosas características potenciales. Se pusieron en contacto con expertos en este ámbito interno de la empresa para que nos ayudaran a recopilar la lista.

Procesamiento previo del conjunto de características

En un mundo perfecto, los datos estarían limpios; en el mundo real, están llenos de ruido y aleatoriedad. Por ello, es habitual que los ingenieros de Machine Learning tengan que dedicar mucho tiempo a comprender y limpiar los datos.

Algunas características son textuales, pero los modelos de Machine Learning esperan valores numéricos. Los ingenieros deben convertir estas características en formato numérico, y normalmente lo hacen con técnicas de codificación one-hot o codificación de enteros. La codificación one-hot suele ofrecer mejores resultados que la codificación de enteros, pero requiere más tiempo de entrenamiento. Con los conjuntos de datos pequeños se recomienda usar la codificación one-hot. Con los conjuntos de datos grandes, la codificación de enteros resulta más adecuada.

Reducción del conjunto de características

A continuación, intentaremos reducir el número de características en un proceso conocido como reducción de dimensionalidad. Tener un montón de características no necesariamente mejora el rendimiento del modelo. Estas son las dos razones principales por las que el número de características debe ser limitado:

  1.     Generalizar el modelo. Aunque una característica puede parecer tener relación con un resultado, esta correlación podría no generalizarse para datos futuros.
  2.     Reducir el tiempo de entrenamiento y predicción. Tener menos características permite entrenar el modelo y predecir los resultados más rápido.

De acuerdo, comprendemos que el número de características debe ser limitado. ¿Cómo podemos reducir nuestra dimensionalidad de características? A pesar de que existen diversas técnicas, recomendamos optar por la «Importancia de características». Esta técnica puntúa la pertinencia de una característica con respecto a un resultado. Básicamente, significa que debemos conservar las características que obtienen una mayor puntuación y eliminar las que menos puntuación consiguen.

En nuestro caso, el proyecto Supply Traffic Filter se puso en marcha con 50 características, pero pudimos limitarlas a solo 11 al principio.

Selección de un modelo de aprendizaje

En este punto, tenemos que elegir el algoritmo de aprendizaje. Estos son los dos tipos principales de algoritmos de modelo en el aprendizaje supervisado:

Tipo de algoritmo Predicts
Classification Target classes
Regression Value-likelihood

Con Supply Traffic Filter, nuestro objetivo era clasificar las subastas «sin puja» antes de que se produzcan, lo que generaba un problema de clasificación. Resultó interesante que nuestro equipo de investigación terminara optando por un modelo de regresión. Queríamos filtrar el tráfico en una cantidad dinámica basada en la carga. Si los nodos de nuestro exchange están muy sobrecargados, necesitamos un filtrado más agresivo para mantenerlos operativos y que sigan ofreciendo rendimiento. Con el modelo de regresión se puntúa la predicción de pertinencia que cada subasta puede tener para nuestros compradores. Nuestros servidores se basan en esta puntuación para filtrar el tráfico de forma dinámica y proporcional al volumen activo.

Selección de los algoritmos de aprendizaje automático

En el aprendizaje supervisado hay numerosos algoritmos muy utilizados. Al elegir uno, es importante que conozcamos bien cuáles son las características de cada función y los pros y contras de cada algoritmo.

El siguiente paso es analizar nuestro conjunto de datos y encontrar el algoritmo que mejor se adapta a sus características. No basta con simplemente mirar los pros y los contras.

Por ejemplo, Index Exchange procesa decenas de miles de millones de subastas al día, lo que significa que podemos eliminar «Máquina de vectores de soporte» y «K vecinos más próximos». ¿El motivo? Estos algoritmos son lentos de entrenar con conjuntos de datos muy grandes. Muchas de las características de nuestros conjuntos de datos eran categóricas y, por lo tanto, no lineales. Esto permitió a nuestro equipo de investigación eliminar el algoritmo «Regresión logística», ya que este está optimizado para conjuntos de datos lineales. Por último, buscábamos un algoritmo que fuera fácil de explicar, lo que eliminaba «Red neuronal». Esto nos dejaba una única opción de algoritmo: Árbol de decisión.

Entrenamiento

Si nos ha acompañado hasta este punto, ya tiene las características y el algoritmo de aprendizaje necesarios para entrenar un modelo. Los ingenieros de aprendizaje automático emplean gran parte de su tiempo puliendo las características y buscando el algoritmo de entrenamiento adecuado. Si nos saltamos estos pasos, podemos sumergirnos en el entrenamiento y las pruebas del modelo.

 Un gráfico que muestra el desglose de los conjuntos de datos en 3 grupos diferentes: entrenamiento, validación y prueba.

Antes de entrenar un modelo, tenemos que dividir los conjuntos de datos en tres grupos distintos: entrenamiento, validación y pruebas. El objetivo es generalizar el modelo y recopilar puntuaciones de rendimiento que no estén sesgadas. La división habitual es usar el 70 % del conjunto de datos para el entrenamiento, otro 15 % para la validación y el 15 % restante para las pruebas.

Entrenamiento y ajuste del modelo

El siguiente paso es entrenar y optimizar el modelo para conseguir el máximo rendimiento. El rendimiento puede variar dependiendo de lo que se denomina hiperparámetros. El algoritmo de aprendizaje define el estilo de aprendizaje de alto nivel, mientras que los hiperparámetros definen los detalles de cómo debe aprender el modelo. En Index Exchange usamos el modelo de Árbol de decisión, que resulta tener riesgo de sobreadaptación. El ajuste mediante hiperparámetros estimula el modelo para capturar la tendencia estadística subyacente y elimina el ruido. Los hiperparámetros principales del Árbol de decisión son:

  1.     Minimum leaf samples: número mínimo de muestras en el nodo de una hoja. Si es demasiado bajo, el modelo estará sobreadaptado (y el modelo memoriza los datos de entrenamiento, incluido el ruido). Si es demasiado bajo, el modelo no estará lo suficientemente adaptado (y el modelo no captura la tendencia subyacente de los datos de entrenamiento).
  2.     Maximum depth: este valor establece la profundidad máxima del árbol de decisión. Impide que el árbol se siga bifurcando si la profundidad alcanza este valor. Si es demasiado alto, el modelo estará sobreadaptado. Si es demasiado bajo, el modelo no estará lo suficientemente adaptado.

¿Cómo podemos asegurarnos de que los hiperparámetros son óptimos y están generalizados? Los algoritmos de validación cruzada y búsqueda en cuadrícula son técnicas de validación que se pueden usar para ajustar los hiperparámetros de forma inteligente.

Pruebas del modelo

Ya contamos con un modelo de entrenamiento que generaliza de la mejor manera posible los conjuntos de datos de entrenamiento y validación, así que ha llegado el momento de realizar una prueba. En el caso de Supply Traffic Filter, como queremos filtrar el máximo número de subastas sin puja posible sin perder capacidad predictiva, usamos dos KPI para medir el rendimiento del modelo:

  1.  Recall Rate: con qué nivel de acierto predice el modelo transacciones valiosas. No pasa nada por dejar pasar subastas irrelevantes, pero no podemos filtrar subastas que pudieran haber recibido una puja.
  2. Auction Reduction Rate (Predicted Condition Negative Rate): porcentaje de subastas que el modelo está eliminando; es decir, el ahorro de recursos del servidor que cabe esperar.

Hemos creado un modelo capaz de eliminar un porcentaje de dos dígitos de subastas con una tasa de recuperación de al menos el 99 %. Se trata de un logro notable, ya que significa que podemos identificar una gran cantidad de subastas improductivas antes de que se produzcan con una repercusión casi nula para nuestros partners.

Ahora, a medida que pasa el tiempo y en función del mercado, las características de los datos pueden cambiar rápidamente. Lo que resulta valioso ahora puede dejar de serlo mañana, y viceversa. Los ingenieros de aprendizaje automático deben definir siempre la frecuencia de repetición de entrenamiento, especialmente si este se efectúa por lotes en servidores sin conexión a Internet. Si la capacidad predictiva de un modelo disminuye con rapidez; recomendamos eliminar aquellas características que son sensibles a los cambios de mercado.

Puesta en marcha

Hemos creado un modelo con una gran capacidad predictiva y que se generaliza bien con respecto a los datos. Estamos muy cerca de ponerlo en marcha en el sistema de producción.

El primer paso para hacerlo es crear un pipeline con el que recopilar datos de entrenamiento no sesgados. Cuando el modelo esté en producción, queremos evitar que sesgue los datos de entrenamiento (es decir, que se produzcan suposiciones erróneas), por lo que estos datos deben ser independientes de los efectos del modelo. En el proyecto de Supply Traffic Filter, el resultado de las subastas dependerá de la predicción una vez que el modelo empiece a filtrar subastas. Para suprimir el sesgo de entrenamiento, hemos creado un canal independiente que omite nuestro proceso de filtrado. Las subastas que lo omiten se usan para entrenar nuevos modelos futuros.

Por último, tenemos que supervisar el rendimiento del modelo en tiempo real. Un evento repentino puede desencadenar, por ejemplo, un cambio en el mercado. Cuando esto ocurre, puede que tenga que implementarse un nuevo modelo con poco preaviso. Index Exchange utiliza el tráfico de subasta omitido para supervisar el rendimiento del modelo en tiempo real. Esto nos permite controlar la degradación del modelo y adoptar medidas inmediatas si percibimos un comportamiento inesperado o problemático.

Un gráfico que muestra el proceso de subasta de solicitudes de anuncios mediante el uso de Machine Learning.

Conclusión

¡Enhorabuena, ya está en marcha!

Aunque conlleva mucho trabajo, con el proceso de desarrollo de aprendizaje automático correcto, muchos usuarios pueden utilizar sus datos en su beneficio de formas nuevas. El aprendizaje automático es y seguirá siendo una prioridad para los ingenieros de Index Exchange, y animamos a quienes hayan dedicado parte de su tiempo a leer este blog a que pongan en marcha sus propios proyectos de aprendizaje automático.

Leave a Reply

Your email address will not be published. Required fields are marked *