Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        2年前关闭。
                                                                                            
                
        
假设数据集具有高基数的分类特征。说出邮政编码或城市。对该功能进行编码将提供数百个功能列。诸如supervised_ratio,证据权重之类的不同方法似乎可以提供更好的性能。

问题是,这些supervised_ratio和WOE是在训练集上计算的,对吧?因此,我得到了训练集并对其进行处理,计算出SR和WOE,并使用新值更新了训练集,并将计算出的值也保留在测试集中。但是,如果测试集的邮政编码不在训练集中,该怎么办?什么时候不使用SR或WOE值? (实际上,如果训练数据集未涵盖所有可能的邮政编码,或者某些邮政编码中只有一两个记录可能落入训练集或测试集中,则这是可能的)。
(编码方法也会发生同样的情况)

我对这个问题更感兴趣,是否推荐使用SR和/或WOE处理具有高基数的功能?如果是这样,当测试集中的值不在训练集中时,我们该怎么办?
如果不是,那么推荐的处理高基数特征的方法是什么,哪些算法对其更健壮?谢谢

最佳答案

将价值方式转换应用于分类特征时,这是一个众所周知的问题。最常见的解决方法是具有一组规则,以将看不见的值转换为训练集已知的值。

这可以只是一个'NA'值(或另一个答案暗示的'其他'),也可以是更复杂的内容(例如,在您的示例中,您可以将看不见的邮政编码映射到训练集中最接近的一个邮政编码)。

在某些情况下,另一个可行的解决方案是让模型在这些情况下拒绝做出预测,而只是返回错误。

对于第二个问题,实际上没有推荐的方法来对高基数特征进行编码(有许多方法,根据其他特征,目标变量等,有些方法可能比其他方法更好。)但是我们可以建议您实施一些方法并进行实验,以解决您的问题更有效。您可以考虑将预处理方法用作学习算法中的另一个参数。

关于machine-learning - 在监督比率和证据权重下处理高基数特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46132786/

10-12 21:55