在银行欺诈检测、实时竞价、网络入侵等领域,数据集通常极不平衡——正类样本往往不足1%。多数机器学习算法对此处理不佳,以下七种技术可有效应对。
1. 选用正确评估指标
精度在不平衡数据下易失真(如全判负类可达99.8%准确率,却毫无价值)。应改用精确率/召回率、F1分数、MCC或AUC等指标。
2. 重采样训练集
欠采样:从多数类随机抽取与少数类等量样本,适用于数据充足时。
过采样:通过复制、Bootstrap或SMOTE生成少数类新样本,适用于数据不足时。
两种方法可结合使用,优劣取决于具体场景。
3. 正确使用K折交叉验证
过采样必须在交叉验证之后进行,否则会因引入人工生成数据而导致过拟合。需在重采样前做交叉验证,保证评估的客观性。
4. 组合不同重采样数据集
利用多数类全部样本,多次随机抽取不同子集,与少数类组合训练多个模型,再集成预测。该方法易于并行化,泛化能力好。
5. 尝试多种采样比例
不局限于1:1,可尝试1:3、2:1等不同比例训练不同模型,有助于调整模型对各类别的敏感度。
6. 对多数类聚类
将多数类样本聚类为若干组,仅保留簇中心(质心)参与训练,可更好覆盖多数类分布,减少随机采样偏差。
7. 设计定制模型
若模型本身能处理不平衡,如XGBoost,可直接使用。更进一步的方案是自定义损失函数,对少数类误分类施以更高惩罚,例如调整SVM的类别权重。
小结
以上技术并非穷举,也无普适最优解。建议结合实际数据,创造性地组合多种方法,并持续关注数据时效性——此类领域“市场规则”变化频繁,过期数据会严重影响模型效果。