¿Cómo construir sistemas de recomendación usando LensKit?

Estás leyendo la publicación: ¿Cómo construir sistemas de recomendación usando LensKit?

Los sistemas de recomendación son una de las principales herramientas para atraer clientes en diferentes tipos de mercados. Una buena recomendación aumenta el compromiso del cliente y, por lo tanto, impacta positivamente en el negocio. Cuando se trata del desarrollo de sistemas de recomendación, lo encontramos muy complejo. LensKit es una biblioteca o conjunto de herramientas que nos puede facilitar la construcción de un buen sistema de recomendación de una manera muy fácil. En este artículo, analizaremos el kit de herramientas LensKit para crear sistemas de recomendación. Los puntos principales que se discutirán en este artículo se enumeran a continuación.

Tabla de contenido

  1. ¿Qué es LensKit?
  2. Creación de un sistema de recomendación
    1. Cargando conjunto de datos
    2. Importando los componentes
    3. Algoritmos de creación de instancias
    4. Funcionalizar recomendaciones
    5. Recomendación de montaje
    6. Evaluación de la recomendación

Empecemos por entender qué es LensKit.

¿Qué es LensKit?

LensKit es una biblioteca que incluye una variedad de herramientas para construir y practicar sistemas de recomendación. Es el sucesor del juego de herramientas LensKit para Python basado en Java. Usando esta biblioteca de python, podemos utilizarla para entrenar, ejecutar y evaluar los algoritmos de recomendación. Una de las cosas más importantes sobre la construcción de esta biblioteca es proporcionar una forma flexible de investigación en el campo de los sistemas de recomendación.

LensKit tiene una variedad de componentes e interfaces que se pueden utilizar para diseñar e implementar un nuevo algoritmo. Tiene herramientas para puntuar elementos que pueden considerarse como una herramienta base para cualquier sistema de recomendación mediante el cual podemos puntuar los elementos o elegir el mejor recomendador.

También tiene facilidades para predecir calificaciones. Las calificaciones de predicción se pueden considerar como puntajes que dependen de las escalas de calificación que queremos usar. Es una representación de las predicciones de calificación para los usuarios. Usando la interfaz de Recomendador de artículos de esta herramienta, podemos proporcionar nuestras mejores recomendaciones. La siguiente imagen se puede considerar como el diagrama de flujo de trabajo de los diferentes componentes de este conjunto de herramientas.

🔥 Recomendado:  Cómo solucionar el error No se puede conectar a la App Store en el iPhone 12

En el diagrama de flujo de trabajo, podemos ver que el predictor de calificaciones y el recomendador de elementos generan sus respectivas puntuaciones de resultados utilizando el marcador de elementos.

Podemos instalar esta biblioteca en nuestro entorno usando pip y las siguientes líneas de códigos.

%pip instalar LensKit

O podemos instalarlo directamente usando el comando git como,

pip instalar git+https://github.com/LensKit/lkpy

Después de instalarlo, estamos listos para usarlo. Veamos cómo podemos hacer esto.

Creación de un sistema de recomendación

En este artículo, vamos a utilizar el kit de herramientas LensKit para la evaluación de nDCG. nDCG significa ganancia acumulada descontada normalizada que es una medida de la calidad de la clasificación. Usando esto podemos medir la efectividad del algoritmo de recomendación. Este conjunto de herramientas es compatible con el marco de datos de Pandas y aún proporciona algunos de los conjuntos de datos para practicar los sistemas de recomendación utilizando algunos de sus módulos. Una condición que debemos seguir es que necesitamos datos con nombres de variables esperados. Por ejemplo, los datos de calificación esperados pueden contener las siguientes columnas:

Estos datos también pueden contener diferentes columnas.

En uno de nuestros artículos, vimos el funcionamiento de la biblioteca sorpresa. Para verificar la compatibilidad de LensKit en este artículo, cargaremos los datos usando el kit de herramientas sorpresa y otros trabajos se realizarán usando el kit de herramientas LensKit.

Cargando conjunto de datos

Carguemos un conjunto de datos

importar sorpresa importar pandas como pd data = sorpresa.Dataset.load_builtin(‘ml-100k’) ddir = sorpresa.get_dataset_dir() r_cols = [‘user’, ‘item’, ‘rating’, ‘timestamp’]
calificaciones = pd.read_csv(f'{ddir}/ml-100k/ml-100k/u.data’, sep=’\t’, names=r_cols, encoding=’latin-1′)

🔥 Recomendado:  Probar y validar modelos y datos de aprendizaje automático con Deepchecks

Producción:

Aquí podemos ver el formato de nuestros datos que es similar al formato esperado del conjunto de datos de calificación donde podemos ver las columnas de usuario, elemento, calificación y marca de tiempo. Procedamos a los siguientes pasos.

Importando los componentes

desde LensKit importar lote, topn, util, topn desde LensKit importar crossfold como xf desde LensKit.algorithms importar Recomendador, als, item_knn como knn %matplotlib en línea

Algoritmos de creación de instancias

algo_ii = knn.ItemItem(20) algo_als = als.BiasedMF(50)

Funcionalizar recomendaciones

Después de definir los algoritmos, estamos listos para generar recomendaciones y medirlas. Usando este kit de herramientas también podemos evaluar la recomendación en el momento de la generación para guardar la memoria. Aquí primero generaremos el recomendador y luego lo evaluaremos.

Usando la siguiente función, podemos generar recomendaciones en configuraciones por lotes, lo que significa que esta función nos permitirá generar recomendaciones usando un algoritmo y parte de los datos de prueba y entrenamiento.

def eval(aname, algo, train, test): fittable = util.clone(algo) fittable = Recommender.adapt(fittable) fittable.fit(train) users = test.user.unique() recs = batch.recommend(fittable , usuarios, 100) recomendaciones[‘Algorithm’] = aname return recs

Recomendación de montaje

Después de definir esta función, podemos realizar la generación de recomendaciones haciendo un bucle de datos y algoritmo.

all_recs = []
prueba_datos = []
para entrenar, prueba en xf.partition_users(ratings[[‘user’, ‘item’, ‘rating’]], 5, xf.SampleFrac(0.2)): test_data.append(prueba) all_recs.append(eval(‘ItemItem’, algo_ii, tren, prueba)) all_recs.append(eval(‘ALS’, algo_als, tren, prueba ))

Producción:

Esta salida es similar a los procesos tradicionales de generación de sistemas de recomendación que tienen algunas advertencias sobre problemas de tiempo de ejecución debido a matrices grandes.

Evaluación de la recomendación

Ahora estamos listos para ver los resultados. Antes de mostrar los resultados, podemos concatenar los resultados en un marco de datos.

🔥 Recomendado:  ¿El trackpad de tu MacBook no hace clic? Aquí se explica cómo solucionarlo

all_recs = pd.concat(all_recs, ignore_index=True) all_recs.head()

Producción:

En la salida, podemos ver las puntuaciones de nuestros elementos con sus rangos y el algoritmo que se utiliza para generar el resultado.

Para un mejor análisis, también podemos concatenar todos los datos de prueba en un marco de datos.

test_data = pd.concat(test_data, ignore_index=True) test_data.head()

Producción:

Ahora, este kit de herramientas proporciona un módulo para analizar las recomendaciones generadas denominado RecListAnalysis. Usando este módulo podemos alinear nuestras pruebas y recomendaciones correctamente. Veamos cómo podemos usarlo para evaluar el nDCG.

rla = topn.RecListAnalysis() rla.add_metric(topn.ndcg) resultados = rla.compute(all_recs, test_data) resultados.head()

Producción:

Aquí, en la salida, podemos ver que tenemos valores para nDCG en formato de marco de datos y que se pueden evaluar usando diferentes métodos. Veamos qué algoritmo tiene la mayor cantidad de valores nDCG.

resultados.groupby(‘Algoritmo’).ndcg.mean()

Producción:

Visualicemos nuestra evaluación

resultados.groupby(‘Algoritmo’).ndcg.mean().plot.bar()

Producción:

Aquí tenemos nuestros resultados. Podemos ver que el mínimo cuadrado alternativo tiene valores nDCG más grandes.

Ultimas palabras

En este artículo, hemos discutido algunos de los detalles importantes sobre el kit de herramientas LensKit que está diseñado para crear y explorar sistemas de recomendación. Junto con esto, implementamos un proceso en el que usamos dos algoritmos para comparar los valores nDCG en el conjunto de datos de calificación de MovieLen.

Referencias