人工智能

人工如智能何解决不平衡数据集的问题

2021-05-31 13:19:30 | 来源:中培企业IT培训网

平衡训练数据是数据预处理的重要组成部分。数据不平衡是指数据集中的类分布不均,这可能会导致模型训练的潜在风险。有几种方法可以平衡训练数据和克服不平衡数据,包括重采样和权重平衡。想象一下,如果有一个模型可以识别图片中是狗还是猫。在测试过程中,模型正确识别了图片中的所有狗,但没有识别出猫。在查看训练数据集时,意识到有10张狗的图片和100张猫的图片。这是数据不平衡的一个例子,其中每个对象类的数据集没有可比数量的实例。

你需要知道的事实是,不平衡的数据无处不在,无法避免数据集不平衡。考虑一个调查电动车车主对电动车维修费意见的例子。因为大部分开电动车的人年收入都很高,所以80%的结果是“收费还算合理”。

换句话说,数据集是有偏见的。一个训练来预测调查反应的模型通常会预测一个人,无论收入、驾驶倾向或汽车偏好如何,都会认为费用低廉。

在检查犯罪数据时也会出现同样的问题。在使用人工智能 (AI) 预测犯罪行为时,不平衡的犯罪数据集会使数据集中存在的种族和性别偏见永久化。在面对不平衡数据时,使用方法改进训练过程至关重要,平衡训练数据有两种主要方法:关注数据集或权重。

在我们不想改变模型的情况下,我们可以简单地进行数据预处理。换句话说,我们应该查看我们的数据集,了解数据分布,并决定如何重新采样我们的数据,这是平衡训练数据的一步。这里,有两种可能的方法:

过/欠采样:在少数类中增加样本或在多数类中减少样本。

聚类技术:这类似于重采样,但不是将样本添加到不同的类中,我们首先找到每个类中的子类或子簇,然后复制子类中的样本以确保大小相等。

权重平衡是平衡训练数据和处理不平衡数据的另一种好方法,这是通过乘以 logits 将类权重添加到损失函数来完成的。我们首先定义类权重以赋予少数类额外的权重,然后将类权重乘以损失函数。在 Tensorflow 中,您可以执行以下操作:

loss = tf.nn.softmax_cross_entropy_with_logits(labels, pred)

weighted_loss = loss * class_weights

为什么我们要将权重乘以原始损失函数?这使得损失成为加权平均值,其中每个样本的权重由其对应类的 class_weight 指定。

在 Modzy 平衡训练数据

在 Modzy,我们的数据科学家将数据预处理视为一项 关键任务。在训练我们的模型之前,我们确保我们的数据集不会产生潜在风险并且我们的模型是稳健的。

这对您意味着什么

在 AI 激增的世界中,重要的是我们要特别关注训练数据,以降低有偏差输出的风险。

上述就是关于如何解决不平衡数据集的问题的全部内容,想了解更多关于人工智能的信息,请继续关注中培伟业。

猜你喜欢