机器学习算法概览:异常检测算法/常见算法/深度学习
扫描二维码
随时随地手机看文章
本文是对机器学习算法的一个概览,以及个人的学习小结。通过阅读本文,可以快速地对机器学习算法有一个比较清晰的了解。本文承诺不会出现任何数学公式及推导,适合茶余饭后轻松阅读,希望能让读者比较舒适地获取到一点有用的东西。
本文主要分为三部分,第一部分为异常检测算法的介绍,个人感觉这类算法对监控类系统是很有借鉴意义的;第二部分为机器学习的几个常见算法简介;第三部分为深度学习及强化学习的介绍。最后会有本人的一个小结。
1 异常检测算法异常检测,顾名思义就是检测异常的算法,比如网络质量异常、用户访问行为异常、服务器异常、交换机异常和系统异常等,都是可以通过异常检测算法来做监控的,个人认为这种算法很值得我们做监控的去借鉴引用,所以我会先单独介绍这一部分的内容。
异常定义为“容易被孤立的离群点 (more likely to be separated)”——可以理解为分布稀疏且离密度高的群体较远的点。用统计学来解释,在数据空间里面,分布稀疏的区域表示数据发生在此区域的概率很低,因而可以认为落在这些区域里的数据是异常的。
图1-1离群点表现为远离密度高的正常点
如图1-1所示,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。
下面是几种异常检测算法的简介。
1.1 基于距离的异常检测算法
图1-2 基于距离的异常检测
思想:一个点如果身边没有多少小伙伴,那么就可以认为这是一个异常点。
步骤:给定一个半径r,计算以当前点为中心、半径为r的圆内的点的个数与总体个数的比值。如果该比值小于一个阈值,那么就可以认为这是一个异常点。
1.2 基于深度的异常检测算法
图1-3 基于深度的异常检测算法
思想:异常点远离密度大的群体,往往处于群体的最边缘。
步骤:通过将最外层的点相连,并表示该层为深度值为1;然后将次外层的点相连,表示该层深度值为2,重复以上动作。可以认为深度值小于某个数值k的为异常点,因为它们是距离中心群体最远的点。
1.3 基于分布的异常检测算法
图1-4 高斯分布
思想:当前数据点偏离总体数据平均值3个标准差时,可以认为是一个异常点(偏离多少个标准差可视实际情况调整)。
步骤:计算已有数据的均值及标准差。当新来的数据点偏离均值3个标准差时,视为异常点。
1.4 基于划分的异常检测算法
图1-5孤立深林
思想:将数据不断通过某个属性划分,异常点通常能很早地被划分到一边,也就是被早早地孤立起来。而正常点则由于群体众多,需要更多次地划分。
步骤:通过以下方式构造多颗孤立树:在当前节点随机挑选数据的一个属性,并随机选取属性的一个值,将当前节点中所有数据划分到左右两个叶子节点;如果叶子节点深度较小或者叶子节点中的数据点还很多,则继续上述的划分。异常点表现为在所有孤立树中会有一个平均很低的树的深度,如图1-5中的红色所示为深度很低的异常点。