Hola a todos Mi equipo en Tinkoff est谩 construyendo sistemas de recomendaci贸n. Si est谩 satisfecho con su reembolso mensual, entonces este es nuestro negocio. Tambi茅n creamos un sistema de recomendaci贸n de ofertas especiales de socios y participamos en colecciones individuales de Historias en la aplicaci贸n Tinkoff. Y nos encanta participar en concursos de aprendizaje autom谩tico para mantenernos en buena forma.
En Boosters.pro durante dos meses, del 18 de febrero al 18 de abril, se realiz贸 un concurso para construir un sistema de recomendaci贸n sobre datos reales de uno de los cines en l铆nea m谩s grandes de Rusia, Okko . Los organizadores ten铆an como objetivo mejorar el sistema de recomendaci贸n existente. Por el momento, la competencia est谩 disponible en modo sandbox , en el que puede probar sus enfoques y perfeccionar sus habilidades en la construcci贸n de sistemas de recomendaci贸n.

Descripci贸n de datos
El acceso al contenido en Okko se realiza a trav茅s de la aplicaci贸n en el televisor o tel茅fono inteligente, o mediante la interfaz web. El contenido se puede alquilar庐, comprar (P) o ver por suscripci贸n (S). El organizador de la competencia proporcion贸 datos sobre las vistas durante N d铆as (N> 60), adem谩s, la informaci贸n sobre las calificaciones y los marcadores agregados estaba disponible. Vale la pena tener en cuenta un detalle importante, si el usuario vio una pel铆cula varias veces o varios episodios de la serie, solo se registrar谩 en la tableta la fecha de la 煤ltima transacci贸n y el tiempo total empleado por unidad de contenido.

Se proporcionaron alrededor de 10 millones de transacciones, 450 mil calificaciones y 950 mil marcadores para 500 mil usuarios.

La muestra contiene no solo usuarios activos, sino tambi茅n usuarios que han visto un par de pel铆culas durante todo el per铆odo.
El cat谩logo de Okko contiene tres tipos de contenido: pel铆culas (pel铆culas), series (series) y pel铆culas en serie (pel铆cula multiparte), un total de 10.200 objetos. Para cada objeto, estaba disponible un conjunto de atributos y atributos an贸nimos (caracter铆stica_1, ..., caracter铆stica_5), disponibilidad de suscripci贸n, alquiler o compra y duraci贸n.

Variable objetivo y m茅trica
La tarea requer铆a predecir una gran cantidad de contenido que el usuario consumir铆a en los pr贸ximos 60 d铆as. Se cree que un usuario consumir谩 contenido si 茅l:
- C贸mpralo o alquilalo
- Mira m谩s de la mitad de la pel铆cula por suscripci贸n
- Mire m谩s de un tercio de la serie por suscripci贸n

- r_u (i) : si el usuario u consumi贸 el contenido predicho para 茅l en el lugar i (1 o 0)
- n_u : la cantidad de elementos que el usuario consumi贸 durante el per铆odo de prueba
- U : muchos usuarios de prueba
Puede obtener m谩s informaci贸n sobre las m茅tricas para la tarea de clasificaci贸n en esta publicaci贸n .
La mayor铆a de los usuarios ven pel铆culas hasta el final, por lo que la proporci贸n de la clase positiva en las transacciones es del 65%. La calidad del algoritmo se evalu贸 utilizando un subconjunto de 50 mil usuarios de la muestra presentada.
Calificaci贸n agregada
La decisi贸n de la competencia comenz贸 con la agregaci贸n de todas las interacciones de los usuarios con el contenido en una sola escala de calificaci贸n. Se supon铆a que si el usuario compraba el contenido, esto significaba el m谩ximo inter茅s. La pel铆cula es m谩s corta que la serie, por lo tanto, para ver la serie en su conjunto, debe dar m谩s puntos. Como resultado, la calificaci贸n agregada se form贸 de acuerdo con las siguientes reglas:
- Compartir pel铆cula * 5
- Programa de TV Compartir * 10
- [Marcando la pel铆cula] * 0.5
- [Marcando la serie] * 1.5
- [Compra / alquiler de contenido] * 15
- Calificaci贸n + 2
Modelo de primer nivel
Los organizadores proporcionaron una soluci贸n b谩sica basada en el filtrado colaborativo con escalas Tf-IDF. Al agregar todo tipo de interacciones a la calificaci贸n agregada, aumentar el n煤mero de vecinos m谩s cercanos de 20 a 150 y reemplazar Tf-IDF con pesos BM25 elimin贸 aproximadamente 0.03 en LB (Tabla de l铆deres).
Inspirado por la publicaci贸n del equipo que ocup贸 el tercer lugar en el RecSys Challenge 2018 , eleg铆 el modelo LightFM con p茅rdida WARP como el segundo modelo base. LightFM con hiperpar谩metros seleccionados: learning_rate, no_components, item_alpha, user_alpha, max_sampled dio 0.033 en LB.

La validaci贸n del modelo se realiz贸 a tiempo: el primer 80% de las interacciones cayeron en el tren, el 20% restante en la validaci贸n. Para una presentaci贸n sobre LB, se entren贸 un modelo en todo el conjunto de datos con par谩metros seleccionados para la validaci贸n.
Mezcla de modelos
En la etapa anterior, result贸 construir dos l铆neas de base s贸lidas, adem谩s, sus recomendaciones se cruzaron en promedio para el 60 por ciento del contenido recomendado. Si hay dos modelos fuertes y al mismo tiempo d茅bilmente correlacionados, entonces su combinaci贸n es un paso razonable.

En este caso, los puntajes del modelo pertenecen a diferentes distribuciones y tienen diferentes escalas, por lo que se decidi贸 utilizar la suma de los rangos para combinar los dos modelos. La combinaci贸n de modelos produjo 0.0347 en LB.

Modelo de segundo nivel
Los sistemas de recomendaci贸n a menudo usan un enfoque de dos niveles para construir modelos: primero, los candidatos principales se seleccionan mediante un modelo simple de primer nivel, luego el superior seleccionado se vuelve a clasificar por un modelo m谩s complejo con la adici贸n de una gran cantidad de caracter铆sticas.

El conjunto de datos se dividi贸 en el tiempo en las partes de capacitaci贸n y validaci贸n. Se recopil贸 una selecci贸n de recomendaciones para la parte de validaci贸n para cada usuario, que consiste en combinar las predicciones top200 de modelos de primer nivel con la excepci贸n de las pel铆culas ya vistas. Adem谩s, se requer铆a ense帽ar al modelo a reorganizar la parte superior resultante para cada usuario. El problema fue formulado en t茅rminos de clasificaci贸n binaria. Un par (usuario, contenido) pertenec铆a a la clase positiva solo si el usuario consumi贸 el contenido durante el per铆odo de validaci贸n. Como modelo de segundo nivel, se utiliz贸 el aumento de gradiente, es decir, el paquete LightGBM.
Signos
Los modelos de primer nivel para pares (usuario, contenido) eval煤an la relevancia en forma de velocidad, clasificando en orden decreciente para obtener un rango. El modelo entrenado en los signos de rango y velocidad, junto con los signos del cat谩logo de contenido, noque贸 0.0359 en LB.
A partir de la forma de distribuci贸n de la primera de las caracter铆sticas an贸nimas, se concluy贸 que es la fecha en que apareci贸 la pel铆cula en el cat谩logo, por lo tanto, el modelo fue fuertemente reentrenado para esta caracter铆stica con el esquema de validaci贸n seleccionado. La eliminaci贸n de una caracter铆stica de la muestra dio un aumento en LB a 0.0367
El modelo LightFM, adem谩s de predecir la relevancia del contenido para el usuario, devuelve dos vectores: sesgo del elemento y sesgo del usuario, que se correlacionan con el grado de popularidad del contenido y el n煤mero de pel铆culas vistas por el usuario, respectivamente. Agregar signos aument贸 la velocidad en LB a 0.0388 .
Puede asignar un rango para un par (usuario, contenido) antes o despu茅s de eliminar pel铆culas ya vistas. Los cambios en el m茅todo a este 煤ltimo proporcionaron un aumento en LB a 0.0395 .

Casi nadie vio una parte significativa del cat谩logo de pel铆culas. El contenido que vieron menos de 100 usuarios se elimin贸 de la muestra para capacitar a un modelo de segundo nivel, lo que redujo el cat谩logo a la mitad. La eliminaci贸n de contenido impopular hizo que la selecci贸n de los modelos de primer nivel fuera m谩s relevante y solo despu茅s de eso el vector de usuarios de LightFM mejor贸 la velocidad de validaci贸n y aument贸 LB a 0.0429 .
Adem谩s, se agreg贸 una se帽al: el usuario agreg贸 el marcador al libro, pero no mir贸 el per铆odo del tren, lo que aument贸 la velocidad en LB a 0.0447 . Adem谩s, se agregaron signos sobre la fecha de la primera y 煤ltima transacci贸n, aumentaron la velocidad a 0.0457 en LB.

Consideraremos este modelo final. Los m谩s significativos fueron los signos de los modelos de primer nivel y los signos an贸nimos del cat谩logo de contenido.
Las siguientes caracter铆sticas no aumentaron al modelo final:
- cantidad de marcadores + parte del contenido visto de los marcadores - 0.0453 LB
- la cantidad de pel铆culas compradas 0.0451 LB
Pero cuando se mezclaron con el modelo final, noquearon 0.0465 en LB. Inspirados por el resultado de la mezcla, los siguientes modelos fueron entrenados por separado:
- con diferentes fracciones de la muestra de entrenamiento para el modelo de primer nivel. La divisi贸n del 90% / 10% dio un aumento, en contraste con la divisi贸n del 95% / 5% y 70% / 30%.
- con un m茅todo de agregaci贸n de calificaci贸n modificado.
- con la adici贸n de pel铆culas impopulares al conjunto de entrenamiento para un modelo de segundo nivel. Para cada unidad de contenido, se compil贸 una compilaci贸n de 1000 usuarios.
La combinaci贸n final de 6 modelos permiti贸 alcanzar 0.0469678 en LB, que correspond铆a al quinto lugar.

En la parte privada, ocurri贸 una sacudida, que arroj贸 la soluci贸n al segundo lugar. Creo que la soluci贸n result贸 ser sostenible gracias a la combinaci贸n de una gran cantidad de modelos.

No ingresado
En el proceso de resolver la competencia, se generaron muchos signos que parec铆an entrar definitivamente, pero lamentablemente. Se帽ales y enfoques de mayor confianza:
- Atributos de contenido an贸nimo. No se sab铆a con certeza qu茅 conten铆an, pero todos los participantes en el concurso cre铆an que conten铆an informaci贸n sobre actores, directores, compositores ... En mi decisi贸n, trat茅 de agregarlos en varios formatos: los m谩s populares como caracteres binarios, trazaron la matriz de contenido atributos usando LightFM y BigARTM, y luego extraiga los vectores y agr茅guelos al modelo de segundo nivel.
- Vectores de contenido del modelo LigthFM en el modelo de segundo nivel.
- Atributos de los dispositivos desde los cuales el usuario vio el contenido.
- Bajar el peso del contenido popular para un modelo de segundo nivel.
- La proporci贸n de pel铆culas / programas de televisi贸n en relaci贸n con el n煤mero total de contenido visto.
- Clasificaci贸n de m茅tricas de CatBoost.
Datos interesantes sobre la competencia.
- La soluci贸n Top1 result贸 ser peor que el modelo de producto okko 0.048 vs 0.062. Debe tenerse en cuenta que el modelo del producto ya se lanz贸 al momento del muestreo.
- Aproximadamente una semana despu茅s del comienzo de la competencia, se modific贸 el conjunto de datos, para aquellos que participaron desde el principio agregaron 30 presentaciones, que se quemaron inesperadamente despu茅s de que los equipos se fusionaron.
- La validaci贸n no siempre se correlacion贸 con LB, lo que indicaba una posible sacudida.
C贸digo de decisi贸n
La soluci贸n est谩 disponible en github en forma de dos computadoras port谩tiles jupyter: agregaci贸n de clasificaci贸n, modelos de capacitaci贸n del primer y segundo nivel.
Una soluci贸n de tercer lugar tambi茅n est谩 disponible en github .
La decisi贸n de los organizadores.
En lugar de mil palabras, adjunto las principales caracter铆sticas de los organizadores.

Adem谩s, los chicos de Okko publicaron un art铆culo en el que hablan sobre las etapas de desarrollo de su motor de recomendaci贸n.
PD: aqu铆 puede ver el rendimiento en Data Fest 6 sobre esta soluci贸n al problema.