阅读 60

基于机器学习的 ElasticSearch 异常值检测案例

机器学习在当前是非常火热的一种技术,随着框架越来越成熟,机器学习逐渐大众化,不需要你非常精通数学领域的知识,或者阅读各种晦涩难懂的论文。现在很多算法都已经封装为成熟的 API,因此机器学习不再是算法工程师才能够掌握的技术。

普通软件开发工程师也能够掌握如何去应用机器学习。当然如果是研究型的算法,还是需要专业人士来做。软件开发工程师只需要会用和了解原理,知道如何解决当前项目中所遇到的问题就行了,如果想精进现有的算法模型,那还是有很长的一段路需要走。

话不多说,本章节就利用 ES 提供的一个机器学习工具,来对指标进行异常检测,机器学习任何人都可以用,赶紧来体验一下它的神秘之处。

异常

异常检测,什么是异常?如何去检测?

首先异常就是一个对比的结果,可以跟其他人比,可以跟自己比,比如说我们的天气指标,当天不同城市温度的异常,这个就是自己跟其他人的比较异常,假如说夏天来了,大部分地区都是 30 度以上,但是东北地区竟然零下,那么东北这个数据就是个异常。加入北京地区一周都是 30 度的高温,最后一天却只有 10 度,那么这天的温度就是异常,这个自己跟自己比的一个过程。

仔细考虑一下,如果是让你自己去判断,是不是很容易判断出谁“出毛病”了,但是总不能让人一直观察这些数据吧,有没有一种方法能够自动找出这个异常数据呢?

规则

我们平时开发的逻辑代码,都是 if else,其中逻辑代码被称作基于规则来判断,满足一定的规则就归放到某一类。但是温度异常这个需求如何用规则来判断呢?

如果用“零度”以下来判断,如果零度以上,那么就是异常,但是冬天的时候,零下不是很正常吗?难道每天都是异常?这明显不行。

那么就再加条件,如果是“夏天但是零下”就是异常。东北夏天或者俄罗斯地区,经常会出现零度以下(假设),这明显也不行。那就得继续加条件。

看明白了没?无休止地增加规则才可能逼近正确的结果。明显这种需求,规则已经无法满足。

无监督学习——统计

规则无法满足的,我们可以通过统计来确定,统计异常的统计方法有很多,3 sigma 模型、高斯模型、聚类等。通过统计,我们能够统计出谁是离群的个体,从而找到这个异常。算法原理这里不做过多的讨论,我们来讨论一下这些算法为什么会有效?

以聚类分析为例。我们通过一种聚类的方式把具有相同性质的聚合到一起,结果发现”红色“的旁边有个”橘黄色“的表情,这就很容易判断出它是个异常数据。这种直接统计学习,这种没有样本告诉我们哪些是异常哪些不是异常,通过统计得出的结果的算法,我们称作无监督学习。与之对应需要一个学习,需要一个参考告诉我们什么是异常的学习方式,我们称作有监督学习。

作者:日常君

原文链接:https://www.jianshu.com/p/4a7a9cdd3848

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐