sunshinelium / Bi-TGCF

Cross Domain Recommendation via Bi-directional Transfer Graph Collaborative Filtering Networks
24 stars 6 forks source link

there some positive item in negative sample test file #2

Closed saladcat closed 3 years ago

saladcat commented 3 years ago

like Data/cell_electronic/test_neg.txt (106, 4600) 17037 11407 4007 10178 10584 4040 99 3451 2321 14557 16163 2996 12846 18027 3805 7551 15982 4600 3723 5667 7757 5627 14929 10718 297 17987 10634 11107 15151 10266 3594 16745 6374 12093 6135 9844 33 11378 13414 7902 17912 7149 8087 7470 9711 4958 1365 17630 2614 5350 8084 16607 10717 3411 17361 285 8716 12207 8854 6255 236 4583 4104 9766 8293 17180 2031 11024 9030 11069 6409 733 8985 12556 1087 4484 15439 8946 13347 6392 751 3492 310 11914 517 1559 10802 11511 7805 12077 9566 15255 14444 14277 14666 15099 85 13681 9042

sunshinelium commented 3 years ago

我确认了下确实存在你说的问题,可能因为我的负样例生成采用了DMF代码中的方式,未对测试集正样例进行移除。这种情况下,对于当前用户来说,相当于从98个负样例,2个正样例中生成推荐列表,导致结果稍微增加(出现这种情况的用户极少),但是由于所有方法中均采用了相同的数据集,所以对结果影响应该不算大。非常感谢您提出的问题。或许可以尝试下自行生成测试样例进行试验下。

caojiangxia commented 3 years ago

这代码里面,test的时候有cold-start的item测试样例。这部分是有必要的吗?

sunshinelium commented 3 years ago

非常感谢对我们工作的兴趣。本文没有研究冷启动问题,数据集在划分时也去掉了冷启动用户,不知您说的是哪个部分?

---Original--- From: @.> Date: 2021/3/15 15:27:26 To: @.>; Cc: @.**@.>; Subject: Re: [sunshinelium/Bi-TGCF] there some positive item in negative sample test file (#2)

这代码里面,test的时候有cold-start的item测试样例。这部分是有必要的吗?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

caojiangxia commented 3 years ago

item里面存在冷启动的。(test集里面存在ground truth item的标签是未训练过的)

sunshinelium commented 3 years ago

你好,测试集里的ground true item 一定不能是训练过的啊,如果训练过了这就存在数据泄露问题了。冷启动问题主要指的是测试集里出现的用户在训练集中没出现过。

---Original--- From: @.> Date: 2021/3/16 14:08:47 To: @.>; Cc: @.**@.>; Subject: Re: [sunshinelium/Bi-TGCF] there some positive item in negative sample test file (#2)

item里面存在冷启动的。(test集里面存在ground truth item的标签是未训练过的)

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

caojiangxia commented 3 years ago

我指的是ground truth item 没有在训练集出现过。

sunshinelium commented 3 years ago

不好意思啊,我还是不太懂你的意思。您能稍微举个例子么?

---Original--- From: @.> Date: 2021/3/16 14:52:44 To: @.>; Cc: @.**@.>; Subject: Re: [sunshinelium/Bi-TGCF] there some positive item in negative sample test file (#2)

我指的是ground truth item 没有在训练集出现过。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

caojiangxia commented 3 years ago

就是比如说,训练集时,只有1,3,5三个item参与了训练,2,4的item没有任何连边。相当于2,4没学到表示。

但是测试的时候,2,4是作为ground truth item出现的。

sunshinelium commented 3 years ago

是的,但这是必要的,如果2,4在训练的邻接矩阵上有了连边,这就是数据泄露的问题了,因为测试时邻接矩阵有连边的会更容易判定为正样例。您可以多看几个图方向的代码,比如lightgcn,ngcf,这个都是这样做的,避免出现数据泄露。

---Original--- From: @.> Date: 2021/3/16 15:01:27 To: @.>; Cc: @.**@.>; Subject: Re: [sunshinelium/Bi-TGCF] there some positive item in negative sample test file (#2)

就是比如说,训练集时,只有1,3,5三个item参与了训练,2,4的item没有任何连边。相当于2,4没学到表示。

但是测试的时候,2,4是作为ground truth item出现的。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

caojiangxia commented 3 years ago

2,4没有任何用户和他交互过诶。

caojiangxia commented 3 years ago

2,4没有任何用户和它俩交互过诶。

不相当于这两个点在图中是孤立的吗?

sunshinelium commented 3 years ago

由于2,4是ground true item,这是测试集里建立起的交互关系,所以训练集里无法利用这个交互关系,否则就相当于告诉模型测试时的情况了,也因此,邻接矩阵在构建时无法利用测试集中出现的交互关系。

---Original--- From: @.> Date: 2021/3/16 15:08:56 To: @.>; Cc: @.**@.>; Subject: Re: [sunshinelium/Bi-TGCF] there some positive item in negative sample test file (#2)

2,4没有任何用户和它俩交互过诶。

不相当于这两个点在图中是孤立的吗?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

caojiangxia commented 3 years ago

我个人的理解,2,4在训练集中没出现过任何交互。说明它俩的表示是随机的。

那么,在测试的时候,随机的表示作为ground truth去评价模型,这没有道理。

测试集中,应该都是ground truth item尚未在训练集中和相应user产生交互的(但是实际在全图中产生了交互)。

caojiangxia commented 3 years ago

而且,ground truth item应该在训练集中和其他的user 发生一些交互,保证能够学习到这个item靠谱的表示。否则在测试的时候,不就是冷启动问题了吗。

sunshinelium commented 3 years ago

哦哦,我懂了你的意思了,我之前一直理解错了,不好意思啊。我的数据集是过滤了的,所以文章不考虑冷启动问题。应该不会出现物品只有一个交互被划分到了测试集的情况。如果真的存在,我觉得或许是用户和物品过滤顺序的问题导致的,这部分物品其实不是本文考虑的,也是会降低模型效果的,最好的其实是去掉这部分冷启动物品。可能需要您自己构建一个更好的数据集来测试。

---Original--- From: @.> Date: 2021/3/16 15:33:48 To: @.>; Cc: @.**@.>; Subject: Re: [sunshinelium/Bi-TGCF] there some positive item in negative sample test file (#2)

而且,ground truth item应该在训练集中和其他的user 发生一些交互,保证能够学习到这个item靠谱的表示。否则在测试的时候,不就是冷启动问题了吗。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

caojiangxia commented 3 years ago

caojiangxia commented 3 years ago

可以给一下其他的数据集吗。我不知道其他的几个数据集是怎么构造的。

sunshinelium commented 3 years ago

你好,data文件夹下有数据集的处理代码,由于空间限制,其他数据集无法上传,根据readme中的指示下载csv文件,运行下代码就行了