跨领域推荐项目库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种类型,解释如下:
      在这里插入图片描述
  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支持的模型

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

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值