后向差分编码如何用于测试集?

时间:2018-04-16 03:41:26

标签: python machine-learning hash encoding scikit-learn

根据这个网站(http://www.statsmodels.org/dev/contrasts.html enter link description here),后向差分编码的定义是'在后向差分编码中,将一个级别的因变量的均值与均值进行比较先前级别的因变量。这种类型的编码可能对名义变量或有序变量有用。'

我不明白的是,如果这种编码方法依赖于因变量(如果我理解的话,它与输出变量相同),当没有给因变量时,如何使用测试集执行向后差分编码模特提前?在训练集中,给出了因变量的值,但是在测试集中没有给出它们。有人可以提供建议吗?

1 个答案:

答案 0 :(得分:2)

此方法只是影响编码类别变量。

如果您的分类列具有类别{C1,C2,C3,...},则影响编码如下:

                         Impact(category = Ci) = E[y|Ci] - E[y]

在训练期间,对于每个类别(Ci),它计算平均输出(给定类别,即后验)与因变量的总体期望值(先验)之间的差。有关影响编码的更多参考,可以参考本文https://arxiv.org/abs/1611.09477v3(Page10)

在测试阶段,要将测试数据的类别变量转换为其影响代码,它使用与训练数据相同的期望值y。因为这是一个期望值,所以训练数据中的样本数量是否比测试数据中的数量无关(只要两个数据集中的“ y”分布相似)即可。