如何处理具有很多分类值的特征?

数据挖掘 机器学习 特征选择 训练 主成分分析
2022-03-04 20:18:07

我知道之前有人问过这个问题,并且我已经尝试了一些事情,但是这些事情对于我的用例来说并没有按预期工作。

我有一个 500 长度的特征向量。这些功能之一是分类值pincode对于我们的数据集,pincode可以包含超过 20,000 个唯一值。所以我们不能使用一种热编码,因为它会炸毁我们的特征空间。

我还尝试过二进制编码,它为每个唯一的分类值分配一个唯一的整数,然后将其转换为二进制。然后它将每一位视为一列。这样,pincode 特征向量的维度从 20,000 减少到 20 左右。但我没有发现我们的评估指标 AUC(曲线下面积)有任何改进。直觉上它也感觉不对。

我还尝试在 pincode 上应用 PCA 以减小尺寸。我试图将尺寸从 20,000 减少到 100。在应用 PCA 后,模型的表现更差。另外,我在某处读到 PCA 在分类值上效果不佳。对于连续值更好。

那么我们如何使用这个功能呢?我们不想把它扔掉,因为我们认为它可能是一个重要的特性。但是我们想减少它的维度然后使用。

抱歉,如果这是一个基础问题。我是这个领域的新手,正在尝试各种事情。

PS - 我们正在使用 xgboost 来训练我们的模型。

3个回答

一个想法是制作此功能的一些功能 - 当您对汽车进行分类时,您没有字符串“Ferrari 991 year 2014 red”“BMW z4 year 1999 2.0L blue”之类的数据,但您希望拥有像“Manufacturer”这样的列,“类型(SUV / Cabrio ...)”,“年份”,“发动机”等。

您可以对其进行改造或丢弃

看看这篇研究论文。

它提到了两种方法,一种用于高基数分类数据的 Minhash 编码技术和 Gamma-Poisson 矩阵分解技术。

我觉得 Pincode 很可能根本不是您拥有的目标变量的预测器。如果您觉得地理是一个重要的预测因素并且对您的目标变量有影响,那么您可以做的是使用城市或州或其他相关的地理单位,如子城市等。您觉得具有同质的特征。

假设如果状态 X n Y 每个有 2 个城市 P、Q 和 M、N 并且 ecah 城市与其他城市非常不同,那么我将选择城市作为我的地理变量,否则将状态作为地理变量很好。所以它取决于地理单元的同质性。

例如,假设您预测对豪华车的需求,而城市 A 拥有良好的道路、高收入人口等,因此与城市 B 相比,城市 A 没有任何特征,因此对豪华车的需求很高。因此,在您的模型城市 A 中,观察结果比城市 B 观察结果更有可能购买豪华车。

因此,通过使用比 pincode 更大的地理单元,您最终会减少类别,例如从 20000 个 pin 码中,您只能拥有 100 个可以通过 xgb 轻松管理的城市。

因此,如果您觉得地理影响您的目标变量,请使用更大的地理单位。