分类到一种热编码 - 大数据

数据挖掘 机器学习 深度学习 分类 特征选择 分类数据
2022-02-18 07:21:40

我有一个销售数据集,其中包含作为输出的二进制标签 - 我们产品的“业务赢”和“业务损失”。

我们有一组与我们开展业务的一级客户(我们称该组为千斤顶)。然后这些千斤顶将我们的产品出售给最终客户(我们称该组为玫瑰)。

这些销售数据包含销售 id、产品 id、产品名称、产品类型、细分市场(如 APAC、EMEA 等)、jack id、jack 类别、jack 地区、rose id、rose 类别、rose 地区、项目 id、项目名称等

一个千斤顶可以在多个不同的项目(相同或不同的玫瑰)中销售相同的产品。

如您所见,我的大多数输入变量本质上都是分类的。

我想了解影响业务成果的功能有哪些?那是赢还是输?

如果这是一个商业赢或输,我想知道为什么会这样(使用 Lime 或 SHAP 等)

我的问题

a) 既然有超过 100 种独特的产品,我应该为所有 100 种产品创建一个热编码变量吗?我们想了解产品是否是可以帮助我们预测业务是否可能失去或赢得业务等的功能之一?例如:订购产品 A 时,该业务有 80% 的机会亏损。这是特色之一。同样,我想获得这种详细的见解。我不想简单地知道可变产品是一个重要因素。我想知道哪种产品会导致业务亏损或盈利。希望这可以帮助

b) 我知道我们可以为区域变量创建 one-hot 编码变量,因为它只有 4 个值,例如 APAC、EMEA、GC、EUROPE 等。

c) 我在数据集中的总行数是 300K。但正如您所看到的,大多数分类变量都有 100 个唯一值。我应该如何决定它是否有一个热编码?

d) 有没有其他更好或替代的方法来做到这一点?

2个回答

让我们一一回答您的问题。

a) 既然有超过 100 种独特的产品,我应该为我的所有 100 种产品创建一个热编码变量吗?

有很多方法可以对分类变量进行编码,您可以在此处找到它们的列表。您应该使用哪一个取决于您的数据。分类变量可以是多种类型,例如ordinal并非所有编码器都适用于所有类型的分类变量。一个简单的谷歌搜索将引导您找到文章,您可以在其中找到有关何时使用哪个编码器的所有必要信息。以下是我找到的几篇文章第 1条、第 2条、第 3 条nominalhigh cardinalitylow cardinality

由于您的基数超过 100,使用OneHotEncoder会导致维度增加,这不是一件好事。因此,您应该选择其他编码器OrdinalEncoder TargetEncoder,具体取决于您的数据类型。

我想知道哪种产品会导致业务亏损或盈利。

Shap您可以使用和/或Lime轻松获得这些类型的见解。

b) 我知道我们可以为区域变量创建 one-hot 编码变量,因为它只有 4 个值,如 APAC、EMEA、GC、EUROPE 等。

是的,只要它们之间没有意义或顺序,您就可以对它们进行一次热编码。

c)我在数据集中的总行数是 300K。但正如您所见,大多数分类变量都有 100 个唯一值。我应该如何决定它是否有一个热编码?

如上所述,使用哪种编码器取决于您的数据类型和问题类型,即天气是分类还是回归问题。

d) 有没有其他更好或替代的方法来做到这一点?

是的,有。查看我上面提到的链接!:D

干杯!

我建议您使用目标编码方法对高基数分类变量进行编码:

如果您想了解模型在做什么,我建议您查看可解释性书籍https://christophm.github.io/interpretable-ml-book/