假设数据集具有高基数的分类功能。说拉链码或城市。对此功能进行编码将提供数百个功能列。不同的方法,如supervised_ratio,证据权重似乎可以提供更好的表现。
问题是,这些supervised_ratio和WOE将在训练集上计算,对吧?因此,我获得训练集并处理它并计算SR和WOE并使用新值更新训练集并保持计算值也用于测试集。但是,如果测试集的邮政编码不在训练集中,会发生什么?什么时候没有SR或WOE值? (实际上,如果训练数据集未涵盖所有可能的邮政编码,或者某些邮政编码中只有一个或两个记录可能属于训练集或测试集,则可以实现这一点)。 (编码方法也会发生同样的情况)
我对这个问题更感兴趣,SR和/或WOE是推荐的处理高基数功能的方法吗?如果是这样,当测试集中的值不在训练集中时,我们该怎么做? 如果没有,那么处理高基数功能的推荐方法是什么?哪种算法对它们更健壮?谢谢
答案 0 :(得分:2)
这是一个很好的问题,谢谢你的提问!
当处理这种处理具有高基数的功能(例如邮政编码)的问题时,我在训练集中保留最频繁的功能并将所有其他功能放在新类别中#34;其他",然后我计算他们的WOE或任何指标。
如果在测试集中找到了一些看不见的邮政编码,他们就会落入其他人的邮编中。类别。通常,这种方法在实践中很有效。
我希望这个解决方案可以帮到你!
答案 1 :(得分:2)
将值按值转换应用于分类特征时,这是一个众所周知的问题。最常见的解决方法是使用一组规则将看不见的值转换为训练集已知的值。
这可能只是一个“NA”值(或“其他”,正如另一个答案所暗示的),或更精细的内容(例如,在您的示例中,您可以将看不见的邮政编码映射到培训中最接近的知识库设定)。
在某些情况下,另一个可行的解决方案是让模型拒绝在这些情况下做出预测,只返回错误。
对于你的第二个问题,实际上并没有推荐的编码高基数特征的方法(有很多方法,有些方法可能比其他方法更好,取决于其他功能,目标变量等等..);但我们可以推荐你的是实施一些并试验哪一个对你的问题更有效。您可以将预处理方法视为学习算法中的另一个参数。