我正在开发一个机器学习预测模型,我的数据集中有一个分类变量(比如说产品ID),共有2000种不同的产品。
如果我用虚拟变量(如独热编码)转换这个变量,数据集的大小可能会是样本数量的2000倍(数百万个样本),但这太大了,无法处理。
- 这种情况通常如何处理?
- 我应该只使用未转换的变量吗?
谢谢。
回答:
分类特征的高基数是一个众所周知的问题,“最佳”处理方法通常取决于预测任务,并且需要尝试错误的方法。是否能找到明显优于其他方法的策略,取决于具体情况。
针对你的第一个问题,category_encoders
库提供了一系列不同的编码策略:
一组scikit-learn风格的转换器,用于将分类变量编码为数值
它们遵循scikit-learn
的转换器API,并且提供了一个简单的示例。同样,哪种方法能提供最佳结果取决于你的数据集和预测任务。我建议将它们纳入一个管道中,并测试(部分或全部)这些方法。
关于你的第二个问题,你将继续使用编码后的特征进行预测和分析。