【问题标题】:Multiclass multilabel classification in CatBoostCatBoost 中的多类多标签分类
【发布时间】:2020-02-11 09:55:36
【问题描述】:

我需要使用 CatBoost 执行多类多标签分类。

示例数据:

X = [[1, 2, 3, 4], [2, 3, 5, 1], [4, 5, 1, 3]]

y = [[3, 1], [2, 8], [7, 8]]

您能提供一个工作示例吗?

我想我需要用一些 sklearn 分类器包装 CatBoostClassifier。

谢谢!

【问题讨论】:

    标签: catboost


    【解决方案1】:

    你是对的,这可以使用 sklearn 包装器来完成,特别是 sklearns 实现 one-vs-rest 分类器。该技术为每个类构建一个分类器,将您的问题视为二进制分类问题的组合,每个类一个。

    这是如何工作的?对于给定的类,标有给定类的样本构成正样本,所有其他样本都被视为负样本。

    当您的课程数量很少时,这是一种可行的方法。 然而,当你有大量的类时,内存使用和训练时间就会变得令人望而却步。在这种情况下,如果您拥有大量数据,使用基于神经网络的方法来实现解决方案可能会更有效。

    这是一个工作示例:

    from catboost import CatBoostClassifier
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.preprocessing import MultiLabelBinarizer
    
    ##Using your example data 
    
    X = [[1, 2, 3, 4], [2, 3, 5, 1], [4, 5, 1, 3]]
    
    y = [[3, 1], [2, 8], [7, 8]]
    
    mlb = MultiLabelBinarizer()
    mlb.fit(y)
    y_k_hot = mlb.transform(y)
    
    ovr = OneVsRestClassifier(estimator=CatBoostClassifier(iterations=10,random_state=1))
    ovr.fit(X,y_k_hot)
    
    ovr.predict(X)*mlb.classes_
    
    array([[1, 0, 3, 0, 0],
           [0, 2, 0, 0, 8],
           [0, 0, 0, 7, 8]])
    
    

    【讨论】:

    • 这个上下文有多少类?
    • @Walter 这取决于您的个人估算器有多大,在这种情况下,我们使用 catboost 作为我们的基本估算器。 catboost 模型比 simlpe 线性回归模型大得多。所以我要说的是,如果你使用 catboost 作为基本估计器,你可能会发现当你有 ~>100 个类时,你的 OVR 模型变得非常大(几 GB)。但是您总是可以减少每个 catboost 模型中的树数来缓解这种情况,但会牺牲您的模型性能。
    • 谢谢拉斯。我放弃了集成方法(Catboost、LighGBM、XGBoost 等)作为解决分类问题的选项,因为我在 3 个不同的标签中有几十到几百个类,它们都是分类的,所以我需要使用 one-hot-编码,最后没有得到好的分类结果。因为类、标签和数据量可能不同我尝试了 Auto ML,它处理多标签和多类,但我发现控制最后一层的问题(我想使用带 Logits 的交叉熵)和一个准确度差。
    • 我知道问题不在于我正在谈论的算法,但它可以帮助到这里的人。现在我通过 Huggingface、Simple Transformers、PyTorch 和 TensorFlow 使用带有 Bert 和 Roberta 架构的 Transformers。为了测试 Auto ML,我使用了 Auto Keras,我需要在未来测试 H2O 和 Auto Sklearn——这确实采用了“机器学习”方法,与其他采用“深度学习”方法的方法不同。 Auto ML 在 GCP 上可用,因此可以轻松缩放图像、视频、表格等;数据。
    猜你喜欢
    • 2018-08-04
    • 2019-04-01
    • 2017-12-28
    • 2019-03-22
    • 2019-02-26
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多