使用Python的欠采样技术
内容提要
文章讨论机器学习中的类别不平衡问题及欠采样技术。数据不平衡会使模型偏向多数类,导致欺诈检测、疾病诊断等场景漏判。作者以SVM为例说明分布越均衡分类越准,并介绍imbalanced-learn库中的NearMiss(三种版本)、压缩最近邻(CNN)和Tomek Links等欠采样方法,通过减少多数类样本改善模型性能与公平性。
延伸解读
类别不平衡的实际影响
文章以欺诈检测和疾病诊断为例,说明类别不平衡会导致模型偏向多数类,从而漏判少数类。在欺诈检测中,模型可能将交易预测为合法,忽略罕见的欺诈;在医疗中,可能错过早期疾病信号。这种偏差不仅降低模型准确性,还可能带来严重后果,因此处理不平衡数据是建模前的关键步骤。
欠采样技术如何工作
欠采样通过减少多数类样本使数据分布更均衡。文章介绍了NearMiss、压缩最近邻(CNN)和Tomek Links三种方法。NearMiss保留与少数类距离较近的多数类样本;CNN通过1-最近邻迭代选择多数类样本;Tomek Links则移除互为最近邻的异类样本对中的多数类样本,以增加类间间隔。这些方法各有侧重,适用于不同数据场景。
NearMiss的三种版本差异
NearMiss有三种版本:NearMiss-1选择与最近三个少数类样本平均距离最小的多数类样本;NearMiss-2选择与最远三个少数类样本平均距离最小的多数类样本;NearMiss-3则为每个少数类样本保留最近的多数类样本。文章通过代码示例展示了NearMiss-1的使用,并指出可通过调整version参数切换版本,n_neighbors参数控制邻居数量。
使用欠采样的注意事项
文章指出,并非所有数据集都需要欠采样,仅当类别分布严重失衡时才需考虑。欠采样可能丢失多数类中的重要信息,因此选择方法时应结合具体数据和项目目标。imbalanced-learn库提供了便捷的实现,但使用者需理解各方法的原理和参数,以做出明智决策。
Q&A
为什么数据不平衡会导致模型预测出现偏差?
数据不平衡时,多数类样本占主导,模型会倾向于预测多数类,从而忽略少数类。例如在欺诈检测中,模型可能将交易都预测为合法,导致漏判欺诈;在疾病诊断中,可能漏诊罕见疾病。
NearMiss欠采样有哪几种版本,它们有什么区别?
NearMiss有三种版本:NearMiss-1选择与最近的三个少数类样本平均距离最小的多数类样本;NearMiss-2选择与最远的三个少数类样本平均距离最小的多数类样本;NearMiss-3为每个少数类样本选择距离最近的多数类样本,以保证每个少数类样本都有足够的邻居。
压缩最近邻(CNN)欠采样是如何工作的?
CNN方法首先将多数类的一个子集视为噪声,然后使用1-最近邻算法进行分类。如果多数类实例被误分类,则将其加入子集,重复此过程直到没有实例被加入。最终得到一个浓缩的多数类子集。
Tomek Links欠采样是什么,它如何平衡数据?
Tomek Links是相反类别的最近邻对。通过移除每对中多数类的实例,可以增加两类之间的间隔,从而减轻分类难度,达到平衡数据的目的。
在Python中如何使用imbalanced-learn库进行欠采样?
首先安装imbalanced-learn库(pip install -U imbalanced-learn),然后导入相应的欠采样类(如NearMiss、CondensedNearestNeighbour、TomekLinks),实例化后调用fit_resample方法对数据集进行重采样。
欠采样技术主要适用于哪些场景?
欠采样适用于类别不平衡的二分类或多分类问题,如金融欺诈检测、疾病诊断等罕见事件预测。通过减少多数类样本,可以改善模型对少数类的识别能力,提高模型性能和公平性。