【问题标题】:How to handle multi-label categorical feature for binary classification problem?如何处理二进制分类问题的多标签分类特征?
【发布时间】:2020-03-15 18:29:49
【问题描述】:

我有这样的数据集:

   profile     category  target
0        1      [5, 10]       1
1        2          [1]       0
2        3   [23, 5000]       1
3        4  [700, 4500]       0

如何处理category功能,此表可能还有其他附加功能。一种热编码会导致占用太多空间。因为行数约为 1000 万。任何建议都会有所帮助。

【问题讨论】:

  • 问题是,类别代表什么?这是否意味着配置文件 1 中包含类别 5 和 10?
  • 是区间还是数组?
  • 它是一个数组,其中包含此配置文件所属类别的信息。像配置文件 1 一样属于类别 5 和 10。

标签: machine-learning data-science feature-extraction feature-engineering


【解决方案1】:

MultiLabelBinarizer 是解决这种稀疏输出内存不足的问题的解决方案,您可以将其他特征转换为稀疏矩阵,而不是将所有特征合并到机器学习模型中。

source

【讨论】:

    【解决方案2】:

    我的想法是拆分这个数组into new columns

    这将导致以下数据框:

       profile     0    1  target
    0        1     5    10       1
    1        2     1             0
    2        3     23   5000       1
    3        4     700  4500       0
    

    在下一步中,您可以根据this 调整获取特征的类别(如果配置文件具有此类别,则填充 1),这将导致以下数据框:

       profile     1  ...  5  ... 10 ... 23 target
    0        1     0       1       0      0      1
    1        2     1       0       0      0      0
    2        3     0       0       0      1      1
    3        4     0       0       0      0      0
    

    您会将每个类别都作为一个特征,这可以帮助您(类似于文本分类问题)。然后你可以使用一些技术来减少维度,比如pca

    通过这种方法,您尊重类别行为,并且可以在以后使用一些数学技术来减少您的维度。

    【讨论】:

    • 你正在做一种需要大量内存的“一次热编码”。
    • 我在做,但是如果你做 pca 会节省内存,你可以删除所有只有 0...或总是 1 的类别
    • 但是如果 RAM 不足以容纳那些热编码功能怎么办。因为行数为 1000 万,每行添加 5000 个特征。
    • 前两个步骤您可以轻松地按行数拆分,您可以分批运行,pca 您也可以只适合某些行,然后将其转换为其他行(您会失去一些准确性)。使用这种方法,您可以将其拆分为批次
    • 可解释性受到严重影响,准确性也受到严重影响。
    猜你喜欢
    • 2019-05-24
    • 2018-12-31
    • 2017-10-25
    • 2019-12-07
    • 2020-05-30
    • 2016-08-20
    • 2013-04-30
    • 2018-10-25
    相关资源
    最近更新 更多