欠采样是什么?减少多数类样本来平衡数据
欠采样(Undersampling),也叫下采样,是机器学习中处理类别不平衡问题的一种方法:通过减少多数类别的样本数量,使各个类别的样本数量变得更加平衡,从而让模型在训练时不会过度偏向多数类别。它与过采样相对:过采样是增加少数类的样本,欠采样是减少多数类的样本。
为什么需要欠采样
在类别不平衡的数据中,比如一百万笔交易中只有一千笔是欺诈交易,模型在训练时几乎只能看到正常交易,很容易学会把所有交易都判断为正常,虽然准确率高达 99.9%,却完全找不出欺诈交易。欠采样通过去掉一部分正常交易的样本,让模型在训练时能够更多地关注少数类别。另外,当多数类的样本数量极其庞大时,欠采样还能大幅减少训练数据的规模,加快训练的速度、降低计算的成本。
常见的欠采样方法
随机欠采样:最简单的方法,从多数类中随机地删除一部分样本,直到两类的数量达到想要的比例。它简单快速,但缺点也很明显:被删掉的样本中可能包含有用的信息,尤其是当删掉的比例很大时,模型可能学不到多数类的完整面貌。
有选择的欠采样:不是随机地删除,而是有针对性地选择要删除或保留的样本。Tomek 链接:如果一个多数类样本和一个少数类样本互为对方的最近邻,它们就构成一个 Tomek 链接,这些样本通常位于两类的边界上,或者是噪声。删除其中的多数类样本,可以让两类之间的边界更加清晰。近邻清理和编辑最近邻:删除那些被周围的少数类样本包围、与邻居的类别不一致的多数类样本。NearMiss:根据多数类样本与少数类样本之间的距离,选择保留那些离少数类最近或最具有代表性的多数类样本。基于聚类的方法:先对多数类样本进行聚类,再用每个簇的中心或代表样本来代替整个簇,在减少数量的同时尽量保留多数类的分布特征。
集成的方法:为了弥补随机欠采样丢失信息的缺点,可以多次进行欠采样,每次都得到一个不同的平衡的子集,分别训练多个模型,再把它们组合起来。比如 EasyEnsemble 方法,每个模型只看到多数类的一部分,但所有模型合在一起看到了多数类的全部,既平衡了类别,又没有浪费数据。
使用时的注意事项
欠采样只能在训练集上进行,不能对验证集和测试集进行欠采样,它们应该保持数据的真实分布,这样评估的结果才能反映模型在实际中的表现。欠采样改变了训练数据中各类别的比例,模型输出的概率会因此偏高,如果需要准确的概率值,比如用于风险定价,需要进行校准。此外,欠采样与过采样也可以结合使用,比如先用 SMOTE 进行过采样,再用 Tomek 链接清理边界附近的噪声样本。除了改变数据,为少数类设置更高的损失权重、调整分类阈值等方法也常常能达到类似的效果。
信号处理中的欠采样
在信号处理中,欠采样指的是以低于奈奎斯特频率(信号最高频率的两倍)的频率对信号进行采样,这通常会导致混叠,使信号失真。但在某些特殊的场合,比如对频率集中在某个窄带内的高频信号进行采样时,也可以有意地利用欠采样来降低对采样设备的要求,这叫带通采样。