-
Notifications
You must be signed in to change notification settings - Fork 1
Calcular Matrices de Similitud
Para realizarlas recomendaciones por filtros colaborativos y basadas en contenido, es necesario pre-calcular las matrices de dsitancai en tre usuario y entre item. Para esto se peude utilizar distintos modelos de machine learning. En este caso se opto por utilizar NMF(Neural Matrix Factorization), SVD(Singular Value Descomposition) y BERT(Bidirectional Encoder Representations from Transformers). El calculode esta matrices necesita de una gran cantidad de uso de CPU/GPU, por esta estion se opto por separar todo los que refiere a entrenamiendo y prediccion en un nodo de procesamiento distinto al nodo donde corre la aplicacion en cuestion. Este nodo de procesamiento corre una intancias de Airflow. Airflow permite correr procesos los cuales se peuden separar en un DAG(Grafo dirigido asiclico) de pasos. Para este trabajo no se separadon los Jobs o procesos en pasos, pero des algo que se espera hacer a futuro.
De esta foram cada Job o proceso de generacion de matrices es un proceso independiente el cual correr cada x tiempo en Airflow a modo de scheduler(clon). Por otro lado tambien es posible corer los procesos via shell.
Step 1: Activar environment.
$ conda activate rec-sys
$ cd recsysStep 2: Calcular matrices de distancia user-user e item-item utilizando las interacciones de los usuarios a través del modelo SVD.
$ python bin/svd_distance_matrix_job.pyStep 3: Calcular matrices de distancia user-user e item-item utilizando las interacciones de los usuarios a través del modelo NMF.
$ python bin/nmf_distance_matrix_job.pyAmbos jobs calcular matrices de distancia user-user/item-item en base a la matriz de rating predicha por cada model (SVD/NMF). Luego, realizan un upsert de estas matrices en la base de datos, insertando unicamente los N vecinos mas cercanos en ambos casos (user-user/item-item). Cada matrix esta versionada. Es decir, que cada ejecución de un job crear una nueva versión de la matrix. Finalmente, ambas matrices queda asociadas a una entidad en la base de datos que representa al modelo con el que fue predicha.
Step 4: Calcular matrices de distancia item-item utilizando el título y la descripción de los items con distintos modelos BERT pre entrenados.
$ python bin/all_minilm_l6_v2_bert_item_distance_matrix_job.py$ python bin/all_minilm_l12_v2_bert_item_distance_matrix_job.py$ python bin/all_mpnet_base_v2_bert_item_distance_matrix_job.py$ python bin/multi_qa_mpnet_base_dot_v1_bert_item_distance_matrix_job.py