基于机器学习的异常点检测算法

1、概要

        本来想着自己基于UEBA的概念搞一个账号安全检测和网络攻击的模型,但是近期有点忙,没太多时间去研究实现了,下面就主要利用目前常用的几个异常检测算法做了一个案例比对,包括:One-Class SVM、Isolation Forest(孤立森林)、Local Outlier Factor(局部异常因子LOF)主要利用python的sklearn实现。

关键词:异常点检测;网络安全;机器学习;

2、概念

        我们依旧不去讨论过多模型算法的理论和复杂的公式,主要针对三种算法进行简单的阐述和区别!

  • One-Class SVM:单分类算法,通过超平面去进行异常点的区分,数据较多时不太适合使用
  • Isolation Forest:从超空间的角度看,这样就是不断地用随机选取的超平面切分样本点,直到所有的样本点都被这些超平面“孤立”起来。算法的所占内存少。
  • Local Outlier Factor:局部异常因子是基于密度的,是通过点之间的距离来计算的,点之间距离越远,密度越低,距离越近,密度越高的概念实现异常点检测。

3、案例

        如下为python使用sklearn的的代码案例,生成图示分别是按照models的顺序进行异常点检测的结果图示:

from sklearn.svm import OneClassSVM
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# 解决中文
plt.rcParams['font.sans-serif']=['SimHei']
# 解决负数显示
plt.rcParams['axes.unicode_minus'] = False

x,y = make_blobs(n_samples=200,centers=2,random_state=100,cluster_std=1.2)
plt.figure(figsize=(8, 8))
plt.subplot(221)
plt.subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=0.2, hspace=0.2)
plt.title("原始数据")
plt.scatter(x[:,0], x[:,1])
# plt.show()

models = [
    ("One-Class SVM", OneClassSVM(nu=0.15, kernel='rbf',gamma=0.1)),
    ("Isolation Forest", IsolationForest(contamination=0.15, random_state=42)),
    ("Local Outlier Factor", LocalOutlierFactor(n_neighbors=20))
]
loc = 222
for name,model in models:
    print(name,model)
    plt.subplot(loc)
    plt.title(name)
    if name == 'Local Outlier Factor':
        y_pred = model.fit_predict(x)
    else:
        model.fit(x)
        y_pred = model.predict(x)
    plt.scatter(x[:,0], x[:,1],c=y_pred)
    loc +=1
plt.show()

基于机器学习的异常点检测算法_第1张图片

 4、UEBA概念

        随着企业业务及用户增多,产生大量的数据信息,数据信息是企业和用户重要的核心资产,关乎企业的发展和用户自身安全,所以为了防止第三方人员通过非法途径获取数据,需要有一种安全机制和手段避免数据被窃取,避免给企业和用户造成巨大损失。而一部分的原因是系统本身的用户登录方式存在安全漏洞,本文将结合当前流行的用户实体行为分析(User and Entity Behavior Analytics,UEBA)系统利用机器学习算法实现异常用户检测模型,从“被动防御”到“主动出击”。

         实现UEBA需要基于用户自身行为基线检测特征例如:用户名、登录地点、登录IP、登录时间、登录方式、登录时间段、 基于用户与用户之间行为基线检测特征 用户名、登录频次、常用IP数量、登录时长、是否是活跃用户、操作频次、常用登录地点、密码错误频次,其次根据TCP/UDP层一些数据包进行特征提取,最终通过多模型进行分析预测。

基于机器学习的异常点检测算法_第2张图片

 以上就是今日分享,希望大家点赞关注加收藏~

你可能感兴趣的:(机器学习,机器学习,算法,python)