跨领域项目库RecBole-CDR——使用经验

文章目录

    • 一、整体数据流
    • 二、 一些重要参数设置
    • 三、利用Yaml文件 设置参数
    • 四、RecBole-CDR支持的模型
    • 五、RecBole-CDR提供的跨领域数据集

RecBole-CDR 是一个基于 RecBole 的代码库,其针对跨领域推荐算法。目前支持的跨域推荐模型包括CMF、DTCDR、CoNet等(具体见后文“RecBole-CDR支持的模型”)。由于该项目相比RecBole有一些额外的设置,在学习过程中通过查看源代码获取具体的信息,特在此记录以备后续查看。

Recbole-CDR项目的GitHub地址:RUCAIBox/RecBole-CDR

Recbole-CDR项目主要参数,可以参考Recbole项目提供的原始API文档。

1. Recbole API文档✨ (提供了详细的参数设置,使用方法等)
2. Recbole中文主页地址

一、整体数据流

下图为Data Flow,展示了从原始数据文件到输入算法进行计算的整体流程,其中针对跨领域推荐,DataLoader有不同的4种模式(后文会具体讲解)
在这里插入图片描述

二、 一些重要参数设置

针对跨领域推荐,由于数据集、模型架构、评估场景等的不同,参数有额外设置。将一些重要的参数记录如下,用于备忘:

  1. train_epochs:设置跨领域训练模式,包含:SOURCE, TARGET, BOTH, OVERLAP。主要是dataloader.pytrainer.py中根据对应的模式对训练、验证和测试数据进行划分。

    • BOTH: Return both data in source domain and target domain. 同时训练两个领域
    • SOURCE: Only return the data in source domain. 只训练单个领域
    • TARGET: Only return the data in target domain. 只训练单个领域
    • OVERLAP: Return the overlapped users or items 仅训练领域重叠部分(users or items)
    • 项目中提供的model,其训练模式一般为固定的,如双目标跨域推荐通常为BOTH模式,而EMCDR需要分别在源领域和目标域训练后再联合训练Overlap部分:train_epochs: ["SOURCE:100","TARGET:100","OVERLAP:100"]
    • 通常可以直接参考文件properties/model/modelName.yaml对应的设置;如果未设置,则为overall.yaml中的默认训练模式:train_epochs: ["BOTH:300"]
  2. source_split/source_split_flag:当train_epochs中不包含SOURCE模式则为False,不切分数据集进行训练?

  3. neg_sampling:负采样策略,自动从未被观察到的相互作用中,为每个正样本均匀地选择一个负样本

  4. benchmark_filename (list):加载已经预先拆分好的user-item交互的文件后缀列表。[part1, part2, part3]三者分别作为train, valid和test数据。Recbole将只进行normalize、remap id的操作,而不对数据做filter或其他处理。

    • 单个文件内,以"feat_name:feat_type"格式列名设置,表示特征名称和数据格式。示例:[user_id:token, item_id:token, label:float]
    • 一定要设置数据类型“feat_type”!主要包含4种类型,解释如下:
      跨领域项目库RecBole-CDR——使用经验_第1张图片
  5. eval_step:该参数设置训练多少个epoch后,对valid数据集进行评估。如果小于1,则不会在valid数据集上计算模型。(不包含valid数据集,则设置为0)

三、利用Yaml文件 设置参数

推荐采用yaml文件设置参数,将不同类型的参数设置于对应的文件中,更有区分性:

  • Data settings:properties/dataset/datasetName.yaml
  • Model settings:properties/model/modelName.yaml
  • General / training / evaluation settings:properties/overall.yaml + properties/model/modelName.yaml

其中,datasetName、modelName分别为数据集名称和模型名称,需要对应修改

四、RecBole-CDR支持的模型

  • CMF from Singh et al.: Relational Learning via Collective Matrix Factorization (SIGKDD 2008).
  • DTCDR from Zhu et al.: DTCDR: A Framework for Dual-Target Cross-Domain Recommendation (CIKM 2019).
  • CoNet from Hu et al.: CoNet: Collaborative Cross Networks for Cross-Domain Recommendation (CIKM 2018).
  • BiTGCF from Liu et al.: Cross Domain Recommendation via Bi-directional Transfer Graph Collaborative Filtering Networks (CIKM 2020).
  • CLFM from Gao et al.: Cross-Domain Recommendation via Cluster-Level Latent Factor Model (PKDD 2013).
  • DeepAPF from Yan et al.: DeepAPF: Deep Attentive Probabilistic Factorization for Multi-site Video Recommendation (IJCAI 2019).
  • NATR from Gao et al.: Cross-domain Recommendation Without Sharing User-relevant Data (WWW 2019).
  • EMCDR from Man et al.: Cross-Domain Recommendation: An Embedding and Mapping Approach (IJCAI 2017).
  • SSCDR from Kang et al.: Semi-Supervised Learning for Cross-Domain Recommendation to Cold-Start Users (CIKM 2019).
  • DCDCSR from Zhu et al.: A Deep Framework for Cross-Domain and Cross-System Recommendations (IJCAI 2018).

五、RecBole-CDR提供的跨领域数据集

RecBole-CDR提供了常用的三对源域-目标域数据集,并对实现的模型在这些数据集上进行了仔细的调参(可查看项目中的results/datasetName.md文件,datasetName为数据集名称)

  • Amazon 数据集;
  • Book-Crossing 数据集;
  • Douban 数据集;

你可能感兴趣的:(跨领域推荐,推荐系统,Tools,算法,python)