登录 | 注册

如何利用机器学习实现有噪声标签样本分类模型?

首页 > 程序开发 > 大数据 2018-07-23 17:22:29 浏览次 共 条评论

收藏赞(分享

借助 AI 深度分析,提升了20%的电子开关测试准确度。

在工业生产活动中,有一类常见 机器学习 问题,就是如何基于有噪声样本标签训练模型,以进行故障检测和分类。

先解释下什么是有噪声样本标签,它指的是训练模型用的样本标签并非完全准确,部分样本的标签有标错的情况。

对于这个问题,为了便于大家理解,我们以一个最近成功实践的项目为例,以实例为大家讲述如何实现。

一、人工测量电子开关的问题

在大型工业设备中,有一类广泛使用的电子开关,这些电子开关使用久了,会逐渐老化故障,进而影响设备运行,因此需要替换。

目前业内的常见做法是首先进行一系列的人工测量,然后通过经验来判断电子开关是否已经损坏,并将损坏的电子开关替换。这里面测量数据只是用作参考,实际上并没有明确的损坏标准,操作中还是以经验为主。

这种方式其实是存在很多问题的。

比如,人和人之间是有个体差异的,每个人的经验是不一样的,这样就导致最终的判断结果也没法相同。

就有可能导致本来正常的电子开关,被判断为坏的或者即将损坏的,以此进行替换就会造成浪费。

同样的,也有可能把坏的或者即将损坏的判断为正常的电子开关,继续使用,导致更大的损失。

因此,如果能够利用机器学习的技术,避免人工经验判断的误差或错误,提升判断的准确性,就能给我们的客户带来很大的价值。

于是,我们开始考虑通过机器学习如何去实现?

二、如何避免训练出“有噪声”的模型

对于机器学习来说,解决这类问题的难点在于,样本数据的标签是有噪声的或者说不完全准确的。

如果直接使用这些样本进行训练,无论我们采用哪种分类算法(决策树、逻辑回归 ,亦或是近年较为流行的 XGBoost),最终训练出的模型都是对噪声样本拟合较好的“有噪声”的模型。

如果我们用这样的模型去判断和分类,准确度是很难超过经验丰富的“老司机”的,所以这样的模型并没有多大的意义。

那么基于永洪的产品 Yonghong Z-Suite ,我们可以怎么做呢?

对Z-Suite比较熟悉的朋友都知道,我们的产品里内置了常见的算法模型(分类,聚类,决策时,神经网络,关联模型,时序预测等),采用图形化操作,可以通过简单的拖拽,快速实现典型 数据挖掘 算法。

除此之外,还内置了R语言支持,提供了强大的模型扩展能力。

因此,我们借助这一能力,通过R语言模型扩展实现的算法,解决了有噪声样本标签分类的问题。

我们扩展实现的这种算法,是根据MIT的一篇论文(链接:https://arxiv.org/abs/1705.01936)提供的思路,将其与 XGBoost 分类算法结合而成的。

这种算法的思路如下:

首先,训练模型的样本数据来自于历史测量数据,数据的标签都是人工根据经验判断的,所以会发生标签误判的情况,换句话说,训练模型使用的是有噪声的样本数据。

然后使用常规分类算法比如 Logistic Regression、Bayes,SVM、XGBoost 等在有噪声的样本数据集上训练出分类器;

分类器对预测的正负标签给出概率(0~1),概率越大说明预测为正标签的可信度越高,概率越小说明预测为负标签的可信度越高,概率接近0.5的预测标签的可信度并不高,可能是有噪声的数据;

假定有噪声的数据在数据集中占比不大,如果剔除可信度不高的数据,用剩下的相对可靠的数据训练分类模型,那么分类器的准确度理论上将有所提高。

三、排除不可靠数据,提高模型准确度

基于以上思路,我们在 Yonghong Z-Suite 中实现的分类算法步骤如下(详细算法推导论证过程可参照上面提到的论文):

  1. 通过选定的二分类算法(我们使用的是XGBoost),利用有噪声样本数据进行模型训练,并得到每个样本x预测结果为true(true表示电子开关合格,false表示不合格,以下同)的概率g(x)。

  2. 计算样本数据中标记为true的比率Ps1(即样本数据中电子开关标记合格的百分比)。

  3. 计算门限概率LBy=1,如果上面第1步的预测概率g(x)大于LBy=1,则表示该样本的真实标签很可能是true(合格);同理计算UBy=0,如果上面第1步的预测概率g(x)小于UBy=0,则表示该样本的真实标签很可能是false(不合格)。

    LBy=1定义为标记为true的样本数据的g(x)的期望;UBy=0定义为标记为false的样本数据的g(x)的期望

  4. 根据上面第2,3步得出的Ps1,LBy=1和UBy=0,计算出样本数据中的真实标签为true,但是被误标记为false的比率ρ0 =P(s=0|y=1),以及样本数据中的真实标签为false,但是被误标记为true的比率ρ1=P(s=1|y=0)。

    这里面y表示真实标签,s表示样本标签。

  5. 然后根据贝叶斯公式计算出样本数据中标记为不合格但是实际合格的概率π0=P(y=1|s=0)和标记为合格但是实际不合格的概率π1=P(y=0|s=1)。

  6. 在标记true的样本数据中剪除g(x)最小的比例为π1的那些样本(正样本pruning过程);在标记false的样本数据中剪除g(x)最大的比例为π0的样本(负样本pruning过程);

    这两类样本被认定为不一致的可能对预测结果产生干扰的错误标记样本,因此需要移除。

  7. 对剩余样本加权后(因为有样本移除,所以需要对剩余样本进行加权修正),重新训练模型。

  8. 根据生成模型对新的电子开关测试数据进行计算,判断其合格或不合格。

该算法通过排除训练模型中不可靠(不一致)的数据,提升了剩余数据的质量,并利用这些数据进行模型训练,因而提高了模型的准确度,有效的解决了有噪声样本训练的带来的模型不准的问题。

四、预测准确度提升20%

我们将该模型应用在上述电子开关测试项目,并将其与电子开关进行二次测试(对换下的电子开关的深入测试,基本可以认为是真实标签)的结果进行对比,现预测准确度从人工预测的60%~70%提升到了80%左右,整体的预测准确度提升了近20%,这为我们的客户带来了十分明显的价值,客户对我们的这一算法赞赏有加。

在此基础上,我们将 Logistic Regression、Bayes 和 XGBoost 三种模型集成到一起,作为 RankPruning 算法的基础模型。测试结果表明,模型精度在 XGBoost 基础上,又有了近2%的额外的小幅提升。

亚瑟·克拉克说过:“任何足够先进的技术都等同于魔术。”

机器学习在今天互联网的环境里,可能已经不是什么新鲜事了,但是对于传统的工业和制造业来说,能够大幅度提升效率、节约成本的技术,就是能为他们带来价值的。

同样的,我们也觉得机器学习的真正应用不是通过概念或者思想的方式,而是通过实践。我们在把机器学习技术实际落地、想办法为客户创造价值的过程中,也在逐渐对机器学习的理解进入更深的层次。

我们将这个经验分享出来,目的是帮助大家在基于有噪声样本标签,进行故障检测和分类的时候,能够有更科学和精确的方式,也为大家在 大数据 领域机器学习的应用提供一些具有参考价值的案例。


免责声明:本文来源于,由网友提供或网络搜集,仅供个人研究、交流学习使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。优知网会定期发布程序开发相关趋势文章,包括 PHP Android IOS Java C/C++ 软件测试 大数据 Linux 全栈开发 等领域,敬请关注!

分享到
人收藏5 收藏
 
相关文章
傅一平:数据建模者,对算法要“知其所以然”
傅一平:数据建模者,对算法要“知其所以然”
在应用机器学习时如何处理不良数据?
在应用机器学习时如何处理不良数据?
 
 

咨询中心

优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博