机器学习中的样本不平衡问题如何解决?
作者:互联网
近些年,随着智能化应用概念在各个行业的普及、智能应用项目的落地实践,作为智能应用的基础技术-机器学习,也得到了广泛的应用并取得了不错的效果。与此同时,在实际的项目应用中也经历了各种各样的难题,如数据分散难统一、输出结果滞后、数据不准确等,其中样本不平衡就是一个典型的数据问题。
样本不平衡问题是指在进行模式分类时,样本中某一类数据远多于其他类数据而造成对少数类判别不准确的问题,而实际应用中数量较少的样本往往包含着关键的信息。例如在设备故障预测中的故障样本,产品质量分析中的不合格样本,用户流失预警中的流失用户,窃电识别中的窃电用户,医疗诊断中的病例样本等等,都是在智能化应用分析过程中需要重点关注的对象。
对于样本不平衡分类问题的解决,我们目前尝试过5个方向:
1、改变数据分布,降低不平衡度,包括采样的方法(过采样算法、欠采样算法)和数据合成的方法;
2、优化算法,分析已有算法在面对不平衡数据的缺陷,改进算法或者提出新算法来提升少数类的分类准确率,主要包括代价敏感和集成学习;
3、引入先验知识,在建模的过程中的样本生成、模型设计、模型训练阶段引入先验知识,提升模型准确性;
4、迁移学习,利用其它领域相似的数据和知识对本领域内模型进行优化;
5、调整业务目标,尝试改变看问题的角度,调整业务的目标或将业务问题进行转换。
01、改变数据分布
►通过采样的方式
采样方法是通过对训练集进行处理使其从不平衡的数据集变成平衡的数据集,在大部分情况下会对最终的结果带来提升。采样分为过采样和欠采样,其中过采样是把小众类复制多份,而欠采样则是从大众类中剔除一些样本,或者说只从大众类中选取部分样本。
►数据合成方式
数据合成是通过少量可用的样本生成更多的样本,即从原始数据分布的角度来进行的,生成和真实数据分布相似的数据,达到样本增强的目的。主要的样本增强方法包含:SMOTE平滑、GAN生成对抗网络模型等。
SMOTE平滑主要应用在小型数据集上来获得新的样本,实现方式是随机选择一个样本,计算它与其它样本的距离,得到K近邻,从K近邻中随机选择多个样本构建出新样本。
GAN生成对抗网络模型:主要包括了两个部分,即生成器 generator 与判别器 discriminator。生成器主要用来学习真实数据分布从而让自身生成的数据更加真实,以骗过判别器。判别器则需要对接收的数据进行真假判别。在整个过程中,生成器努力地让生成的数据更加真实,而判别器则努力地去识别出数据的真假,这个过程相当于一个二人博弈,随着时间的推移,生成器和判别器在不断地进行对抗,最终两个网络达到了一个动态均衡:生成器生成的数据像接近于真实数据分布,而判别器识别不出真假数据,从而达到构建更多新样本的目的。
例如,在用户窃电识别模型中,数据库中查实的窃电用户量整体较少,如果直接构建模型会导致模型泛化性能低,易过拟合,无法使模型更精准的学习到窃电用户的特性。那么为了保障模型的准确率,我们可以基于查实的窃电用户数据,针对不同窃电手段数据通过采用SMOTE平滑方法对数据进行样本增强,获取到更多符合原始数据分布的样本,让智能模型充分学习到窃电用户的特性,有效地提高模型的泛化性能和抗干扰能力。该模型采用数据样本增强后,窃电用户识别模型准确率从70%提升至86%,为项目带来实质性的提升。
需要注意的是,通过采样的方式增加样本适用于样本量有一定基础的情况,对于样本数据本身较小,或样本极度不均衡的情况如异常样本只有个位数,使用起来意义并不大。数据合成的方法在一些领域使用较多,如在电信行业的流失行为预测、电网领域的用户画像,图像识别等,但是在工业领域,如产品的加工过工程,设备的故障产生,数据之间都就有很强的关联性,数据之间存在内在的物理关系,而数据合成的方法只关注了数据的分布特征,而忽略了数据之间的强关联关系,因此往往导致生成数据脱离现实情况。
02、优化算法
从算法层面,在模型设计与训练中采用倾向性策略以缓解样本的不平衡程度,主要包括代价敏感和集成学习。代价敏感通过修改损失函数使得模型更加重视少数类,集成学习通过将多个分类器的结果集成提高整体分类准确度。
►从评价指标的角度
对于数据极端不平衡时,这时候就不能观察模型准确率这个指标了。我们可以通过观察训练结果的精准率和召回率,这样做有两个好处:一是可以了解算法对于数据的敏感程度;二是可以明确采取哪种评价指标更合适。针对机器学习中的样本不平衡问题,建议更多采用PR(Precision-Recall曲线),而非ROC曲线,如果采用ROC曲线来作为评价指标,很容易因为AUC值高而忽略实际对少量样本的效果其实并不理想的情况。
当然在实际的应用中,也应结合业务需要来确定评价指标的选择。例如,在流失预警场景中,应根据现场维护人员的数据量,决定是采用召回率作为主要评价指标还是以精准率作为主要指标。另外,在工业应用中,如果将模型作为辅助手段用于质量预警时,主要考虑的模型的准确性,要确保每次给出的结果是准确的,在设备故障判断时,要确保召回率,不能漏掉任何一个故障。
►代价敏感法
代价敏感法核心思想是在算法实现过程中,对于分类中不同样本数量的类别分别赋予不同的权重(一般思路分类中的小样本量类别权重高,大样本量类别权重低),通过这种方式使模型更加重视小样本类,然后进行计算和建模。
►集成学习
集成方法指的是在每次生成训练集时使用所有分类中的小样本量,同时从分类中的大样本量中随机抽取数据来与小样本量合并构成训练集,这样反复多次会得到很多训练集和训练模型。最后在应用时,使用组合方法(例如投票、加权投票等)产生分类预测结果。如果计算资源充足,并且对于模型的时效性要求不高的话,这种方法比较合适。
03、引入先验知识
利用先验知识,将业务知识、机理规则等引入机器学习的样本生成、模型设计、模型训练等阶段也是解决样本不平衡问题的一个思路。先验知识可以快速推广到只包含少量监督信息样本的新任务。在数据挖掘模型构建的过程中,充分利用先验知识的相关规则可以提升模型效果,先验知识主要从两个方面发挥价值:
数据:利用先验知识来增强监督经验,例如可以使用先验知识判断传感器采集数据的范围,对于超过范围的异常数据剔除处理,避免因为数据采集错误干扰到模型训练。
模型:利用先验知识减少假设空间的大小,如齿轮点蚀、剥落断齿等局部故障,故障部位进入啮合时系统受到冲击激励,故障齿轮每转一圈,系统受一次冲击,这种现象是周期性的,可基于此特性来设计模型。
如在配变重过载预测模型构建过程中,模型阶段通过先验知识缩小了预测空间,充分考虑配变负载率近2年Pearson相关系数判定近2年的变化趋势,筛选相关系数高的配变,利用先验知识预测未来周期内负载率,将负载率明显过低的设备进行剔除,减少样本的不平衡度,提升模型的泛化能力。
值得注意得是:在利用先验知识的同时,一定要保障先验知识的准确性,如果先验知识存在误差,必然导致模型的误差增大,影响模型准确率。
04、迁移学习
既然当前领域的样例数据获取难度比较大,那么可不可以使用相似领域的数据和知识来代替呢?实际生活中有很多这样的例子,比如学会吹笛子,就比较容易学吹箫、葫芦丝等管弦乐器,学会了C语言,在学一些其它编程语言会简单很多,这其实就是迁移学习的思想。从相关领域中迁移标注数据或者知识结构、完成或改进目标领域的学习效果。
一般地,有三种常见的迁移方式:
一是基于实例的迁移,对已有的其它领域大样本进行有效的权重分配,让其它领域的样本与目标域的样本分布特征接近;
二是基于特征的迁移,分为基于特征选择的迁移和基于特征映射的迁移。基于特征选择的迁移学习算法,关注的是如何找出源领域与目标领域之间共同的特征表示,然后利用这些特征进行知识迁移;基于特征映射的迁移学习算法,将源领域和目标领域的数据从原始特征空间映射到新的特征空间中去,在该空间中,源领域数据与的目标领域的数据分布相同;
三是基于共享参数的迁移,其主要研究的是如何找到源数据和目标数据的空间模型之间的共同参数或者先验分布。
在齿轮、轴承类机械设备故障预测过程中,实际工况下,由于设备长期处于正常服役状态,正常样本丰富,故障样本非常少,经常面临数据严重不平衡的问题。对于齿轮、轴承这类简单的机械,相同类型的部件其在发生故障时表现的特征往往具有很强的相似性。这时可以用迁移学习的方法,具体的实现方法一方面通过数据分布变换将要迁移的数据的分布状况转换为目标数据的分布状况。
另一方面将两个领域的数据特征进行空间变换,使其具备相同的特征分布。假如采集的是震动信号,根据目标数据时域下的幅值分布将公共的震动信号转换成与目标分布相似的信号,再利用时频变换,将时域空间下的特征映射到频域下(注意尽可能使用相对指标,而不是绝对指标),然后再进行零件故障预测模型的构建。
此外,迁移学习在落地应用中往往受几个方面的影响,一是不同的应用场景,数据之间的影响关系差异非常大,数据之间的相互关系往往会发生变化,导致不能完全迁移。二是目标的表征变量较多的情况下,做特征的映射本身就是一个大工程,实现起来并不容易,适合特征比较少的场景。
05、调整业务目标
以上的方式都不适用的情况下该怎么办呢?这时就需要放大招了——调整业务目标。一般对于样本极不均衡现象分类预测问题我们可以将其转换为回归问题或异常检测问题。
►分类变回归
在实际的项目中,还有一种方法来实现预测的目标,那就是将分类预测问题转换为回归预测问题。采用回归预测+业务规则相结合的方法实现预测的目的。例如在一个产品质量预测项目中,原来的目标是构建产品是否合格的预测模型,但是在模型的构建过程中发现不合格产品占比非常少,只有极个别的样本,用来构建产品不合格模型基础条件不够。
这时就可以转变为预测产品检测指标的方法,这种方法是在不合格产品数量占比较少的情况下转而预测产品检测过程中的评判指标。相对来说,产品检测过程中的检测指标样本的积累会比不合格产品的样本积累要更容易。很显然,对于产品检测指标的预测是属于回归预测的范畴,可采用机器学习中回归类预测方法来实现。对于回归模型预测的结果,可以结合现有的业务规则进行判断,从而达到预测产品是否合格的目的。
►分类变异常检测
第二种做法是使用非监督式的学习方法,将此类问题看做是单分类或异常检测问题。这类方法的重点不在于找出类间的差别,而是为其中一类进行建模。例如在设备故障诊断项目中,没有异常数据,那我们就为正常情况圈定一个范围,在新数据判断时在这个范围内的就认为是正常数据,不在这个范围内的我们就认为就是异常数据,需要重点关注的。当然在实际应用中模型也会不断的迭代更新,判断的效果会越来越准。
本文介绍了实际项目中我们尝试的几种样本不平衡问题的解决方法,希望上述的某种方法能够帮助你解决目前遇到的问题或者能为你带来一些解题思路。
而上述这些方法也只是众多样本不平衡问题解决方法中的冰山一角,这里建议大家多阅读一些这方面的文章,你可能从中获取一些更有趣更有效的方法。当然样本不平衡问题的解决更多的还要结合现场的环境和遇到的问题,灵活的选择应对方法,没有一种方案可以解决一切问题。
标签:机器,预测,模型,样本,先验,平衡,数据,迁移 来源: https://blog.csdn.net/qq_42963448/article/details/122171313