Wicknight
Wicknight
@mksdu 您好!请检查一下您的RecBole版本是否为最新版本,我们已经在之前的版本中修复了该bug,可能是您使用的RecBole版本没有及时更新。
由于长时间无新回复,该 issue 已关闭。如果还有疑问,欢迎随时评论。
@evelyn023 您好!感谢您对RecBole的关注与支持! 1.我在下载您的数据文件后发现了问题,您在yaml文件中的‘**load_col**’参数中设置了每一个原子文件中要加载的列,但.user和.item对应的加载列在原子文件中并没有出现,似乎是.user和.item两个文件的加载列写反了。 2.由于General model只涉及.inter文件而不涉及.user和.item文件,因此能够正确运行。 请您检查yaml文件中的‘**load_col**’参数并进行相应修改,如有后续问题欢迎您在下面列出。
@evelyn023 这是由于您的原子文件.user文件和.item文件中使用了相同的特征'**gender**',并且取值空间明显不同,造成id的映射过程发生混乱,最终产生了这一错误。因此您可以将.item文件中的'**gender**'列更名为其它非重名名称。
@evelyn023 您的数据集文件有一些float类型字段,应该是由于这些字段数据分布有较大差异,导致出现该问题。经试验通过对float类型的特征进行归一化可以解决该问题,即在yaml文件中设置`normalize_all: True`。有关该参数的解释您可以查阅我们的[文档](https://recbole.io/docs/user_guide/config/data_settings.html#preprocessing)。
@evelyn023 这是由于context model和general model采用了不同的评测模式('**eval_args**'参数中的'**mode**'),您可以通过查看您的log文件中的'**eval_args**'参数来进行检查。context model采用了'labeled'评测模式,general model采用了'full'评测模式,关于评测模式的详细介绍您可以参考我们的[官方文档](https://recbole.io/docs/user_guide/config/evaluation_settings.html#evaluation-settings)。
@evelyn023 您是否修改了其它yaml中的参数?context model默认的评测模式就是labeled,我这边无论是否加入`mode: labeled`都能够正常运行。
@evelyn023 1.一般来说context-aware model主要应用于显式反馈场景来进行CTR预测,即拥有显式的正负标签,此时评测模式选用了'labeled', 但同时评价指标也理应使用'AUC','LogLoss'等value-based的指标,与评测模式保持一致。而general model主要应用于隐式反馈场景来进行完整排名 (full sort) ,此时评测模式是'full',评价指标使用‘ndcg’等ranking-based的指标来与其保持一致。您在这里是使用context model来做CTR预测任务,但却使用了ranking-based指标,并不一致。 2.RecBole 也支持通过与general model一样的完整排名 (full sort) 来评估 context-aware 推荐模型,但此时需要确保 .inter 文件不能加载任何其他上下文信息列,这种情况下模型可以用 Recall 等 ranking-based evaluation metrics 作为评测指标。您可以参考我们的文档中有关Context-aware Recommendation模型[参数设置部分](https://recbole.io/docs/user_guide/usage/running_different_models.html?highlight=note%20recbole%20also%20support#context-aware-recommendation)的说明。
@evelyn023 1.如果配置没什么问题的话,训练结果应该也没问题,可能只是单纯效果不好。您也可以在其它数据集上来进行实验,观察是否存在这样的现象。 2.就像我之前回复中所说,context model最常用于CTR预测任务,如果您想使用full-sort-topk的话,只能使用full mode.
@evelyn023 您的yaml文件中并没有设置neg_sampling参数,这不太适用于隐式交互数据下的full评测模式,导致模型效果很差。下面是修改后的版本,也可根据您的需求自行设置neg_sampling参数。 ``` data_path: /content dataset: lfm360k embedding_size: 64 normalize_all: True neg_sampling: uniform: 1 # Dataset hyper field_separater: "\t" seq__separater: " " USER_ID_FIELD: user_id ITEM_ID_FIELD: artist_id RATING_FIELD: plays TIME_FIELD: None...