如何使用类别权重改善机器学习中的类别不平衡?2025年2月28日 | 阅读 6 分钟 引言分类中的主要问题之一是类别不平衡,尤其是在二元分类中,这几乎在所有情况下都会导致预测不佳。这种情况发生在数据集被一个类别主导时,会促使模型偏向于数据集中占主导地位的那个类别。在处理此问题并已在文献中得到揭示的方法中,我们可以包括使用类别权重。 由于少数类样本的概率具有更高的权重,因此模型从中学习的能力得到了显著增强,可以解决偏向多数类的问题。在本文中,作者将解释类别权重,为什么它在处理类别不平衡方面很有用,以及它如何有效地提高模型在处理不平衡数据集方面的表现。 理解类别不平衡现在我们对类别权重技术有了一定的了解,有一些背景信息需要理解关于类别不平衡问题。在分类问题中,类别不平衡是指一个类别比其他一个或多个类别拥有更多的样本。例如,在类别 A 占数据 90%,类别 B 占数据 10% 的二元问题中,就会出现类别不平衡的问题。 为什么类别不平衡很重要当存在类别不平衡时,机器学习中类别的使用会以多种方式对模型的性能产生负面影响。这意味着多数类可能会主导模型,导致模型难以很好地泛化到少数类。这尤其危险,因为少数类具有重要意义,例如在欺诈检测、对孤立疾病的识别中,不平衡会导致严重的误判。 类别权重作为处理类别不平衡的方法通过为类别分配权重,可以显示出处理类别不平衡的简单方法。这种方法包括在训练期间优先考虑少数类样本的重要性,同时降低多数类样本的重要性。通过这样做,可以更清晰地关注少数类,以期提高其预测能力。 如何有效实施类别权重
带有类别权重的逻辑回归损失函数在逻辑回归中,默认的二元交叉熵损失函数可以通过包含类别加权来修改。假设有两个类别,分别是类别 0(权重为 w0)和类别 1(权重为 w1)。修改后的损失函数可以表示为 L(y, p) = -(y * w0 • log(p) + (1 - y) * w1 • log(1 - p))
如何获得 w0 和 w1当应用程序需要更复杂的标准来将记录分类为正常或异常时,会使用类别权重(w0 和 w1)。 确定类别权重在处理机器学习中的类别不平衡问题方面非常重要。目的是设计权重,以增强少数类在训练过程中的作用,从而减弱多数类的作用。有许多方法可用于确定这些权重,其中最常见的方法之一是反类别频率法。 反类别频率法该方法与类别频率法识别类别的方式相反。 这种对类别进行加权的方法取决于每个特定类别中的样本数量。对于具有类别 0 和 1 的二元分类问题,可以使用以下公式计算类别权重
其中
在此方法中,将样本的总计数除以每个类别脉冲计数的两倍;这样,它通过使模型训练期间两个类别的总权重相等来帮助克服类别不平衡问题。 代码片段 说明 在上面的代码中,calculate_class_weights 函数以数组 y 作为输入,在二元分类问题的情况下,该数组包含类别标签(0 和 1)。该函数采用频率倒数法来获取类别权重,然后返回一个包含权重及其所属类别的字典。total_samples 存储数据集中样本的数量,unique_classes 存储数据集中不同的标签,class_counts 存储每个标签的样本数量。 类别权重估算过程在机器学习系统中的类别不平衡情况下很重要。因此,尽管反类别频率法并不复杂,但它在考虑类别频率的性质方面可以准确地确定权重。在训练模型时,确保模型更关注少数类,从而提高准确率。 在执行逻辑回归时引入类别权重在将类别权重应用于逻辑回归时,应该利用 TensorFlow/Keras 或 Scikit-learn 等著名的机器学习框架。 代码片段 在 Scikit-learn 中使用类别权重代码片段 结论传统的机器学习算法的一个常见问题是类别不平衡,尽管这仍然是一个普遍存在的问题,但可以使用类别权重来解决。为训练模型设计的一些技术包括优先考虑属于少数类的实例,希望模型能够以更平衡的准确率进行预测。但同样重要的是,要尝试不同的方法来找出最适合给定问题的方法。 下一主题机器学习基本概念 |
我们请求您订阅我们的新闻通讯以获取最新更新。