异常检测算法应用与实践
作者:赵越,卡内基梅隆大学,Datawhale特邀
作者信息
内容概括
1.什么是异常检测?
2.异常检测有什么具体应用?
3.异常检测的工具概览?如何用10行Python代码进行异常检测?
4.异常检测算法概览与主流模型介绍
5.面对各种各样的模型,如何选择和调参?
6.未来的异常检测研究方向
7.异常检测相关的资源汇总(书籍、讲座、代码、数据等)
异常检测
什么是异常值、离群点(anomaly)?
异常一般指的是与标准值(或期待值)有偏离的样本,也就是说跟绝大部分数据“长的不一样”。
异常检测的一些特点:
1.异常不一定代表是“坏”的事情,但往往是“有价值”的事情,我们对异常的成因感兴趣
2.异常检测往往是在无监督的模式下完成的—历史数据中没有标签,我们不知道哪些数据是异常。因此无法用监督学习去检测。
异常检测的应用:
1.金融行业的反欺诈、信用卡诈骗检测:把欺诈或者金融风险当做异常
2.罕见病检测:把罕见病当做异常,比如检测早发的阿兹海默症
3.入侵检测:把网络流量中的入侵当做异常
4.机器故障检测:实时监测发现或预测机械故障
5.图结构、群体检测:比如检测疫情的爆发点等
异常检测的应用
IntelControlFlag:
“基于10亿条包含各种错误的未标记生产质量代码的机器学习培训,ControlFlag得以通过“异常检测”技术,对传统编程模式展开筛查。无论使用的是哪种编程语言,它都能够有效地识别代码中可能导致任何错误的潜在异常。”
AmazonAWSCloudWatch:
“今天,我们将通过一项新功能增强CloudWatch,它将帮助您更有效地使用CloudWatch警报。…我们的用户可以构建自定义的控制面板,设置警报并依靠CloudWatch来提醒自己影响其应用程序性能或可靠性的问题。”
Google:
“GoogleAnalytics(分析)会选择一段时期的历史数据来训练其预测模型。要检测每天的异常情况,训练期为90天。要检测每周的异常情况,训练期为32周。”
异常检测的挑战
1.大部分情况下是无监督学习,没有标签信息可以使用
2.数据是极端不平衡的(异常点仅占总体数据的一小部分),建模难度大
3.检测方法往往涉及到密度估计,需要进行大量的距离/相似度计算,运算开销大
4.在实际场景中往往需要实时检测,这比离线检测的技术难度更高
5.在实际场景中,我们常常需要同时处理很多案例,运算开销大
6.解释性比较差,我们很难给出异常检测的原因,尤其是在高维数据上。但业务方需要了解异常成因
7.在实际场景中,我们往往有一些检测的历史规则,如何与学习模型进行整合
异常检测工具
Python:
1.PyOD:超过30种算法,从经典模型到深度学习模型一应俱全,和sklearn的用法一致
2.Scikit-Learn:包含了4种常见的算法,简单易用
3.TODS:与PyOD类似,包含多种时间序列上的异常检测算法
Java:
1.ELKI:EnvironmentforDevelopingKDD-ApplicationsSupportedbyIndex-Structures
2.RapidMiner异常检测扩展
R:
1.outlierspackage
2.AnomalyDetection
用10行Python代实行异常检测:
详细介绍:https://zhuanlan.zhihu.com/p/58313521
异常检测算法
异常检测算法可以大致被分为:
1.线性模型(LinearModel):PCA
2.基于相似度的度量的算法(Proximity-basedModel):kNN,LOF,HBOS
3.基于概率的算法(ProbabilisticModel):COPOD
4.集成检测算法(EnsembleModel):孤立森林(IsolationForest),XGBOD
5.神经网络算法(NeuralNetworks):自编码器(AutoEncoder)
评估方法也不能简单用准确度(accuracy),因为数据的极端不平衡
1.ROC-AUC曲线
2.Precision@Rankk:topk的精准
3.AveragePrecision:平均精准度
主流模型介绍**:**
如何选择和合并模型
异常检测实践中的技巧
异常检测落地中的考量
1.不要尝试一步到位用机器学习模型来代替传统模型
2.在理想情况下,应该尝试合并机器学习模型和基于规则的模型
3.可以尝试用已有的规则模型去解释异常检测模型
异常检测研究方向
推荐文章
技术交流
欢迎转载、收藏、有所收获点赞支持一下!数据、代码可以找我获取
目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
- 方式①、发送如下图片至微信,长按识别,后台回复:加群;
- 方式②、添加微信号:dkl88191,备注:来自CSDN
- 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
相关文章
- Java实现 蓝桥杯VIP 算法提高 士兵排队问题
- Java实现 蓝桥杯VIP 算法训练 接水问题
- Java实现 蓝桥杯VIP 算法训练 数组查找及替换问题
- PageRank算法R语言实现
- 关于推荐算法的一些思考
- haproxy各调度算法的实现方式及其应用场景
- 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍
- 目录 1.1. JVM内存模型总体架构图1 1.2. JAVA堆2 1.3. 方法区 元空间(Metaspace)2 1.4. 虚拟机栈3 1.5. 本地方法区4 2. 垃圾回收算法4 2
- 【前缀和算法】一维前缀和、二维前缀和算法介绍及其应用
- CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用
- DL之Yolo:Yolo算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- CV之FR:基于某AI公司的API接口基于人脸识别实现计算人脸相似度(计算两张人脸图片相似度进而判断否为同一个人)—利用人工智能算法判断相似度极高的国内外明星案例应用
- DayDayUp:本博主预计2019下半年将会出两本书(关于人工智能算法及其实战案例应用方向、计算机算法竞赛集锦方向),如有合作意向,请留言告知
- ML与Optimality:最优化理论(GD随机梯度下降/QN拟牛顿法/CG共轭梯度法/L-BFGS/TR置信域/GA遗传算法/SA模拟退火算法)在机器学习中的简介、常用方法、案例应用之详细攻略
- DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介、应用、经典案例之详细攻略
- 【负荷预测】基于蚂蚁优化算法的BP神经网络在负荷预测中的应用研究(Matlab完整代码实现)
- 基于免疫优化算法的物流配送中心选址规划研究(Matlab实现)
- 改进花朵授粉算法的无线传感器网络部署优化(Matlab代码实现)
- 智能优化算法应用:基于麻雀搜索算法的积分计算 -附代码
- 智能优化算法应用:基于麻雀搜索算法的TSP问题求解 - 附代码
- 基于自适应权重的缎蓝园丁鸟优化算法-附代码
- BF算法(具体应用)
- 蓄水池抽样算法应用
- 012-多线程-基础-非阻塞算法相关技术简介
- 统计质数算法——厄拉多塞筛法. 比如说求20以内质数的个数,首先0,1不是质数.2是第一个质数,然后把20以内所有2的倍数划去.2后面紧跟的数即为下一个质数3,然后把3所有的倍数划去.3后面紧跟的数即为下一个质数5,再把5所有的倍数划去.以此类推.
- Spark中常用的算法
- 基于粒子群优化算法的最佳方式设置无线传感器节点的位置,以减轻由于任何能量耗尽节点而产生的覆盖空洞(Matlab代码实现)