
"世有伯乐 , 然后有千里马。千里马常有 而伯乐不常有。" 而伯乐不常有。 "韩愈《马说》
Página de inicio | Docios | Conjuntos de datos | Papel | Blogs | Modelos | 中文版
Recbole se desarrolla en base a Python y Pytorch para reproducir y desarrollar algoritmos de recomendación en un marco unificado, integral y eficiente para fines de investigación. Nuestra biblioteca incluye 91 algoritmos de recomendación, que cubren cuatro categorías principales:
Diseñamos un formato de archivo de datos unificado y flexible y proporcionamos el soporte para 43 conjuntos de datos de recomendaciones de referencia. Un usuario puede aplicar el script proporcionado para procesar la copia de datos original, o simplemente descargar los conjuntos de datos procesados por nuestro equipo.

Figura : arquitectura general recluta
Para apoyar el estudio de los avances recientes en los sistemas de recomendación, construimos una biblioteca de recomendación extendida RECBOLE2.0 que consta de 8 paquetes para temas y arquitecturas actualizadas (por ejemplo, Debiased, Equidad y GNNS).
Estructura de datos general y extensible. Diseñamos estructuras de datos generales y extensibles para unificar el formato y el uso de varios conjuntos de datos de recomendaciones.
Modelos de referencia y conjuntos de datos integrales. Implementamos 78 algoritmos de recomendación de uso común y proporcionamos las copias formateadas de 28 conjuntos de datos de recomendaciones.
Ejecución eficiente acelerado por GPU. Optimizamos la eficiencia de nuestra biblioteca con una serie de técnicas mejoradas orientadas al entorno de GPU.
Protocolos de evaluación extensos y estándar. Apoyamos una serie de protocolos o configuraciones de evaluación ampliamente adoptados para probar y comparar algoritmos de recomendación.
11/01/2023 : Lanzamos RECBOLE V1.2.0.
06/11/2022 : Lanzamos los hiperparámetros óptimos del modelo y sus rangos de ajuste.
10/05/2022 : Lanzamos RECBOLE V1.1.1.
28/06/2022 : Lanzamos RECBOLE2.0 con 8 paquetes que constan de 65 modelos de recién implementados .
25/02/2022 : Lanzamos RECBOLE v1.0.1.
17/09/2021 : Lanzamos RECBOLE v1.0.0.
22/03/2021 : Liberamos RECBOLE v0.2.1.
15/01/2021 : Lanzamos RECBOLE V0.2.0.
10/10/2020 : 我们发布了 RECBOLE 小白入门系列中文博客(持续更新中)。
12/06/2020 : Lanzamos RECBOLE V0.1.2.
29/11/2020 : Construimos experimentos preliminares para probar el costo de tiempo y memoria en tres conjuntos de datos de tamaño diferente y proporcionamos el resultado de la prueba como referencia.
03/11/2020 : Lanzamos la primera versión de RECBOLE V0.1.1 .
Para cumplir mejor con los requisitos del usuario y contribuir a la comunidad de investigación, presentamos una actualización significativa de la reconstrucción en la última versión, lo que lo hace más fácil de usar y fácil de usar como una biblioteca de referencia integral para la recomendación. Resumimos estas actualizaciones en " hacia una biblioteca de referencia más fácil de usar y fácil de usar para sistemas de recomendación " y enviamos el documento a Sigir 2023 . La principal contribución en esta actualización se introduce a continuación.
Nuestras extensiones se realizan en tres aspectos principales, a saber, los modelos/conjuntos de datos, el marco y las configuraciones. Además, proporcionamos una documentación más completa y preguntas frecuentes bien organizadas para el uso de nuestra biblioteca, lo que mejora en gran medida la experiencia del usuario. Más específicamente, los aspectos más destacados de esta actualización se resumen como:
Introducimos más operaciones y configuraciones para ayudar a evaluar el dominio de recomendación.
Mejoramos la facilidad de uso de nuestra biblioteca al proporcionar documentación más detallada y preguntas bien organizadas con frecuencia.
Señalamos varias pautas de desarrollo para los desarrolladores de la biblioteca de código abierto.
Estas extensiones hacen que sea mucho más fácil reproducir los resultados de referencia y mantenerse al día con los avances recientes en los sistemas de recomendación. La comparación Datailed entre esta actualización y las versiones anteriores se enumera a continuación.
| Aspecto | RECBOLE 1.0 | RECBOLE 2.0 | Esta actualización |
|---|---|---|---|
| Tareas de recomendación | 4 categorías | 3 temas y 5 paquetes | 4 categorías |
| Modelos y conjuntos de datos | 73 modelos y 28 conjuntos de datos | 65 modelos y 8 conjuntos de datos nuevos | 91 modelos y 43 conjuntos de datos |
| Estructura de datos | Conjunto de datos implementado y dataLoader | Orientado a las tareas | Módulo de datos compatible heredado de Pytorch |
| Características continuas | Incrustación de campo | Incrustación de campo | Incrustación de campo y discretización |
| Ejecución acelerada por GPU | Utilización de una sola GPU | Utilización de una sola GPU | Entrenamiento de precisión multi-GPU y mixta |
| Ajuste de hiper-parámetro | Búsqueda de gradiente en serie | Búsqueda de gradiente en serie | Tres métodos de búsqueda en serie y paralelo |
| Prueba de significancia | - | - | Interfaz disponible |
| Resultados de referencia | - | Parcialmente público (GNN y CDR) | Configuraciones de referencia en 82 modelos |
| Uso amistoso | Documentación | Documentación | Documentación mejorada y página de preguntas frecuentes |
RECBOLE funciona con los siguientes sistemas operativos:
RECBOLE requiere Python versión 3.7 o posterior.
RECBOLE requiere la versión de antorcha 1.7.0 o posterior. Si desea usar la reubicación con GPU, asegúrese de que la versión CUDA o CUDatoolkit sea 9.2 o posterior. Esto requiere la versión del controlador NVIDIA> = 396.26 (para Linux) o> = 397.44 (para Windows10).
conda install -c aibox recbolepip install recbolegit clone https://github.com/RUCAIBox/RecBole.git && cd RecBole
pip install -e . --verboseCon el código fuente, puede usar el script proporcionado para el uso inicial de nuestra biblioteca:
python run_recbole.pyEste script ejecutará el modelo BPR en el conjunto de datos ML-100K.
Por lo general, este ejemplo lleva menos de un minuto. Obtendremos alguna salida como:
INFO ml-100k
The number of users: 944
Average actions of users: 106.04453870625663
The number of items: 1683
Average actions of items: 59.45303210463734
The number of inters: 100000
The sparsity of the dataset: 93.70575143257098%
INFO Evaluation Settings:
Group by user_id
Ordering: {'strategy': 'shuffle'}
Splitting: {'strategy': 'by_ratio', 'ratios': [0.8, 0.1, 0.1]}
Negative Sampling: {'strategy': 'full', 'distribution': 'uniform'}
INFO BPRMF(
(user_embedding): Embedding(944, 64)
(item_embedding): Embedding(1683, 64)
(loss): BPRLoss()
)
Trainable parameters: 168128
INFO epoch 0 training [time: 0.27s, train loss: 27.7231]
INFO epoch 0 evaluating [time: 0.12s, valid_score: 0.021900]
INFO valid result:
recall@10: 0.0073 mrr@10: 0.0219 ndcg@10: 0.0093 hit@10: 0.0795 precision@10: 0.0088
...
INFO epoch 63 training [time: 0.19s, train loss: 4.7660]
INFO epoch 63 evaluating [time: 0.08s, valid_score: 0.394500]
INFO valid result:
recall@10: 0.2156 mrr@10: 0.3945 ndcg@10: 0.2332 hit@10: 0.7593 precision@10: 0.1591
INFO Finished training, best eval result in epoch 52
INFO Loading model structure and parameters from saved/***.pth
INFO best valid result:
recall@10: 0.2169 mrr@10: 0.4005 ndcg@10: 0.235 hit@10: 0.7582 precision@10: 0.1598
INFO test result:
recall@10: 0.2368 mrr@10: 0.4519 ndcg@10: 0.2768 hit@10: 0.7614 precision@10: 0.1901
Si desea cambiar los parámetros, como learning_rate , embedding_size , simplemente establezca los parámetros de comando adicionales que necesite:
python run_recbole.py --learning_rate=0.0001 --embedding_size=128Si desea cambiar los modelos, simplemente ejecute el script configurando parámetros de comando adicionales:
python run_recbole.py --model=[model_name] Abra RecBole/hyper.test y establezca varios hiperparámetros para buscar automáticamente en la lista de parámetros. Lo siguiente tiene dos formas de buscar el mejor hiperparámetro:
Aquí hay un ejemplo para hyper.test :
learning_rate loguniform -8, 0
embedding_size choice [64, 96 , 128]
train_batch_size choice [512, 1024, 2048]
mlp_hidden_size choice ['[64, 64, 64]','[128, 128]']
Establezca parámetros de comando de entrenamiento como necesite ejecutar:
python run_hyper.py --model=[model_name] --dataset=[data_name] --config_files=xxxx.yaml --params_file=hyper.test
e.g.
python run_hyper.py --model=BPR --dataset=ml-100k --config_files=test.yaml --params_file=hyper.test
Tenga en cuenta que --config_files=test.yaml es opcional, si no tiene ninguna configuración de configuración personalizada, este parámetro puede estar vacío.
Este procesamiento puede tardar mucho tiempo en generar el mejor hiperparámetro y resultado:
running parameters:
{'embedding_size': 64, 'learning_rate': 0.005947474154838498, 'mlp_hidden_size': '[64,64,64]', 'train_batch_size': 512}
0%| | 0/18 [00:00<?, ?trial/s, best loss=?]
Se puede encontrar más información sobre la sintonización de parámetros en nuestros documentos.
Construimos experimentos preliminares para probar el costo de tiempo y memoria en tres conjuntos de datos de diferentes tamaños (pequeño, mediano y grande). Para obtener información detallada, puede hacer clic en los siguientes enlaces.
Nota: Los resultados de nuestra prueba solo dieron el tiempo aproximado y el costo de la memoria de nuestras implementaciones en la biblioteca recbole (según nuestro servidor de máquinas). Cualquier comentario o sugerencia sobre las implementaciones y la prueba son bienvenidos. Seguiremos mejorando nuestras implementaciones y actualizaremos estos resultados de las pruebas.
| Lanzamientos | Fecha |
|---|---|
| V1.2.0 | 11/01/2023 |
| V1.1.1 | 10/05/2022 |
| v1.0.0 | 17/09/2021 |
| V0.2.0 | 15/01/2021 |
| V0.1.1 | 03/11/2020 |
Como marco único del procesamiento de datos, desarrollo del modelo, capacitación de algoritmos hasta evaluación científica, RECBole tiene un total de 11 proyectos de GitHub relacionados que incluyen
En la siguiente tabla, resumimos las contribuciones de código abierto de los proyectos de GitHub basados en la recolección.
| Proyectos | Estrellas | Horquilla | Asuntos | Solicitud de solicitud |
|---|---|---|---|---|
| Recibe | ||||
| RECBOLE2.0 | ||||
| Reembolso | ||||
| Reembolso | ||||
| Desbordantes | ||||
| Reembolso | ||||
| Reembolso-cdr | ||||
| Reembolso | ||||
| Reembolso-trm | ||||
| Reembolso-PJF | ||||
| Recsysdatasets |
Háganos saber si encuentra un error o tiene alguna sugerencia presentando un problema.
Agradecemos todas las contribuciones de correcciones de errores a nuevas características y extensiones.
Esperamos todas las contribuciones discutidas en el rastreador de problemas y pasando por relaciones públicas.
Agradecemos las perspicaces sugerencias de @tszumowski, @rowedenny, @deklanw et.al.
Agradecemos las buenas contribuciones a través de PRS de @Rowedenny, @deklanw et.al.
Si encuentra útil para su investigación o desarrollo, cite los siguientes documentos: RECBOLE [1.0], RECBOLE [2.0] y RECBOLE [1.2.0].
@inproceedings { recbole[1.0] ,
author = { Wayne Xin Zhao and Shanlei Mu and Yupeng Hou and Zihan Lin and Yushuo Chen and Xingyu Pan and Kaiyuan Li and Yujie Lu and Hui Wang and Changxin Tian and Yingqian Min and Zhichao Feng and Xinyan Fan and Xu Chen and Pengfei Wang and Wendi Ji and Yaliang Li and Xiaoling Wang and Ji{-}Rong Wen } ,
title = { RecBole: Towards a Unified, Comprehensive and Efficient Framework for Recommendation Algorithms } ,
booktitle = { {CIKM} } ,
pages = { 4653--4664 } ,
publisher = { {ACM} } ,
year = { 2021 }
}
@inproceedings { recbole[2.0] ,
author = { Wayne Xin Zhao and Yupeng Hou and Xingyu Pan and Chen Yang and Zeyu Zhang and Zihan Lin and Jingsen Zhang and Shuqing Bian and Jiakai Tang and Wenqi Sun and Yushuo Chen and Lanling Xu and Gaowei Zhang and Zhen Tian and Changxin Tian and Shanlei Mu and Xinyan Fan and Xu Chen and Ji{-}Rong Wen } ,
title = { RecBole 2.0: Towards a More Up-to-Date Recommendation Library } ,
booktitle = { {CIKM} } ,
pages = { 4722--4726 } ,
publisher = { {ACM} } ,
year = { 2022 }
}
@inproceedings { recbole[1.2.0] ,
author = { Lanling Xu and Zhen Tian and Gaowei Zhang and Junjie Zhang and Lei Wang and Bowen Zheng and Yifan Li and Jiakai Tang and Zeyu Zhang and Yupeng Hou and Xingyu Pan and Wayne Xin Zhao and Xu Chen and Ji{-}Rong Wen } ,
title = { Towards a More User-Friendly and Easy-to-Use Benchmark Library for Recommender Systems } ,
booktitle = { {SIGIR} } ,
pages = { 2837--2847 } ,
publisher = { {ACM} } ,
year = { 2023 }
}RUC, BUPT, ECNU, y mantenido por RUC.
Aquí está la lista de nuestros desarrolladores principales en cada fase de desarrollo. Son las almas de la reubicación y han hecho contribuciones sobresalientes.
| Tiempo | Versión | Desarrolladores principales | Papel |
|---|---|---|---|
| Junio de 2020 ~ Noviembre de 2020 | V0.1.1 | Shanlei Mu (@shanleimu), Yupeng Hou (@Hyp1231), Zihan Lin (@Linzihan-Backforward), Kaiyuan Li (@tsotfsk) | |
| Noviembre de 2020 ~ Jul. 2022 | V0.1.2 ~ v1.0.1 | Yushuo Chen (@chenyushuo), Xingyu Pan (@2017pxy) | |
| Jul. 2022 ~ Noviembre de 2023 | v1.1.0 ~ v1.1.1 | Lanling Xu (@sherry-xll), Zhen Tian (@chenyuwuxin), gaowei zhang (@wicknight), lei wang (@paitesanshi), Junjie Zhang (@leoleojie) | |
| Noviembre de 2023 ~ ahora | V1.2.0 | Bowen Zheng (@zhengbw0324), Chen ma (@yilu114) |
RECBOLE utiliza la licencia MIT. Todos los datos y código en este proyecto solo se pueden utilizar para fines académicos.
Este proyecto fue apoyado por la Fundación Nacional de Ciencias Naturales de China (No. 61832017).