Lightbm 多标签分类

2025年03月17日 | 阅读 9 分钟

多标签分类允许每个实例同时分配给多个类别,而不是仅仅一个。例如,在一款音乐推荐系统中,一首歌曲可能被归类为多个流派,如“摇滚”、“蓝调”和“爵士”。相比之下,在传统的分类任务中,一个实例通常被分配给一组互斥类别中的一个。

预测每个事件的多个标签导致多标签分类固有的难度。因此,需要能够表示各种标签之间相关性和相互依赖性的模型。传统技术可能无法有效处理这种复杂性,尤其是在处理大数据集和高维特征空间时。

微软创建了 LightGBM,一个利用基于树的学习技术的梯度增强框架。它旨在实现可扩展性、高效性,并能够处理大量数据。LightGBM 通过多种改进实现了这一点,例如叶子生长策略、对大数据集的有效处理以及基于直方图的决策树学习。基于直方图的技术通过将连续信息离散化为离散区间来加速训练过程。虽然其他梯度增强技术采用深度优先方式构建树,但 LightGBM 采用叶子优先方式构建树,专注于损失减少最大的叶子,从而提高了准确性。LightGBM 还针对性能进行了优化,使其适用于大型高维数据集。

我们可以利用 LightGBM 在同时处理多个二元分类问题方面的适应性和效率,从而将其修改用于多标签分类。二元相关 (BR)、分类器链 (CC)、标签幂集 (LP) 和集成方法是一些流行技术。最简单的方法是二元相关,其中使用二元分类器独立学习每个标签,该分类器可以有效地使用 LightGBM 进行训练。尽管此方法单独处理每个标签,但可能无法很好地捕捉标签关系。相反,分类器链以类似于链的方式训练二元分类器,使用每个分类器的预测作为后续分类器的额外特征。这使得模型能够识别标签之间的相关性和依赖性,从而提高预测准确性。标签幂集方法将所有可能的标签组合视为一个单独的类别,从而将多标签问题简化为单个多类别问题。因此,可以使用 LightGBM 训练多类别分类器。但是,当存在大量不同标签组合时,此方法可能无法实施。

代码

现在为了更好地理解这个概念,我们将借助 Lightbm 尝试对鸢尾植物进行分类。

导入库

读取数据集


Lightbm Multilabel Classification

现在我们将创建一个自定义多类别对数损失函数和准确性指标,以用于 LightGBM,一个梯度增强框架。


编码目标

我们将把目标值转换为序数值。

输出

Lightbm Multilabel Classification

输出

Lightbm Multilabel Classification

拆分数据

现在我们将使用两种方法来训练 LightGBM 模型以完成多类别分类任务:一种使用自定义多类别对数损失函数,另一种使用 LightGBM 提供的内置多类别目标函数。

输出

Lightbm Multilabel Classification

输出

Lightbm Multilabel Classification

多任务

现在我们将介绍一个自定义数据集类 MultiLabelDatasetForLGBM,专门用于在 LightGBM 中处理多标签数据,以及一个自定义损失函数 MultiMSEForLGBM,用于多任务均方误差。



编码目标

这里我们现在将使用不同的方法,我们将把目标编码为分类值。

输出

Lightbm Multilabel Classification

拆分数据

训练

现在我们将再次训练模型。

输出

Lightbm Multilabel Classification

输出

Lightbm Multilabel Classification

比较预测

现在将 softmax 函数应用于预测的 logits 以获得类别概率,对于回归任务,预测直接从训练好的模型中获得,无需额外的转换。

输出

Lightbm Multilabel Classification

输出

Lightbm Multilabel Classification

输出

Lightbm Multilabel Classification
下一个主题蒙特卡洛方法