减少无序分类预测变量的级别数

机器算法验证 分类 支持向量机 随机森林 多类
2022-03-05 07:51:47

我想训练一个分类器,比如 SVM、随机森林或任何其他分类器。数据集中的特征之一是具有 1000 个级别的分类变量。减少此变量中级别数的最佳方法是什么。在 R 中有一个combine.levels()Hmisc包中调用的函数,它结合了不常见的级别,但我一直在寻找其他建议。

1个回答

如何最好地做到这一点将因您正在执行的任务而有很大差异,因此不可能以独立于任务的方式说出什么是最好的。

如果您的级别是有序的,则可以尝试两种简单的方法:

  1. 将它们装箱。例如,0 = (0 250)、1 = (251 500) 等。您可能希望选择限制,以便每个 bin 具有相同数量的项目。
  2. 您还可以对级别进行对数转换。这将缩小范围。

如果级别不是有序的,您可以根据数据集中的其他特征/变量对级别进行聚类,并将集群 ID 替换为以前的级别。有很多方法可以做到这一点,因为有聚类算法,所以这个领域是开放的。当我阅读它时,这就是combine.levels()正在做的事情。您可以使用kmeans()or进行类似操作prcomp()(您可以/应该随后训练分类器来预测新数据点的集群。)