高基数类别特征的多分类任务是否需要数十万级训练数据?
关于类别特征建模所需样本量的解答
不需要非得准备数十万级的样本才能完成有效建模,最终需要的样本规模和你的编码方案、模型选型、特征自身的样本分布直接相关,核心判断逻辑如下:
- 编码方案的影响:你手里有一个基数高达1700的类别特征,如果直接选择
one-hot编码,单特征就会产生1700维稀疏特征,别说学习特征组合规律,就算是单特征的有效学习都需要极多样本支撑,还很容易出现过拟合。如果换成目标编码(多分类场景下可映射为每个类别对应各个分类的出现概率)、频率编码,或是直接使用支持嵌入编码的模型,会把高基数类别特征压缩为低维稠密特征,所需的样本量会大幅下降。 - 模型选型的影响:如果选择XGBoost、LightGBM、CatBoost这类梯度提升树模型,本身自带高基数类别特征处理能力,分裂过程中会自动生成特征组合,不需要大量样本去覆盖所有可能的特征组合就能学到有效规律,万级样本就能跑出不错的效果。如果选择线性模型、浅层神经网络这类对稀疏特征适配性差的模型,才需要更多样本覆盖特征组合来保证效果。
- 特征分布的影响:如果高基数特征里存在大量长尾类别(单类别样本量不足5个),不管用什么方法都很难学到这类类别的有效规律,这种情况下你可以先做类别合并,把样本量低于阈值的类别统一归为“其他”类,也不需要盲目扩充数据。如果多数类别都有至少10个以上的对应样本,只要特征组合的出现概率不是极低,几万到十万级以内的样本就足够支撑模型学习。
如果你的场景没有强制要求用深度学习或线性模型,优先选择梯度提升树配合合适的类别编码方案,大部分情况下不需要数十万级的样本就能完成有效建模。
内容的提问来源于stack exchange,提问作者Shubham Kaushik
相关产品推荐
相关产品推荐

