Project 1中关于create label的问题

老师提供的思路是:
1.train的数据都发生在prior之后
2.分别得到prior和train的unique (user_product) key
3.得到两者重合的部分, 那这部分就是reordered
4.在prior中有329806个unique key,而重合的部分是32339, 所以label 为1 的比例是9.8%, 而另外的297467个则被label为0
我觉得这里面有点问题。
我的思路:
1.feature中’reorder’为0的表明是第一次被选购,为1表名被重复选购
2.确实不能以reorder的0和1来label,但如果有个unique (user_product) key,reorder的值既出现了0也出现了1,就表明该商品被重复选购了
3.以prior为例,329806个unique key中有131716个key是重复出现的,double check后发现确实这131716个key的reorder是既有0也有1,表明是被重复选购了,尽管有些key并没有出现在train里面, e.g. user_id = 185013, product_id = 13176.
4.以此为依据,把prior和train按照行方向合并,一共得到351171个unique (user_product) key, 其中141115个是重复出现的。
5.我觉得应该把这141115个label为1,而其余的则为0,reorder的比例约为40%

如果按照老师的思路,我觉得那297467个0 label中其实有部分应该被标为1,因为根据‘reorder’这个label,确实是被重复选购了,尽管重复选购的时间是只发生在prior里面。

老师能帮忙看看我的思路是否正确?谢谢。

你这里对数据内容的理解特别好。只是有一个需要注意的问题:我们最好只用 train 里面的数据做label,不用prior里面的数据。换句话说,在我的处理方法中,“复购时间出现在prior里面” 是不算做positive label的。原因是,如果不这样限制的话,有可能出现“信息泄露”问题,即某一行数据的label的构造时间,早于另一行数据的training data feature构造时间。