异常检测算法之LOF
首先了解什么是LOF算法
LOF算法又叫局部异常因子算法,它是一种基于距离的异常检测算法,我认为该算法比较详细的博客如下:LOF.
lof 的主要思想如下:通过比较每个点p和其邻域的密度来判断该点是否为异常点,如果点p的密度越低,越有可能被认为是异常点。至于密度,是通过点和点之间的距离来进行计算的,点和点之间的距离越小,则密度越高;反之则就越低。
算法特点
LOF算法主要特点包括如下:
LOF是一种非监督式的算法
LOF是一种基于密度的算法
LOF算法适合对于不同密度的数据进行异常检测
最近在研究关于APT攻击的恶意流量数据的检测,我认为该方法可以应用到检测恶意流量的范畴。当然异常检测也可以属于二分类的范畴,正常和不正常。但是APT攻击的恶意流量数据较少,存在样本不均衡的问题,初步设想,先采用异常值检测的算法较为科学。
采用的数据集为IDS入侵2017的公开数据集,网址为https://www.unb.ca/cic/datasets/ids-2018.html
这个数据集周一采集的数据为正常数据,周二到周末为参杂了恶意流量的数据。
实现方法
基于python的sklearn的第三方库,进行实现,参数说明参考官网:https://scikit-learn.org/stable/modules/outlier_detection.html#outlier-detection
其中参数:novelty :默认为 flase , 是否可以用来做新奇检测
实践检验
将数据集中的周一正常数据给lof算法进行训练,然后用周二带有恶意流量的数据进行新奇点检测:
这种基于lof算法的新奇点检测明显的感觉就是训练时间较长,尤其是数据的维度较高时,会有很长时间的训练时间。sklearn好像还不支持GPU加速