关于在test数据集中出现新的categorical特征的处理

1)今天回顾第7课的最后讨论,汪老师说了一个关于与如何处理在测试集中出现新categorical特征的方法。这个特征是一个人看广告的天数(倒数第几天看的广告,倒数第一天,则为1,倒数第二天则为2,。。。)。如果测试集中有个人没看过这个广告,相当于这个信息为空,汪老师的一个解法是赋一个从没出现过的值给这特征,如-1。
我的问题是:如果这个categorical 信息是属于ordinal类型的,那样-1也会被看成和原来已有特征的值是有大小/次序关系,如-1 < 1 < 2 < 3,这样处理是不是还是会有问题?

2)如果是用one-hot 编码的nomical categorical特征,在测试集中出现了多个没有在训练集中出现的categorical特征,一般是怎么处理?

谢谢!

  1. 对于这个oridinal类型的数据,我们为了后续的model training 一般都需要补值。我的意思是,这里的补值方法可以根据feature的物理意义做一些操作,而不是直接用mean value补值。对于广告看到的天数,如果这个人没看过这个广告, 我在课上讲的是,最好给它一个很大的值,比如200 (而不是-1)。这样比使用均值要更合理。这里我们恰好是利用了数据大小关系做了处理。当然我们可以单独加一列 binary indicator来指示这一行是否是missing value. 但即使有这个feature,我们还是要对missing value补值。至于具体哪种方法最适合模型,还是要看cross validation的结果。
  2. 一般会设置一个dump feature, 用它表示所有在training data中没遇到过的values.