Open laizef opened 4 years ago
看了相关代码,发现自己的问题有些低级,来自问自答吧:
羞愧羞愧,还是需要提升自身水平。。
你好,我有些问题,关于y=【1,0,1】 这个预测到底预测的是哪个项,我理解的是sess1的第一个列表全部都是用户0的历史交互数据,那y标签的是哪一个项?
你好,我有些问题,关于y=【1,0,1】 这个预测到底预测的是哪个项,我理解的是sess1的第一个列表全部都是用户0的历史交互数据,那y标签的是哪一个项?
sess1指的是所有用户的倒数第一次会话,sess2指所有用户的倒数第二次会话……以此类推。 参见DSIN源码中的数据处理部分https://github.com/shenweichen/DSIN/blob/3aed7819e47f0463f12ab78cc2589cacf1081745/code/2_gen_dsin_input.py#L100, 在100-112行。这里做的是把表中的一行进行查表,得到每个用户的sess信息,再将每一个会话信息放入一个sess数组中。
把输入写成这样的形式,应该就清楚了: uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 1 1 2 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 1 0 2 0 3 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 0 1
谢谢,我还有疑惑,对于给的例子数据 uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 标红的1作为用户0标签,它标记的是用户点击那一项的概率,正常来说用户一次交互都有一个标签代表有没有点击,平常的数据集也没太见过这种类似方式的 如果我用自己的数据集比如Movieslens,那y那一列我该怎么写,因为movieslens都是用户交互一个项 有一个标签,比如交互200个项有200个标签,sessi之后那y那一列只能写一个数,那这时他标记预测的哪一项呢 期待您的解答,我困在这出不去了
guojq718 | |
---|---|
guojq718@163.com | 签名由网易邮箱大师定制 在2020年8月6日 11:42,laizefnotifications@github.com 写道:
你好,我有些问题,关于y=【1,0,1】 这个预测到底预测的是哪个项,我理解的是sess1的第一个列表全部都是用户0的历史交互数据,那y标签的是哪一个项?
sess1指的是所有用户的倒数第一次会话,sess2指所有用户的倒数第二次会话……以此类推。 参见DSIN源码中的数据处理部分https://github.com/shenweichen/DSIN/blob/3aed7819e47f0463f12ab78cc2589cacf1081745/code/2_gen_dsin_input.py#L100,100-112行。这里做的是把表中的一行进行查表,得到每个用户的sess信息,再将每一个会话信息放入一个sess数组中。
把输入写成这样的形式,应该就清楚了: uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 1 1 2 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 1 0 2 0 3 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 0 1
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
谢谢,我还有疑惑,对于给的例子数据 uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 标红的1作为用户0标签,它标记的是用户点击那一项的概率,正常来说用户一次交互都有一个标签代表有没有点击,平常的数据集也没太见过这种类似方式的 如果我用自己的数据集比如Movieslens,那y那一列我该怎么写,因为movieslens都是用户交互一个项 有一个标签,比如交互200个项有200个标签,sessi之后那y那一列只能写一个数,那这时他标记预测的哪一项呢 期待您的解答,我困在这出不去了 | | guojq718 | | guojq718@163.com | 签名由网易邮箱大师定制 在2020年8月6日 11:42,laizefnotifications@github.com 写道: 你好,我有些问题,关于y=【1,0,1】 这个预测到底预测的是哪个项,我理解的是sess1的第一个列表全部都是用户0的历史交互数据,那y标签的是哪一个项? sess1指的是所有用户的倒数第一次会话,sess2指所有用户的倒数第二次会话……以此类推。 参见DSIN源码中的数据处理部分https://github.com/shenweichen/DSIN/blob/3aed7819e47f0463f12ab78cc2589cacf1081745/code/2_gen_dsin_input.py#L100,100-112行。这里做的是把表中的一行进行查表,得到每个用户的sess信息,再将每一个会话信息放入一个sess数组中。 把输入写成这样的形式,应该就清楚了: uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 1 1 2 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 1 0 2 0 3 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 0 1 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
我分个点回答:
1.
标红的1作为用户0标签,它标记的是用户点击那一项的概率,正常来说用户一次交互都有一个标签代表有没有点击,平常的数据集也没太见过这种类似方式的
抱歉我对推荐的场景不太了解,没有理解这句话。关于DSIN里的用户交互历史和标签,您可以看看DSIN论文的实验部分、实验源码和实验数据。他们用第1-7天的用户行为作训练集;第8天的用户行为作测试集;第1天之前的200条用户浏览、购买记录作会话数据。会话数据里面只有正面的记录,如用户收藏、购买、加入购物车等,处理的时候都一视同仁;训练集和测试集则包含了正面和负面的记录,表示用户是否点击。 所以我这里也有点疑惑,如果我们的会话数据包含了负样本,又该怎么处理。我尝试了一些方法都没有效果。如果您解决了这个问题,也希望可以告知,我也卡在这里了。
如果我用自己的数据集比如Movieslens,那y那一列我该怎么写,因为movieslens都是用户交互一个项 有一个标签,比如交互200个项有200个标签,sessi之后那y那一列只能写一个数,那这时他标记预测的哪一项呢
(1)Movieslens好像是用户评分数据吧,这里的模型做的是分类任务,可以做打分预测吗? (2)DSIN将数据根据时序划分为会话数据、训练数据和测试数据,训练数据和测试数据是有标签的但是会话数据没有。一个用户的一条训练数据可以写成表的一行,y值就是对应的标签。比如,训练数据里面,用户0做了两次交互,这两次的cateid分别是1,2,标签值分别是1,0,则可以写成两行: uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 0 0 1 2 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 0
太谢谢你了,我看懂你的说明了。 对于session负样本的问题,session里应该是规定了只能是正样本,而且必须是正样本,因为session里相当于装的是你的兴趣偏好,这是你的依据,如果session里有负样本,这个负样本就相当于噪声,严重混淆你的判断,所以如果存在负样本的话应该剔除,只保留正样本,这是我的理解。 | guojq718 | |
---|---|---|
guojq718@163.com | 签名由网易邮箱大师定制 在2020年8月7日 10:20,laizefnotifications@github.com 写道:
谢谢,我还有疑惑,对于给的例子数据 uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 标红的1作为用户0标签,它标记的是用户点击那一项的概率,正常来说用户一次交互都有一个标签代表有没有点击,平常的数据集也没太见过这种类似方式的 如果我用自己的数据集比如Movieslens,那y那一列我该怎么写,因为movieslens都是用户交互一个项 有一个标签,比如交互200个项有200个标签,sessi之后那y那一列只能写一个数,那这时他标记预测的哪一项呢 期待您的解答,我困在这出不去了 | | guojq718 | | guojq718@163.com | 签名由网易邮箱大师定制 在2020年8月6日 11:42,laizefnotifications@github.com 写道: 你好,我有些问题,关于y=【1,0,1】 这个预测到底预测的是哪个项,我理解的是sess1的第一个列表全部都是用户0的历史交互数据,那y标签的是哪一个项? sess1指的是所有用户的倒数第一次会话,sess2指所有用户的倒数第二次会话……以此类推。 参见DSIN源码中的数据处理部分https://github.com/shenweichen/DSIN/blob/3aed7819e47f0463f12ab78cc2589cacf1081745/code/2_gen_dsin_input.py#L100,100-112行。这里做的是把表中的一行进行查表,得到每个用户的sess信息,再将每一个会话信息放入一个sess数组中。 把输入写成这样的形式,应该就清楚了: uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 1 1 2 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 1 0 2 0 3 2 ... [0, 0, 0, 0] [0, 0, 0, 0] 0 1 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
我分个点回答:
标红的1作为用户0标签,它标记的是用户点击那一项的概率,正常来说用户一次交互都有一个标签代表有没有点击,平常的数据集也没太见过这种类似方式的
抱歉我对推荐的场景不太了解,没有理解这句话。关于DSIN里的用户交互历史和标签,您可以看看DSIN论文的实验部分、实验源码和实验数据。他们用第1-7天的用户行为作训练集;第8天的用户行为作测试集;第1天之前的200条用户浏览、购买记录作会话数据。会话数据里面只有正面的记录,如用户收藏、购买、加入购物车等,处理的时候都一视同仁;训练集和测试集则包含了正面和负面的记录,表示用户是否点击。 所以我这里也有点疑惑,如果我们的会话数据包含了负样本,又该怎么处理。我尝试了一些方法都没有效果。如果您解决了这个问题,也希望可以告知,我也卡在这里了。
如果我用自己的数据集比如Movieslens,那y那一列我该怎么写,因为movieslens都是用户交互一个项 有一个标签,比如交互200个项有200个标签,sessi之后那y那一列只能写一个数,那这时他标记预测的哪一项呢
(1)Movieslens好像是用户评分数据吧,这里的模型做的是分类任务,可以做打分预测吗? (2)DSIN将数据根据时序划分为会话数据、训练数据和测试数据,训练数据和测试数据是有标签的但是会话数据没有。一个用户的一条训练数据可以写成表的一行,y值就是对应的标签。比如,训练数据里面,用户0做了两次交互,这两次的cateid分别是1,2,标签值分别是1,0,则可以写成两行: uid ugender iid cateid ... sess2_iid sess2_cate_id sess_number y 0 0 1 1 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 1 0 0 1 2 ... [1, 2, 3, 0] [1, 2, 2, 0] 2 0
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
Please refer to the FAQ in doc and search for the related issues before you ask the question.
Describe the question(问题描述) 您好,我不是做推荐的,所以对DSIN的数据处理部分不是很熟悉。看着示例只能去猜测每一项的含义,猜了两天还是跑不起来,所以只能提问了:
1.代码26-30行的uid,ugender,iid,cateid,score等变量是不是可以认为是一张长度为3表中的各个属性,46行的y对应这张表的标签值? 是否意味着uid行允许重复——当一个用户被多次采样,也将允许他的id在uid行中出现多次?
2.假设uid行允许重复时:32-36行的sess1,sess2是与用户id对应的,还是与表中行对应的?比如,一个用户0被采样10次,uid=[0,0,0,0,0,0,0,0,0,0],这时候这个用户对应的sess会出现1次还是10次?如果按照出现10次的话内存会爆炸;如果按出现1次来的话,就不知道26-30行怎么解释了。