首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习之非均衡数据处理

标题

问题导出

原因

解决方案

过采样

欠采样

不平衡学习的评价方法

问题导出

在对数据建模时,常常会遇到数据比例失衡的情况,以二分类为例,假设现在要训练一个模型,对信用卡是否有异常使用情况进行判断。大多数情况下,大家的信用卡是没有异常使用的,存在异常使用占很小的一部分比例。(假设异常为预测的正类)在这种情况会给模型投喂不均衡的数据很有可能导致模型什么都没有学到。极端的来说,模型判断所有的异常信用卡预测为为无异常,这样做模型仍然可以获得很高的正确率(因为模型不会误判信用卡异常,而且异常的只是占了很小的比例),但是此时模型的召回率和查准率为0,这样的模型毫无作用。

原因

造成模型不能正常的根本原因是,大多数的机器学习算法将所有数据一视同仁,以逻辑回归为例,逻辑回归的学习目标是使得对数损失函数达到最小,而造成损失的原因有二,一是将正类预测为负类,二是将负类预测为正类。由于负类样本远远多于正类样本,因此在模型训练的过程中将负类预测为正类一直是产生误差的主要原因,如果数据线性可分并且没有异常值,模型仍可以通过不断的迭代,使得分类超平面恰好将数据分开,倘若数据存在噪声,为了尽可能少的将负类误判为正类,分类超平面很有可能放在一个错误的位置(将很多正类预测为负类),导致召回率和查准率极低但正确率却很高的结果。由此得出传统的学习算法在不平衡数据中具有较大的局限性。

造成非均衡数据的情况可能有两种,一是在数据的真实分布中,数据比例的非均衡事实客观存在。二是由于数据量不够大,现有的数据并不接近数据的真实分布(实际上数据比例失衡并没有那么严重)。尽管原因不一样,但我们仍可以通过采样的方式,提高模型的效果。接下来为大家介绍几种常用的采样方法。

解决方案

过采样

过采样是通过增加少数类来处理数据非均衡问题。常见的重采样方法有随机过采样和SMOTE算法

随机过采样 :随机重采样通过多次对少数类样本有放回随机采样,以增加少数类样本的比例,由于少数类中会有很多重复的样本,因此随机重采样可能会导致过拟合问题。

SMOTE算法 : SMOTE算法则是利用类似K近邻的方法生成样本,具体的,对于每一个少数类样本,计算与其他少数类样本之间的欧式距离得其K近邻,然后选取从其k近邻中随机选择若干个样本,按照以下公式生成新样本。

欠采样

欠采样通过减小多数类样本的比例来处理数据非均衡问题,常见的欠采样方法有随机欠采样和EasyEnsemble算法

随机欠采样从多数类中随机选择少量样本,和原来少数类样本作为新的训练数据集,随机欠采样有两种类型分别为有放回和无放回两种。

EasyEnsemble算法与随机森林相似,它将多数类样本随机划分为N份,分别与少数类组成一个训练集训练N个模型,以N个模型的平均作为结果(分类则用投票)。

不平衡学习的评价方法

由于数据比例不平衡,我们不能以正确率作为模型评估的标准,对于这类问题,我们一般以召回率、查准率、F值、G-Mean、ROC曲线或者AUC面积作为模型评估标准。

经管重采样改变来原来数据集的分布,但在一定程度上,提高了模型的学习能力。以上方法的效果因数据而异,并且最佳的采样比例对模型效果的提升均需要多次的实验得出。幸运的是,第三方库imbalance learn已经实现这些采样算法,并且imbalance learn的使用方法与sklearn一样的,因此我们可以不必纠结于算法的实现,专心解决样本失衡问题。

资料来源:

网上各位大佬的博文

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180217G0OIW200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券