Competición VK Sup. Track ML. 4to lugar. ¿Cómo?

imagen

En este concurso, que se llevó a cabo como parte de la ronda de clasificación de VK up 2020 , seguimiento de ML , fue necesario predecir la proporción de audiencias potenciales que verían los anuncios mostrados en varias plataformas publicitarias un número específico de veces: 1,2,3 en el futuro.

Esta no fue una competencia clásica para enviar predicciones finales a datos de prueba conocidos, sino una predicción sobre datos completamente desconocidos enviados al modelo en Docker lanzado en el sitio de la competencia.

En general, tal solución iguala las posibilidades de los participantes y no permite que aquellos a quienes les gusta espiar en la prueba, enriquezcan el conjunto de datos de capacitación con ellos y ajusten el modelo a la distribución de datos de la prueba. Aquí todos estaban en igualdad de condiciones, ya que no está claro qué podría haber en los datos: datos "basura", valores atípicos esporádicos, delimitadores inválidos, etc. Pero todos estos matices al mismo tiempo nos hacen pensar en manejar excepciones.

En este concurso, obtuve un 4to lugar discreto y quiero decir cómo fue posible.

Resumen de datos


Los datos iniciales se presentaron de la siguiente forma:

  1. users.tsv – : , , . , , , . ( ), .
  2. history.tsv — "-", ( ) . , , .
  3. El archivo validate.tsv es un archivo de validación para capacitar al modelo, solo contenía datos sobre a qué intervalo de tiempo y a qué precio se mostró un anuncio para una audiencia específica (plataforma y usuario). Los usuarios y los sitios se dieron en forma de cadena del formulario (1,5,7,3,14,6).
  4. Archivo validate_answers.tsv : un archivo de respuesta consta de tres columnas: qué porcentaje (valores de 0 a 1), la audiencia parece clasificada 1, 2, 3 veces. En consecuencia, estas secuencias no están aumentando.

El propósito de la competencia : predecir tres conjuntos de valores para nuevos datos del futuro (en el formato de archivo validate.tsv ): qué proporción de la audiencia verá un anuncio 1.2, 3 veces.

Más detalles sobre la tarea en el sitio web de la competencia .

Predictores


Los predictores finales que utilicé son un conjunto de 2 complejos:

  • predictores basados ​​en el historial y su comparación con nuevos datos
  • predictores solo en datos del futuro

Entre el primer complejo, basado en el archivo de historial, se generaron estadísticas básicas para los pares agrupados de sitio de usuario y , posteriormente, su agregación al par de sitio de usuario en los archivos de validación y prueba. Esto fue seguido por la selección de predictores de diferentes maneras, tanto en base a las frecuencias de uso de predictores en las etapas de partición y uso en el modelo mismo, como en validaciones, de arriba a abajo y de abajo hacia arriba. A pesar de los diferentes esquemas de selección, en general todo se redujo a aproximadamente un conjunto de predictores y, como resultado, hubo siete de ellos.

La interpretación de los predictores del segundo complejo (también sorprendentemente había siete) es generalmente mucho más simple:

1. Delta- diferencia horaria. ¿Es lógico? Lógicamente: cuanto mayor es el intervalo, más probable es la vista. Por supuesto, no existe una dependencia directa, pero físicamente debería ser así; además, este es uno de los predictores más fuertes si los consideramos por separado.

2. Delta2 también es una diferencia horaria, pero se convierte por día (es decir, una división entera por 24). Es decir, convertimos una dependencia lineal en una por partes. La idea aquí es simple: no distinguimos entre horas, pero intervalos muy largos (días) establecerán su propia tendencia.

3. cpm - el precio en sí, de manera similar: cuanto más caro es el precio, más probabilidades hay de ver, nuevamente, por supuesto, no hay dependencia directa, pero en el "coqueteo" con otros predictores basados ​​en la historia, la dependencia se rastrea claramente.

4-7. Estos son el pecado y el costo de los tiempos de inicio y finalización de los anuncios, que también se traducen en la línea de tiempo de 24 horas. El uso de estas funciones, en contraste con el tiempo lineal, le permite tener en cuenta los intervalos de tiempo que pasan durante el día. El uso de estos predictores inmediatamente dio una mejora de 1,5 puntos porcentuales.

Métrica y respuesta


La métrica de relación de precisión de registro medio suavizado (en adelante SMLAR ) presentada por los organizadores .

imagen

Cuando la respuesta inicial se presenta en la proporción de la audiencia que vio el anuncio 1.2.3 veces, es decir, los valores en el rango [0.1].

Por cierto, el KDPV indica el comportamiento de esta métrica, o más bien, no toda la métrica, sino su parte ( MAE para el logaritmo del sesgo de las predicciones) para todas las combinaciones de la predicción y el verdadero valor en todo el rango [0,1].

Si observa cuidadosamente la fórmula de la métrica, entonces: por una parte, esta métrica corresponde aproximadamente a la media geométrica de las razones de las predicciones y al valor verdadero (con sesgo), que es claramente mejor que la métrica media aritmética (debido al resultado final más bajo). Por otro lado, si omitimos el exponente, que a valores bajos se comporta casi como el exponente de su grado, la métrica se transforma en MAE por el logaritmo de la respuesta con un desplazamiento. Por lo tanto, para construir modelos ideológicamente correctos, era necesario usar la respuesta inicial con un desplazamiento y la función de pérdida en la que hay un logaritmo en forma explícita, o, por el contrario, primero usar el logaritmo de respuesta de desplazamiento y una función de pérdida lineal ( MAE , eps) Pero, dado mi modelo (en el que la función de pérdida no se especifica explícitamente), elegí la transformación óptima de la respuesta basada en los resultados del modelo de validación.

Consideré las siguientes opciones de respuesta: acciones originales, logaritmo de acciones, transición a valores absolutos de la cantidad de usuarios, su logaritmo con diferentes compensaciones (aquí hubo un intento de usar una compensación unificada al pasar a valores absolutos, ya que la compensación de 0.005 se indica para las acciones, y la audiencia fue diferente, de 300 a 2500, por lo que el desplazamiento debe estar en el rango de 1 a 12, pero verifiqué solo los valores 1 y 10) y la raíz del valor absoluto de las personas que vieron el anuncio.

imagen

La imagen de arriba muestra los resultados de dos modelos que se entrenaron para una respuesta diferente: la audiencia inicial comparte y el número absoluto de participantes.

El diagrama superior muestra los valores ordenados de la respuesta verdadera (por fracciones de la primera exploración) y los valores pronosticados para ambos modelos. Está claro de inmediato que la mayoría de los valores de respuesta son bastante pequeños, por lo que el valor medio es de aproximadamente 5%, y esto es solo para el primer escaneo (para el segundo escaneo, la mediana ya es inferior al 1%, y para el tercer escaneo casi 0%, y para esta métrica pequeños valores y errores en son muy desagradables) También es claramente visible en este diagrama que el modelo por valores absolutos es cualitativamente mejor, la dispersión en las estimaciones es bastante mínima, y ​​a pesar del hecho de que las desviaciones casi no son visibles en el gráfico en valores pequeños, como resultado, son los errores en estos valores pequeños los que afectan fuertemente resultado final. Lo mismo se puede ver en KDPV, curvatura muy aguda a valores bajos, especialmente cerca de cero.

El diagrama promedio muestra el error de cada predicción ordenada; los errores fuertes en valores pequeños y su disminución con valores de respuesta crecientes son visibles.

En el diagrama inferior, el diagrama de la métrica dirigida directamente ya se está creando con el total acumulado para todos los valores ordenados. ¿Cuáles son las conclusiones de todo esto? La primera es que la respuesta seleccionada afecta fuertemente los resultados del modelo, pero más sobre eso a continuación, la segunda conclusión, presta especial atención a los valores pequeños, especialmente cerca de cero, es obvio que los modelos no siempre podrán predecir un cero puro, por lo tanto, las correcciones son necesarias. Y los errores en valores grandes no son tan importantes, en primer lugar, son relativamente pequeños, y en segundo lugar, el porcentaje de error en valores grandes será pequeño y, al mismo tiempo, hará una contribución total mínima a la métrica.

Como resultado, de acuerdo con los resultados de numerosos experimentos, el ganador con un margen claro fue la respuesta: la raíz de los valores absolutos de los usuarios. Al mismo tiempo, en diferentes predicciones (por 1, 2, 3 vistas), a veces también ganaron modelos con un logaritmo de valores absolutos, esto se debe a la clara prevalencia de 0 en las respuestas y, como resultado, el logaritmo con algún tipo de sesgo fue mejor. Pero si lo promedia, entonces una raíz simple sin ningún sesgo mostró buenos resultados estables, por lo que no quería complicar la decisión, sino detenerme en un método unificado simple, solo la raíz de las personas.

¿Cuál es la razón del hecho de que la transición a las personas mejora significativamente el resultado en relación con las acciones (casi 2 veces)?

Aparentemente, el hecho es que recurrir a las personas, multiplicando la participación por la audiencia, o lo mismo que dividir todos los predictores por la misma audiencia, entramos en la dimensión relativa a "una persona", y considerando que la base de mi modelo es la regresión, la estimación final es un tipo de estimación de probabilidad ponderada en relación con cada predictor. Es posible que si normalizamos solo una parte de los predictores a la audiencia, por ejemplo, de los predictores del primer grupo (la suma de todos los pares, por ejemplo), entonces esta normalización acercaría las dimensiones de todos los predictores a un solo sistema de informes (por persona) y la regresión final , su respuesta, no sería más que la suma ponderada promedio de las contribuciones de cada predictor (que caracteriza a una persona) a la probabilidad total de visualización, entonces quizás el resultado sería mejor.Pero en el momento de la decisión del concurso, no me acerqué desde este lado y trabajé exclusivamente con una respuesta transformada.

Modelo


De hecho, esta sección tuvo que ser más alta, porque fue debido a este modelo que tuvimos que seleccionar el tipo de respuesta y los predictores necesarios utilizados para ello (el modelo se ajustó a los datos) y, de una forma u otra, fue posible llegar a uno aceptable en diferentes predictores El resultado es aproximadamente el 15%. Pero quería que, en promedio, hubiera alguna justificación para elegir predictores específicos, por lo tanto, se seleccionaron combinaciones de predictores para la validación.

Utilicé un modelo de una familia de árboles de modelos de regresión, a saber, el modelo cubista (¡modelo de 1992!), Y su implementación en el paquete del mismo nombre en R. Más bien, el resultado final es la media geométrica de dos conjuntos de modelos, cada uno de los cuales consistía en 3 modelos separados, pero en cascada: la predicción del modelo anterior (para 1 vista) se usó como un predictor para el segundo y el tercer modelo, y la predicción final para la segunda vista como un predictor para el tercero modelo. Ambos pares de modelos diferían ligeramente en predictores y ajustes intermedios, y su media geométrica se utilizó sobre la base del sentido común (bueno, validaciones, con un curso público), y el significado es simple: como escribí anteriormente, se presta especial atención a las predicciones cero, y generalmente a un mínimo , y la media geométrica es exactamente lo que hace: desvanece la predicción si uno de ellos ya es cero (y esto es lógico si uno de los modelos mostró cero, así que déjalo,entonces "demoraremos" la predicción desde cero).

Y gracias a la cascada de modelos, el modelo indirectamente "entendió" (desde las regresiones) que cada respuesta subsiguiente "se aferra" a esta respuesta previamente predicha de la estimación previa, y los predictores restantes corrigen la respuesta, que no debería ser más que la anterior. También probé tres modelos separados que predecían respuestas individualmente. El resultado fue más débil debido a la abundancia de ceros en el segundo y tercer escaneos, la familia de regresiones no pudo llegar a 0, y cuando agregamos una "guía" a la estimación anterior, que ya es 0 o cercana, la familia de regresiones resultante también cae en la vecindad de este valores y ajusta solo la respuesta a la segunda y tercera visualización.

¿Qué tiene de bueno este modelo?

Cuando vi la tarea, inmediatamente recordé sobre este modelo, ya que en una de las competencias anteriores en un problema comparable (relaciones lineales y sus correcciones) también fue uno de los mejores, y en general, tenemos datos bastante lineales aquí, hay una relación obvia entre las cantidades vistas (el segundo es menor que el primero, el tercero es menor que el segundo), hay pocos datos: solo 1008 observaciones, hay un pequeño número de predictores, probablemente algún tipo de dependencias linealmente rotas. Además, este modelo es muy rápido, la construcción tomó varios segundos, por lo que fue conveniente para ella probar muchas hipótesis. Y, sin embargo, ella no tiene hiperparámetros (con la excepción de los vecinos (otro parámetro es un pronóstico correctivo), que no utilicé), en los que podría volver a entrenar.

¿Cómo es la predicción en este modelo para un árbol?
, , 100 ( , , 10-20 ), , , , : ( ), , ( , ) .

, , .

Ajustes


Además, se utilizaron pequeños ajustes de predicciones, a saber: al cambiar del número absoluto de personas a sus acciones, se produjeron situaciones de valores muy pequeños (positivo, un poco más de 0 o más de 1), y si en el caso de valores más de 1, su ajuste no jugó un papel más importante (probablemente hubo pocos vuelos de este tipo, y si lo fueron, entonces no fueron significativos), pero en el caso de valores pequeños, fue relativamente crítico. Mediante el razonamiento, se aceptó que si predigo, por ejemplo, 1 persona (o 0.5 personas, no se realizó el redondeo), entonces con una audiencia máxima de 2500 (esto es completamente desconocido con los datos conocidos en el tren, lo que realmente sucede en los datos de prueba), que es 0.0004 (por cierto, y en el tren, el valor mínimo es 0.0004),significa que en algún lugar cercano a este valor es necesario cambiar los valores más bajos a 0, y dado que mis modelos están construidos en una cadena, la construcción del siguiente modelo y sus predicciones dependen del cero pronosticado, etc. Influyó bastante.

No tenía mucho sentido seleccionar un umbral para la validación (porque el modelo se ajusta a estos datos de todos modos, y conozco la distribución), así que miré al público (para algunos valores seleccionados), pero al final me fui para uno de los tres modelos un hermoso umbral de redondeo de 0,0005, y para el segundo 0,0004 teórico.

El ajuste desde arriba fue más fácil, los valores superiores a 0,95 para pagar en 0,95, 0,95 se realizaron en función de la parte máxima de los datos de prueba utilizados con uncon el margen más grande (máximo 0,93 en el tren), este ajuste prácticamente no tuvo efecto en el público (aparentemente, las salidas individuales están en el público), se dejó exclusivamente para seguridad en privado. Y también se agregó una corrección relacionada con ceros, si la predicción es cero en el primer escaneo, a pesar de las predicciones de los modelos en el segundo y tercer escaneo, sus predicciones también van a 0, esto no afectó mucho, en algún lugar el segundo signo (el modelo es prácticamente siempre y así mismo (menos que el anterior y a cero) lo hizo), pero se fue por seguridad en privado.

resultados


Los resultados fueron muy dependientes del tipo de respuesta y de los predictores seleccionados, por ejemplo, incluso si predice fracciones, o incluso mejor que su logaritmo, podría seleccionar otros predictores y el resultado sería aproximadamente 16%, y si va a valores absolutos y también vuelve a seleccionar predictores, entonces todo comenzó alrededor del 15%, así que esta fue mi línea de base.

Y, por cierto, estos resultados ya fueron suficientes para mantenerse entre los cinco primeros, pero fue interesante "impulsar" más.

Y entonces, ¿qué mejoró drásticamente este 15%?

En general, solo agregar horas, solo horas (hora de inicio y finalización) arrojó inmediatamente 13.97%, cambiándolas a seno-cosenos mejoró a 13.44%, y luego mejorando a 13.25% fue redondeando los valores pequeños a cero, y la media geométrica el promedio de los dos modelos, es decir, ya estaba más ajustado para la prueba (público), y debido a esto, todavía me puse un poco por la borda con el público.

En esta competencia, fue necesario elegir una solución. Ahora, mirando en el LC, veo que mi solución elegida resultó ser casi la mejor también en privado (el lugar no ha cambiado) (el mejor privat es menos de 0.02 puntos porcentuales), pero si toma envíos en los que la respuesta no fue tan completa, entonces en privado fueron un poco peores: 13.6%, es decir, no hubo una fuerte capacitación para el público, pero este ajuste posterior tampoco jugó un papel muy importante.

Como resultado, el principal éxito de la reserva: predictores seleccionados bajo un modelo de respuesta cubista seleccionado , modelos Cascade (1-> 2-> 3) y predictores temporales s e ( sin , cos ).

Conclusión


A pesar de que los ganadores de los primeros cinco lugares utilizaron varios modelos, incluidos los modernos (1 lugar - SVR , 2 lugares - catboost , 3 lugares - red neuronal , 5 lugares - lightgbm , aunque estos ganadores tenían predictores mucho más complejos) , Ocupé el 4º lugar usando uno de los modelos clásicos más antiguos de 1992 (incluso las ideas SVR aparecieron más tarde) en predictores bastante simples y obvios, lo que una vez más confirma: no siempre es suficiente ejecutar predictores generados (estos enfoques fueron mucho más bajos en la calificación final, alrededor del 20%), el sentido común de los predictores, y la transformación de la respuesta, y la elección de la función de pérdida en los modelos (si los hay) juegan un papel importante aquí.

En general, la competencia resultó ser interesante y creativa, con conclusiones relevantes.

Espero que en la etapa final (a tiempo completo) de la competencia la tarea no sea menos interesante.

All Articles