正负样本不均衡的解决办法

本文探讨了在数据集中遇到类别样本数严重不均衡的问题,提出六种解决方案:1) SMOTE过采样小样本;2) 欠采样大样本;3) 对小类错分加权惩罚;4) 分治ensemble;5) 分层级ensemble;6) 基于异常检测的分类。这些方法旨在通过重采样、欠采样或调整权重来改善分类器的表现。

问题定义:数据集中,每个类别下的样本数目相差很大(数量级上的差距)。以下以二分类问题为例说明。

1. SMOTE(Synthetic Minority Over-sampling Technique)过采样小样本(扩充小类,产生新数据)

即该算法构造的数据是新样本,原数据集中不存在的。该基于距离度量选择小类别下两个或者更多的相似样本,然后选择其中一个样本,并随机选择一定数量的邻居样本对选择的那个样本的一个属性增加噪声,每次处理一个属性。这样就构造了更多的新生数据。(优点是相当于合理地对小样本的分类平面进行的一定程度的外扩;也相当于对小类错分进行加权惩罚(解释见3))


2. 欠采样大样本(压缩大类,产生新数据)
设小类中有N个样本。将大类聚类成N个簇,然后使用每个簇的中心组成大类中的N个样本,加上小类中所有的样本进行训练。(优点是保留了大类在特征空间的分布特性,又降低了大类数据的数目)


3. 对小类错分进行加权惩罚
对分类器的小类样本数据增加权值,降低大类样本的权值(这种方法其实是产生了新的数据分布,即产生了新的数据集,译者注),从而使得分类器将重点集中在小类样本身上。一个具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加“关心”小类样本。如penalized-SVM和penalized-LDA算法。
对小样本进行过采样(例如含L倍的重复数据),其实在计算小样本错分cost funct

### 处理机器学习中正负样本不平衡的策略和技巧 #### 数据层面的方法 对于数据集本身存在的不平衡问题,可以采用多种方式来平衡数据分布。 - **过采样**:增加少数类样本的数量。最简单的方式是对现有少数类样本进行重复复制。更复杂一点的是使用合成少数类过采样的技术(SMOTE),它不是简单的复制已有样本而是创建新的合成实例[^3]。 - **欠采样**:减少多数类样本数量以达到类别间的相对平衡状态。然而这种方法可能导致有用的信息被舍弃掉。为了克服这一缺点,提出了EasyEnsemble这样的算法,在该算法框架下,会把大量的多数类分成几个子集分别用于不同的基分类器训练过程之中。 #### 模型层面的方法 除了直接操作数据外,还可以通过对模型结构或参数设置做出改变来进行应对: - **集成学习**:通过组合多个弱分类器形成强分类器的方式来提升整体表现。具体来说,Bagging 和 Boosting 是两种常见的集成方法。前者通过并行构建独立的学习器实现多样性;后者则是串行地建立一系列学习器,并给予错误率较高的样本更多关注[^1]。 - **代价敏感学习**:赋予不同类型的误判不同程度的成本权重,使得模型在决策过程中更加重视那些成本更高的错分情况。这可以通过调整损失函数内部各类别的惩罚系数完成[^2]。 #### 训练与评估阶段的技术 最后,在整个建模流程里还有一些特别需要注意的地方: - **交叉验证**:当面临极不对称的数据分布时,普通的K折交叉验证可能会导致某些折叠完全没有包含任何来自较小群体的例子。因此建议采取StratifiedKFold等保持各层比例一致性的分割手段。 - **评价指标的选择**:准确度不再是衡量模型好坏的最佳标准。F1-score、AUC-ROC曲线下的面积(AUROC)或是Precision-recall曲线下方区域(AP)往往能提供更为合理的评判角度。 ```python from imblearn.over_sampling import SMOTE smote = SMOTE(random_state=42) X_resampled, y_resampled = smote.fit_resample(X_train, y_train) from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(n_estimators=100, random_state=42) clf.fit(X_resampled, y_resampled) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾世林jiashilin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值