Un Profundo Resumen de Algoritmos de Recomendación con Estudio de Caso de Netflix y Tecnología de Aprendizaje Profundo de NVIDIA

¿Qué son los Algoritmos de Recomendación?

Los motores de recomendación son la secreta tras cada transacción en la Internet, ya sea en Amazon, Netflix, Flipkart, YouTube, TikTok, incluso en LinkedIn, Facebook, X(Twitter), Snapchat, Medium, Substack, HackerNoon… todos estos sitios y casi cada sitio de curación de contenidos o de mercado de productos en la Internet generan grandes ingresos con algoritmos de recomendación.

Básicamente, un algoritmo de recomendación construye un modelo de tus preferencias, cosas que no te gustan, tus favoritos, cosas que prefieres, géneros que prefieres y elementos que prefieres, y cuando se hace una transacción en el sitio, prácticamente casi leen tu mente y predicen el próximo producto que es más probable que compres. Algunos de los algoritmos de recomendación de YouTube y TikTok son tan precisos que pueden mantener a los usuarios atrapados por horas. Me sorprendería si incluso un solo lector no reportara una adicción a YouTube que surgió simplemente desde la navegación y haciendo clics/taps por unos diez minutos.

Esto lleva a mejores engagement del cliente, una mejor experiencia del cliente, incremento de ingresos y más dinero para la plataforma misma. La adicción se basa en la precisión y el asombroso rendimiento de estos algoritmos ultra-optimizados.

Es así como estas gigantes construyen su audiencia.

Los visitantes mensuales de YouTube, TikTok, Instagram y Facebook son (fuente):

  • Facebook: 2,9 Billones
  • YouTube: 2,2 Billones
  • Instagram: 1.4 Billón
  • TikTok: 1 Billón

Y el secreto de su éxito: algoritmos de recomendación fantásticos.

Tipos de Algoritmos de Recomendación

Filtrado Colaborativo (Basado en Usuarios)

El filtrado colaborativo basado en usuarios es una técnica de recomendación que asume que los usuarios con preferencias similares tendrán gustos similares. Utiliza datos de interacción usuario-elemento para identificar similitudes entre usuarios, a menudo empleando medidas como la similitud por coseno o la correlación de Pearson. El método predice las calificaciones o preferencias de un usuario basándose en las calificaciones dadas por usuarios similares.

Sin embargo, puede enfrentar desafíos, como el problema de “cold-start” para los usuarios nuevos que todavía no han interactuado con el sistema, y pueden surgir problemas de escalabilidad al manejar un gran número de usuarios.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def user_based_cf(ratings_matrix, user_id, k=5):
    similarities = cosine_similarity(ratings_matrix)
    user_similarities = similarities[user_id]
    similar_users = np.argsort(user_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[1])
    for similar_user in similar_users:
        recommendations += ratings_matrix[similar_user]
    
    return recommendations / k

  • Usa la similitud por coseno para calcular las similitudes entre usuarios
  • Encuentra los k usuarios más similares al usuario objetivo
  • Agrega las calificaciones de los usuarios similares para generar recomendaciones
  • Devuelve la calificación promedio de cada elemento de los usuarios similares
  • Implementación simple que puede modificarse o ampliarse fácilmente

Filtrado Colaborativo (Basado en Elementos)

El filtrado colaborativo basado en elementos supone que los usuarios preferirán elementos similares a aquellos que han disfrutado en el pasado. Calcula la similitud entre los elementos basándonos en las calificaciones de los usuarios o las interacciones. Esta aproximación es a menudo más escalable que el filtrado colaborativo basado en usuarios, particularmente cuando hay muchos usuarios y menos elementos. Permite la pre-computación de las similitudes entre elementos, lo que puede hacer que las recomendaciones en tiempo real sean más rápidas.

Mientras que maneja mejor a los nuevos usuarios que los métodos basados en usuarios, puede luchar con los nuevos elementos que carecen de calificaciones suficientes. Además, está menos afectado por cambios en las preferencias de los usuarios con el tiempo.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def item_based_cf(ratings_matrix, item_id, k=5):
    similarities = cosine_similarity(ratings_matrix.T)
    item_similarities = similarities[item_id]
    similar_items = np.argsort(item_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[0])
    for similar_item in similar_items:
        recommendations += ratings_matrix[:, similar_item]
    
    return recommendations / k

  • Transpone la matriz de calificaciones para calcular las similitudes entre elementos
  • Encuentra los k elementos más similares al elemento objetivo
  • Agrega las calificaciones de los usuarios para los elementos similares
  • Devuelve la calificación media para cada usuario basada en elementos similares
  • Eficiente para sistemas con más usuarios que elementos

Factorización de matrices

La factorización de matrices descompone la matriz de interacción usuario-elemento en matrices de menor dimensión, asumiendo que las preferencias de los usuarios y las características de los elementos pueden ser representadas por factores latentes. Técnicas como la Descomposición en Valores Singulares (SVD) o el Método de Cuadraturas Alternas (ALS) se utilizan comúnmente para ese propósito.

Este enfoque puede manejar eficientemente grandes conjuntos de datos dispersos y a menudo proporciona una mejor precisión en comparación con los métodos de filtrado colaborativo basados en la memoria. Además, puede incorporar técnicas de regularización para evitar el sobreajuste, mejorando la generalización del modelo para datos no vistos.

Python

 

import numpy as np

def matrix_factorization(R, P, Q, K, steps=5000, alpha=0.0002, beta=0.02):
    Q = Q.T
    for step in range(steps):
        for i in range(len(R)):
            for j in range(len(R[i])):
                if R[i][j] > 0:
                    eij = R[i][j] - np.dot(P[i,:], Q[:,j])
                    for k in range(K):
                        P[i][k] += alpha * (2 * eij * Q[k][j] - beta * P[i][k])
                        Q[k][j] += alpha * (2 * eij * P[i][k] - beta * Q[k][j])
        
        e = 0
        for i in range(len(R)):
            for j in range(len(R[i])):
                if R[i][j] > 0:
                    e += pow(R[i][j] - np.dot(P[i,:], Q[:,j]), 2)
                    for k in range(K):
                        e += (beta/2) * (pow(P[i][k], 2) + pow(Q[k][j], 2))
        if e < 0.001:
            break
    return P, Q.T

  • Implementa un algoritmo básico de factorización de matrices
  • Usa el descenso de gradiente para minimizar la diferencia entre las calificaciones predichas y reales
  • Incorpora regularización para evitar el sobreajuste
  • Actualiza iterativamente los factores latentes de usuario y artículo
  • Detiene cuando la diferencia cae por debajo de un umbral o se alcanzan los pasos máximos

Filtrado Basado en Contenido

El filtrado basado en contenido recomienda artículos basándose en sus características y las preferencias del usuario. Construye un perfil para cada usuario y artículo basado en sus características. 

Técnicas como TF-IDF (Frecuencia de Término-Frecuencia Inversa de Documento) para análisis de texto y similaridad coseno para coincidencia son empleadas comúnmente. Este enfoque aborda efectivamente el problema de los nuevos artículos, ya que no se basa en interacciones previas de los usuarios. 

Sin embargo, puede sufrir de especialización excesiva, resultando en una falta de diversidad en las recomendaciones. Además, la implementación efectiva requiere una buena ingeniería de características para asegurar que las características relevantes de los artículos se capturan con precisión.

Python

 

import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def content_based_filtering(item_descriptions, user_profile, k=5):
    vectorizer = TfidfVectorizer()
    item_vectors = vectorizer.fit_transform(item_descriptions)
    user_vector = vectorizer.transform([user_profile])
    
    similarities = cosine_similarity(user_vector, item_vectors)
    top_items = np.argsort(similarities[0])[::-1][:k]
    
    return top_items

  • Usa TF-IDF para convertir las descripciones de texto en vectores numéricos
  • Calcula la similaridad coseno entre el perfil del usuario y las descripciones de los artículos
  • Devuelve los k artículos más similares al perfil del usuario
  • Eficiente para sistemas con características de artículo bien definidas
  • Se puede ampliar fácilmente para incluir varios tipos de características

Sistema de Recomendación Híbrido

Los sistemas de recomendación híbridos combinan dos o más técnicas de recomendación para aprovechar sus respectivas fortalezas. Al integrar múltiples enfoques, los sistemas híbridos pueden mitigar las debilidades de los métodos individuales, como el problema de el inicio frío. Las combinaciones comunes incluyen filtrado colaborativo y basado en contenido. Se utilizan varios métodos para combinar estas técnicas, como ponderación, conmutación, mezclado o enfoques de nivel meta.

Los sistemas híbridos a menudo proporcionan recomendaciones más robustas y precisas en comparación con los sistemas de un solo enfoque. Sin embargo, la implementación efectiva requiere un ajuste cuidadoso para equilibrar los diferentes componentes y asegurar un rendimiento óptimo.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def hybrid_recommender(ratings_matrix, content_matrix, user_id, alpha=0.5, k=5):
    cf_similarities = cosine_similarity(ratings_matrix)
    content_similarities = cosine_similarity(content_matrix)
    
    hybrid_similarities = alpha * cf_similarities + (1 - alpha) * content_similarities
    user_similarities = hybrid_similarities[user_id]
    
    similar_users = np.argsort(user_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[1])
    for similar_user in similar_users:
        recommendations += ratings_matrix[similar_user]
    
    return recommendations / k

  • Combina filtrado colaborativo y similitudes basadas en contenido
  • Usa la suma ponderada con el parámetro alpha
  • Encuentra usuarios similares basándose en la similitud híbrida
  • Genera recomendaciones a partir de las calificaciones de los usuarios similares
  • Permite la fácil ajustación del equilibrio entre el FC y las técnicas basadas en contenido

Decomposición en Valores Singulares (SVD)

La Decomposición en Valores Singulares (SVD) es una técnica de factorización de matrices que descompone una matriz en tres componentes: U, Σ, y V^T. En esta descomposición, U y V representan los vectores singulares izquierdos y derechos respectivamente, mientras que Σ contiene los valores singulares.

La SVD reduce la dimensionalidad reteniendo solo los k valores singulares más altos, lo que ayuda a descubrir factores latentes en las interacciones usuario-ítem.

Este método es eficiente para manejar matrices grandes y dispersas comunes en sistemas de recomendación. Además, SVD ofrece un buen equilibrio entre precisión y eficiencia computacional, lo que lo hace una opción popular para generar recomendaciones.

Python

 

import numpy as np
from scipy.sparse.linalg import svds

def svd_recommender(ratings_matrix, k=5):
    U, s, Vt = svds(ratings_matrix, k=k)
    
    sigma = np.diag(s)
    predicted_ratings = np.dot(np.dot(U, sigma), Vt)
    
    return predicted_ratings

  • Usa la función svd de scipy para realizar SVD truncado
  • Reconstruye la matriz de calificaciones utilizando solo las k valores singulares más altos
  • Devuelve una matriz densa de calificaciones predichas para todos los pares de usuario-elemento
  • Eficiente para matrices de calificaciones grandes y dispersas
  • Puede integrarse fácilmente en un sistema de recomendación más grande

Factorización de tensor

La técnica de factorización de tensor se extiende de la factorización de matrices tradicional a datos multi-dimensionales, permitiendo la incorporación de información contextual como el tiempo y la ubicación en las recomendaciones. Utiliza métodos como la descomposición CP, que descompone un tensor en una suma de tensores componentes, capturando interacciones complejas entre múltiples factores. Esta aproximación requiere más datos y recursos computacionales en comparación con los métodos de dos dimensiones, ya que maneja arreglos de dimensiones superiores.

Sin embargo, puede proporcionar recomendaciones altamente personalizadas y contexto-sensibles al aprovechar las dimensiones adicionales de los datos. La complejidad aumentada de la estructura de datos permite una comprensión más detallada de las preferencias del usuario en diferentes contextos, mejorando la precisión general de las recomendaciones.

Python

 

import numpy as np
import tensorly as tl
from tensorly.decomposition import parafac

def tensor_factorization_recommender(tensor, rank=10):
    factors = parafac(tensor, rank=rank)
    reconstructed_tensor = tl.kruskal_to_tensor(factors)
    return reconstructed_tensor

  • Usa la biblioteca TensorLy para operaciones de tensor y descomposición
  • Aplica la descomposición PARAFAC al tensor de entrada.
  • Reconstruye el tensor a partir de los factores descompuestos
  • Devuelve el tensor reconstruido como recomendaciones
  • Puede manejar datos multi-dimensionales (por ejemplo, usuario-item-contexto)

Recomendación colaborativa neuronal

Los sistemas de recomendación basados en aprendizaje profundo combinan técnicas de filtrado colaborativo con redes neuronales. Este enfoque permite aprender interacciones no lineales entre usuarios y elementos, que las matrices de factorización tradicionales pueden tener dificultades para manejar. Los recomendadores basados en aprendizaje profundo generalmente utilizan capas de embeddings para representar a los usuarios y los elementos en un espacio denso, de bajo dimensión. Esto permite la fácil integración de características adicionales o información secundaria, como demografía del usuario o descripciones de los elementos, para mejorar el rendimiento de la recomendación.

Cuando se entrenan en conjuntos de datos grandes, los sistemas basados en aprendizaje profundo a menudo pueden superar a las matrices de factorización tradicionales en términos de precisión. Sin embargo, este avantageo viene a costa de una complejidad computacional aumentada y la necesidad de grandes cantidades de datos.

Los recomendadores basados en aprendizaje profundo también requieren un ajuste cuidadoso de los hiperparámetros para obtener resultados óptimos, lo que los hace más difíciles de implementar y mantener en comparación con métodos de filtrado colaborativo más simples.

Python

 

import tensorflow as tf
from tensorflow.keras.layers import Input, Embedding, Flatten, Dense, Concatenate
from tensorflow.keras.models import Model

def neural_collaborative_filtering(num_users, num_items, embedding_size=100):
    user_input = Input(shape=(1,), dtype='int32', name='user_input')
    item_input = Input(shape=(1,), dtype='int32', name='item_input')

    user_embedding = Embedding(num_users, embedding_size, name='user_embedding')(user_input)
    item_embedding = Embedding(num_items, embedding_size, name='item_embedding')(item_input)

    user_vecs = Flatten()(user_embedding)
    item_vecs = Flatten()(item_embedding)

    concat = Concatenate()([user_vecs, item_vecs])
    dense1 = Dense(128, activation='relu')(concat)
    dense2 = Dense(64, activation='relu')(dense1)
    output = Dense(1, activation='sigmoid')(dense2)

    model = Model(inputs=[user_input, item_input], outputs=output)
    model.compile(optimizer='adam', loss='binary_crossentropy')

    return model

  • Usa TensorFlow y Keras para construir un modelo de red neuronal
  • Crea capas de embeddings para usuarios y elementos
  • Concatena los embeddings de usuario y elemento
  • Agrega capas densas para aprender interacciones no lineales
  • Devuelve un modelo compilado listo para entrenar

El Estudio de Caso de Netflix

La jornada del algoritmo de recomendación de Netflix comenzó con CineMatch en 2000, un algoritmo de filtrado colaborativo que utilizaba las calificaciones de los miembros para estimar cuánto disfrutaría un usuario de una película. En 2006, se lanzó el Premio Netflix de 1 millón de dólares para desafiar a los científicos de datos para crear un modelo que superara a CineMatch en un 10%. El algoritmo ganador luego fue implementado en los datos internos de Netflix.

Pronto Netflix comenzó a acumular usuarios y hubo un cambio hacia los datos de streaming en 2007. Los espectadores se expusieron a algoritmos de aprendizaje por reforzamiento y algoritmos de agrupamiento que generaban sugerencias en tiempo real. A medida que se mejoró el algoritmo, cada vez más usuarios comenzaron a cambiar a Netflix simplemente debido a la eficacia del algoritmo de recomendación. Casi el 80% del contenido visto en Netflix es sugerido por el algoritmo de recomendación.

La compañía calcula que evita perder 1000 millones de dólares anuales en usuarios perdidos debido a la eficacia del algoritmo de recomendación.

Netflix utiliza técnicas de aprendizaje automático avanzadas y agrupamiento con un sistema de más de 1300 cluster basado en los metadatos de las películas que los usuarios ven. Esto les permite entregar sugerencias altamente optimizadas a sus usuarios. Pero Netflix pronto se enfrentó a un problema: la escala. Con el número de usuarios mensuales en miles de millones y el número total de usuarios superando los 200 millones, Netflix apostó todo por la computación en la nube.

En resumen, migraron toda la información a Amazon Web Services (AWS) a partir de 2008. El proceso de transición completo llevó varios años para ser finalizado y concluyó en 2015. Netflix ahorra supuestamente 1000 millones de dólares al año utilizando AWS. AWS también posee soporte integrado para aprendizaje automático, lo que Netflix utiliza al máximo. Supuestamente, Netflix utilizó más de 100,000 servidores AWS y 1,000 fragmentos de Kinesis para su audiencia global en 2022.

Desde 2015, Netflix también ha comenzado a ofrecer sus propias producciones, con miles de películas y series en una amplia variedad de formatos. Los algoritmos de recomendación de Netflix son altamente automatizados y realizan miles de pruebas A/B para usuarios cada día. La base de subscripciones de Netflix supera actualmente los 280 millones de usuarios.

Aunque Netflix ahora enfrenta competencia fuerte, especialmente de Disney+, que ha adquirido la franquicia de Marvel y Star Wars, la compañía tiene el objetivo de alcanzar 500 millones de suscriptores para 2025.

El año pasado, Netflix generó un ingreso de asombroso 31 mil millones de dólares.

Las partes principales de sus actuales sistemas de recomendación incluyen:

  1. Aprendizaje por reforzamiento: Dependiendo del comportamiento del usuario, Netflix cambia el contenido en pantalla en tiempo real. Así, el sistema se encuentra en un estado de constante flujo y cambia dependiendo de las interacciones del usuario.
  2. Redes neuronales profundas: Debido al tamaño de los datos (más de 15,000 series y casi 300 millones de usuarios), las técnicas de ML estándar no son fáciles de aplicar. Se utiliza ampliamente Aprendizaje Profundo, utilizando la tecnología de NVIDIA. (Véase al final de este artículo un programa que utiliza la última tecnología de aprendizaje profundo Merlin de NVIDIA).
  3. Factorización de matrices: Mediante la efectiva realización de la Descomposición en Valores Singulares (SVD) en matrices altamente dispersas y de gran escala, Netflix estima la importancia y la atracción de cada usuario para ciertos géneros y series.
  4. Aprendizaje de enjambre: Combina inteligentemente los algoritmos mencionados anteriormente para ajustar las recomendaciones en vivo, de manera que ningún dos usuarios ven la misma pantalla. Esta personalización es lo que genera grandes ingresos y mantiene a Netflix en la cima de todas las plataformas OTT.

Y todos estos modelos y optimizaciones se ejecutan cientos de miles de veces al día para cientos de miles de usuarios.

Tecnología de Aprendizaje Profundo Moderna

Con tales escalas, ninguna computadora única puede ejecutar sola estos modelos de ML. Es por eso que AWS ejecuta algoritmos de ML de manera distribuida sobre miles de máquinas.

NVIDIA ha recientemente lanzado varios productos para permitir la implementación de sistemas de recomendación a gran escala. Los clústers de GPU de NVIDIA también tienen un papel importante en la ejecución de algoritmos de ML. NVIDIA ha lanzado recientemente Merlin, un algoritmo de recomendación de alto rendimiento optimizado para ejecutarse en miles de máquinas y proporcionar resultados superiores. Probablemente esto solo fue una cuestión de tiempo, ya que las tamaños de los conjuntos de datos superaron con creces lo que podían procesar computadoras individuales.

Los sistemas de recomendación modernos utilizan profundamente el aprendizaje automático. Como parte del AI, los sistemas de computación GPU/TPU se utilizan ampliamente para acelerar los cálculos.

Algunas de las ofertas recientes de NVIDIA para Merlin incluyen:

Sistemas de Recomendación de NVIDIA

(De Anunciando NVIDIA Merlin: Una Plataforma de Aplicación para Sistemas de Recomendación Profundos)

Disponibles como proyectos de código abierto:

NVTabular

NVTabular es una biblioteca de ingeniería de características y preprocesado, diseñada para manipular con rapidez y facilidad conjuntos de datos a escala de terabytes. Es especialmente adecuada para sistemas recomendadores, que requieren una manera escalable para procesar información adicional, como metadatos de usuario y elementos y información contextual. Proporciona una abstracción de alto nivel para simplificar el código y acelera la computación en el GPU usando la biblioteca RAPIDS cuDF. Utilizando NVTabular, con solo 10-20 líneas de código de API de alto nivel, se puede configurar un pipeline de ingeniería de datos y alcanzar un aumento de velocidad de hasta 10 veces en comparación con los enfoques optimizados basados en CPU, sin experimentar limitaciones de tamaño de conjunto de datos, sin importar la capacidad de memoria del GPU/CPU.

HugeCTR

HugeCTR es una estructura GPU altamente eficiente diseñada para el entrenamiento de modelos recomendadores, que se enfoca tanto en alta performance como en facilidad de uso. Apoya tanto modelos profundos simples como también modelos híbridos de punta como W&D, Red Cross Deep y DeepFM. También estamos trabajando en habilitar DLRM con HugeCTR. Los detalles del modelo y los parámetros hiperópticos pueden especificarse fácilmente en formato JSON, permitiendo una rápida selección de una gama de modelos comunes.

TensorRT y Servidor Triton para Inferencia

NVIDIA TensorRT es un SDK para inferir redes neuronales de alto rendimiento. Incluye un optimizador y tiempo de ejecución para inferir redes neuronales que proporcionan bajo latency y alto throughput para aplicaciones de inferir. TensorRT puede aceptar redes neuronales entrenadas de todos los marcos de redes neuronales usando una interfaz común, el formato de intercambio de redes neuronales abierto (ONNX).

El Servidor de Inferencia NVIDIA Triton proporciona una solución de inferencia en la nube optimizada para las GPUs de NVIDIA. El servidor proporciona un servicio de inferir a través de un punto final HTTP o gRPC, lo que permite a los clientes remotos solicitar inferir cualquier modelo administrados por el servidor. El Servidor Triton puede servir modelos de recomendación de DL usando varios backends, incluyendo TensorFlow, PyTorch (TorchScript), tiempo de ejecución de ONNX y tiempo de ejecución de TensorRT.

Ejemplo de código

El siguiente ejemplo de código muestra un flujo de trabajo de preprocesamiento actual requerido para transformar el conjunto de datos de publicidad de Criteo de 1 TB, implementado con solo una docena de líneas de código usando NVTabular. Brevemente, las columnas numéricas y categóricas son especificadas. A continuación, definimos un flujo de trabajo de NVTabular y proporcionamos un conjunto de archivos de entrenamiento y validación. A continuación, se agregaron operaciones de preprocesamiento al flujo de trabajo y los datos se persistieron en disco. En comparación, los códigos de procesamiento personalizados, como el data util basado en NumPy en la implementación de DLRM de Facebook, pueden tener de 500 a 1000 líneas de código para el mismo pipeline.

Python

 

import nvtabular as nvt
import glob
 
cont_names = ["I"+str(x) for x in range(1, 14)] # specify continuous feature names
cat_names = ["C"+str(x) for x in range(1, 27)] # specify categorical feature names
label_names = ["label"] # specify target feature
columns = label_names + cat_names + cont_names # all feature names
 
# Inicializar Workflow
proc = nvt.Worfklow(cat_names=cat_names, cont_names=cont_names, label_name=label_names)
 
# Crear conjuntos de datos a partir de archivos de entrada
train_files = glob.glob("./dataset/train/*.parquet")
valid_files = glob.glob("./dataset/valid/*.parquet")
 
train_dataset = nvt.dataset(train_files, gpu_memory_frac=0.1)
valid_dataset = nvt.dataset(valid_files, gpu_memory_frac=0.1)
 
# Agregar operaciones de ingeniería de características y preprocesamiento a Workflow
proc.add_cont_feature([nvt.ops.ZeroFill(), nvt.ops.LogOp()])
proc.add_cont_preprocess(nvt.ops.Normalize())
proc.add_cat_preprocess(nvt.ops.Categorify(use_frequency=True, freq_threshold=15))
 
# Calcular estadísticas, transformar datos, exportar a disco
proc.apply(train_dataset, shuffle=True, output_path="./processed_data/train", num_out_files=len(train_files))
proc.apply(valid_dataset, shuffle=False, output_path="./processed_data/valid", num_out_files=len(valid_files))

La stack tecnológica completa puede encontrarse en el siguiente repositorio de GitHub:

Conclusión

Los sistemas de recomendación han evolucionado mucho.

De modelos estadísticos simples, filtrado basado en contenido y filtrado colaborativo, hemos llegado a redes neuronales profundas, nodos de HPC, factorización de matrices y su extensión a dimensiones mayores, factorización de tensores.

El sistema de recomendación más rentable para streaming es NVIDIA, y ejecutan sus algoritmos de aprendizaje automático enteros en la nube con AWS.

Los sistemas de recomendación se utilizan en todas partes, desde Google hasta Microsoft hasta Amazon hasta Flipkart. Es una parte crítica de la empresa moderna y no hay empresa en línea que no los use de alguna manera.

Hoy en día muchas empresas ofrecen sistemas de recomendación personalizados en línea.

Algunos de los principales son:

  1. Netflix: Conocido por su sofisticado motor de recomendación que analiza los hábitos de visualización de los usuarios para sugerir películas y series de TV.
  2. Amazon: Utiliza un poderoso motor de recomendación que sugiere productos basado en el historial de compras y el comportamiento de navegación de los usuarios.
  3. Spotify: Utiliza un sistema de recomendación que cura listas de reproducción de música y sugerencias de canciones basado en la historia de escucha del usuario.
  4. YouTube: Usa un motor de recomendación para sugerir videos basados en los patrones de visualización y preferencias de los usuarios.
  5. LinkedIn: Recomienda empleos, conexiones y contenido basado en los perfiles de los usuarios y su historial profesional.
  6. Zillow: Sugerencia de propiedades inmobiliarias personalizadas según las preferencias del usuario y su historial de búsqueda.
  7. Airbnb: Proporciona recomendaciones de alojamiento basadas en la historia de viajes y preferencias del usuario.
  8. Uber: Recomienda opciones de viaje basadas en las preferencias del usuario y viajes anteriores.
  9. IBM Corporation: Líder en el mercado de motores de recomendación, ofreciendo varias soluciones impulsadas por AI.
  10. Google LLC (Alphabet Inc.): Proporciona sistemas de recomendación en sus plataformas, utilizando análisis de datos extensivo.

Esperamos que un día su empresa esté entre esta lista de destacadas. ¡Y todo lo mejor para su empresa!

No importa en qué sector se encuentre, si tiene una presencia en línea, necesitará usar sistemas de recomendación de una forma u otra. Continúe explorando este segmento y, si tiene un excelente equipamiento, no dude en que será altamente demandado.

Nunca dejes de aprender. Sigue teniendo entusiasmo. Siempre crea en tu infinito potencial de crecimiento. Tu futuro está en tus manos. Házlo extraordinario!

Referencias

  1. Sistemas de recomendación – Wikipedia
  2. ¿Qué son los Sistemas de Recomendación? – GeeksforGeeks
  3. Tipos de Sistemas de Recomendación: Cómo funcionan y casos de uso (almabetter.com)
  4. Sistemas de Recomendación y Aprendizaje Automático (itransition.com)
  5. Sistemas de Recomendación en Python 101 (kaggle.com)
  6. Algoritmos de Sistemas de Recomendación: Una Vista General – KDnuggets

Source:
https://dzone.com/articles/a-deep-dive-into-recommendation-algorithms-with-ne