聚合分类变量的方法是什么?

数据挖掘 分类 分类数据 词嵌入 聚合 数据流挖掘
2022-03-02 22:49:54

我正在研究点击流数据集。我想出了以下示例数据集来解释我的问题:

ClickTimeStamp        | SessionID | ART_weekOfYear | PagenameClicked | TimeSpentPerSession | CustID | ContractID | ... | TARGET |
2017-01-04 16:48:00   | 1         | 1              | P1              | 1                   | abc    | xyz        |     | 1      |
2017-01-04 16:48:53   | 1         | 1              | P2              | 1                   | abc    | xyz        |     | 1      |
2017-01-11 10:09:57   | 2         | 2              | P1              | 2                   | abc    | xyz        |     | 1      |
2017-01-11 10:11:24   | 2         | 2              | P4              | 2                   | abc    | xyz        |     | 1      |
2017-01-27 13:22:39   | 3         | 4              | P1              | 2                   | abc    | mnp        |     | 0      |
2017-01-27 13:24:01   | 3         | 4              | P7              | 2                   | abc    | mnp        |     | 0      |

上述数据集的每一行都有点击,TARGET 是(假设)合同是否保留(1)或不保留(0)。请记住,目标处于合同级别。

现在,我根据需要聚合上述数据集(即在 contractID 上聚合),训练集如下所示:

CustID | ContractID | ... | SessionID_conct | ART_weekOfYear_conct | PagenameClicked  | TimeSpentPerSession_avg | TARGET | 
abc    | xyz        |     | "1-2"           |"1-2"                 | "P1->P2->P1->P4" | 1.5                     | 1      |
abc    | mnp        |     | "3"             |"4"                   | "P1->P7"         | 2                       | 0      |

问题: 对于数字特征,我只是取平均值(如 TimeSpentPerSession_avg),但对于分类特征,这并不简单。实际上,我的分类特征具有非常高的基数,例如“ PagenameClicked ”。所以我不能简单地将我的分类特征转换为虚拟变量,然后将它们聚合为数值特征。

我想知道处理分类特征的可能解决方案,使维度不会爆炸,并且我还可以在contractID上聚合新的表示。

我已经尝试过实体嵌入并阅读本文了解详细信息。我将每个分类特征转换为 16 维的嵌入表示。但是,现在我被困在为每个 contractID 聚合这些嵌入向量。请让我知道是否有人朝这个方向工作或有更好的解决方案。

感谢分配阅读这个问题。:)

1个回答

您的问题本质上是您的功能具有高基数,对吗?这将与您的问题有关,但您可以寻找平均编码。本质上,您将用目标变量的平均值替换类别,但是,这很容易过度拟合,您应该小心。

以下两个视频将给出很好的解释:

https://www.coursera.org/learn/competitive-data-science/lecture/b5Gxv/concept-of-mean-encoding https://www.coursera.org/learn/competitive-data-science/lecture/LGYQ2 /正则化

另一个想法是将相似的序列分组为一个片段,例如,假设我们有:

  • A->B->C 和 B->C

如果这在您的应用程序中有意义,则可以仅将其转换为一个变量。