我有一个非常不平衡的两类数据集:第一类为 2%,第二类为 98%。这种不平衡不会使训练变得容易,因此通过对第 2 类进行欠采样来平衡数据集似乎是一个好主意。
但是,正如我所想,机器学习算法不应该期望在自然界中与其训练集中相同的数据分布吗?我当然知道,自然界中的数据分布与我的不平衡数据集相匹配。这是否意味着平衡数据集会对神经网络的测试性能产生负面影响?当它假设由我的平衡数据集引起的数据分布不同时。
我有一个非常不平衡的两类数据集:第一类为 2%,第二类为 98%。这种不平衡不会使训练变得容易,因此通过对第 2 类进行欠采样来平衡数据集似乎是一个好主意。
但是,正如我所想,机器学习算法不应该期望在自然界中与其训练集中相同的数据分布吗?我当然知道,自然界中的数据分布与我的不平衡数据集相匹配。这是否意味着平衡数据集会对神经网络的测试性能产生负面影响?当它假设由我的平衡数据集引起的数据分布不同时。
这个问题问得好。您的问题是神经网络的经典分类问题。在这个问题中,神经网络的主要目标是通过一些非线性(通常)变换来变换数据,使数据变为线性可分的,以便最后一层执行分类。
注意事项:这不是回归问题,因此您正在尝试拟合曲线。每当逻辑上存在回归问题时,您都可以使用 PDF 编写有关新数据的某种信息。您可以用数学方式表达数据落在一定误差范围内的概率,因为这是一个优化连续函数问题(通常是 RMSE)。
这不是分类器的情况。分类器遵循伯努利概率(尽管我们将成本函数表示为连续的)。因此,当前事件与过去事件无关。这使得分类器更难训练不平衡类。所以如果我们写:
func foo(data):
return True
它几乎有 98% 的准确率,但你可以理解我们不想要这种类型的分类器。
一般来说,我们希望这两个类都具有良好的准确度分数,有时这是通过以下方式衡量的但我喜欢从比例的角度来考虑。如果我们有例子在一个类中,然后和分类器和分别在两个类中正确预测,然后我会检查两个指标和,这为您提供了总体思路。
在实践中,2% 的识别有时比其余的 98%(飞机缺陷、癌症检测)重要得多。因此,我们使用称为异常检测器的特殊 ML 算法来解决此类问题。