La fase de recuperación corresponde a los distintos algoritmos de recomendación mencionados en artículos anteriores. Por ejemplo, según los datos, Spotify utiliza al menos tres algoritmos para generar su lista de canciones Discover Weekly, aclamada por la crítica, que incluyen:
Cada uno de estos algoritmos tiene sus propias características y, obviamente, el análisis de audio se puede utilizar para resolver Para resolver el problema del arranque en frío, la PNL puede aprender del conocimiento del dominio de los profesionales al procesar reseñas musicales. Operan de forma independiente y dan sus propios resultados. Debido a su independencia, el número de algoritmos se puede aumentar o disminuir y se puede cambiar iterativamente de forma independiente.
Este proceso filtrará cientos o miles de conjuntos candidatos de decenas de millones de entradas y luego seleccionará 30 canciones para cada usuario en la etapa de clasificación. Esta clasificación puede entenderse como una función. La entrada es el usuario, el elemento y el entorno. Genera una puntuación entre 0 y 1 y toma la canción con la puntuación más alta. Este proceso a menudo se denomina estimación de CTR.
Este artículo hablará sobre las formas comunes y las operaciones básicas de esta "función".
La más sencilla es la regresión logística, un modelo lineal generalizado.
Tome el retrato de usuario de un usuario (un vector), como [3, 1], empalme el retrato de un elemento, como [4, 0], y agregue un vector que represente el contexto [0, 1 , 1] obtiene [3, 1, 4, 0, 0]. Si el usuario ha estado expuesto al producto, la etiqueta es 1, lo que suma una muestra positiva. Al mismo tiempo, los productos que el usuario "se salta" o productos populares a los que el usuario no ha estado expuesto se pueden utilizar como muestras negativas, con una etiqueta de 0, y se ajusta a la siguiente ecuación:
donde está el vector de arriba, cada elemento de x Peso correspondiente, intersección. La función de pérdida es:
donde la etiqueta0 o 1 de la muestra es un número entre 0 y 1 predicho por el modelo.
Al reducir esta función de pérdida para ajustarse a las muestras de entrenamiento, se completa el entrenamiento del modelo y el modelo predice los nuevos datos. Esta es la finalización de la puntuación. En referencia a LogisticRegression de sklearn, el proceso de capacitación es fácil de completar.
El LR tradicional solo puede procesar grandes cantidades de datos fuera de línea en lotes y no puede manejar de manera efectiva flujos de datos en línea a gran escala. Las actualizaciones del modelo pueden tardar un día o más, lo que no es lo suficientemente oportuno. En 2013, Google propuso Follow Regularized Leadership (FTRL), un algoritmo de regresión logística en línea. Este método modifica la función objetivo de la regresión logística, junto con varias optimizaciones de ingeniería del sistema, de modo que los parámetros del modelo puedan actualizarse dinámicamente en cada punto de datos en línea.
Puedes encontrar muchas implementaciones de código abierto de FTRL en Internet, como libftrl-python.
FM y FFM son las abreviaturas de máquina de factorización y máquina de factorización con reconocimiento de campo, respectivamente.
Como modelo lineal generalizado, LR tiene dificultades para lidiar con la relación no lineal entre vectores de características y etiquetas. En este momento, es necesario combinar funciones, como utilizar un modelo lineal para predecir el área de varios rectángulos aproximados. Las dos características son el largo y el ancho y, obviamente, no se puede aprender un buen modelo. En este momento, agregar una nueva función puede obtener buenos resultados.
En aplicaciones prácticas, la dimensionalidad de los vectores de características es muy alta y es difícil ver directamente combinaciones tan significativas como en el ejemplo anterior. Considerando todos los pares de combinaciones de características, la ecuación de regresión lineal se convierte en:
Además de los pesos de las características originales, también se aprenden los pesos correspondientes a cada combinación de características. Para el entrenamiento de parámetros, necesitamos una gran cantidad de muestras distintas de cero. Sin embargo, debido a la escasez causada por la codificación one-hot y otras razones, este requisito no se puede cumplir, por lo que muestras de entrenamiento insuficientes provocarán inexactitud, lo que afectará la calidad del modelo.
La solución es utilizar la factorización matricial. En el sistema de recomendación, user_item_matrix se descompone y se aprende un vector de baja dimensión para que los usuarios y elementos se expresen. Entonces la situación aquí se puede comparar con esto. Todos los pesos de la combinación de características se expresan como una matriz de forma (i * i), de modo que los valores en la I-ésima fila y la J-ésima columna de esta matriz. se puede descomponer en una matriz de alta dimensión. Se obtiene un vector oculto de pesos para cada característica, que se puede obtener mediante producto escalar. En este momento, la ecuación lineal se convierte en:
El modelo anterior se llama máquina de factorización. Después de cierta transformación y procesamiento matemático, el modelo se puede entrenar y predecir bajo la complejidad, y es un modelo relativamente eficiente.
Basándose en FM, alguien propuso una máquina de factorización con reconocimiento de campo. Por ejemplo, hay más de 200 dimensiones en el vector de características para representar el país del usuario, como country.uk y country.us. , por lo que se puede considerar que estas más de 200 características pertenecen a un campo. La diferencia es que al aprender vectores latentes para características, se debe aprender un vector latente correspondiente para cada campo. El peso de la combinación de características se obtiene multiplicando el vector latente sobre el campo por el vector latente sobre el campo. La ecuación lineal se convierte en:
Este método es más eficiente y la complejidad del tiempo de predicción aumenta. Existe una implementación de la biblioteca de código abierto libffm disponible para su uso.
El método que utiliza Facebook para estimar la tasa de clics de los anuncios es utilizar un árbol de decisión de aumento de gradiente (GBDT) y un esquema LR
La idea es utilizar GBDT para realizar la función. vector ingresado originalmente a LR Filtre la combinación, genere un nuevo vector de características y envíelo a LR. Como se muestra en la figura:
Como modelo integrado, GBDT utilizará múltiples árboles de decisión y cada árbol se ajustará al residuo del árbol anterior para obtener un buen efecto de ajuste. Cuando se ingresa una muestra en un árbol, condiciona cada nodo a un nodo hoja, estableciendo el valor del nodo en 1 y el resto en 0. Por ejemplo, se utilizan tres árboles de decisión en el entrenamiento, cada árbol de decisión tiene cinco nodos de hoja y la muestra cae en el primer, segundo y tercer nodo de cada árbol de izquierda a derecha, luego los tres códigos one-hot son [1 , 0, 0, 0], [0, 1, 0, 0]. Empalmados como el vector de características transformado: [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0], ingrese el modelo LR para obtener la puntuación.
Este modelo ha mejorado significativamente la eficacia publicitaria de Facebook. En su artículo publicado, también se analizan varias prácticas y detalles de ingeniería, incluida la frecuencia de actualización de GBDT y LR, y la práctica de la tasa de muestreo de reducción, que vale la pena consultar. El paquete XGBoost de código abierto se puede utilizar para implementar GBDT.
Google utiliza un método llamado modelo de ancho-profundidad de Wide & Deep. Como se muestra en la siguiente figura:
La parte ancha es un modelo lineal generalizado, que agrega algunas combinaciones de características basadas en las características originales. La parte profunda es una red neuronal de avance que puede aprender un vector denso de baja dimensión a partir de algunas características escasas, además de información amplia y profunda, y aún usa Sigmond para la predicción de funciones, expresada como:
dónde está The Sigmond La función es el peso de la parte ancha, representa las características combinadas de la parte ancha, es la salida de la última capa de la red profunda y es la desviación del modelo lineal.
Junte los dos modelos para el entrenamiento conjunto (a diferencia del entrenamiento en conjunto, cada modelo debe entrenarse por separado y luego los resultados convergen) para compensar las deficiencias de cada uno (la ingeniería de funciones es difícil y puede ser una mala explicación). En comparación con el modo ancho puro, este modelo ha supuesto un aumento del 3,9% en los ingresos online de Google Play. Para la implementación, consulte el proyecto tensorflow/modelos.