拿来就能用!如何用 AI 算法提高安全运维效率? | 技术头条(12)

这些条件还可以组合 , 综合一些规则条件来处理 。 当然 , 再复杂一点就是一个简单的日志行为分析系统了 。 我们考虑一些场景 , 如果是一些应急的分析需求 , 日志量有不小 , 我们怎么来快速进行分析呢?或者是已经有很多日志数据了 , 因为数据量太大而没有利用起来 , 我们是否能挖掘其中的价值呢? 这里我们尝试使用机器学习的算法来进行一些分析 。 具体实例——发现异常用户 很多时候 , 我们的需求是发现异常用户行为 , 所以需要有工具帮助我们快速提取异常的用户行为 。 有过日志分析经验的同学应该会有这样的经验:通常情况下 , 大部分的用户基本都是正常请求;有部分用户的请求是异常;但是异常的情况之间往往有很大的差异 。 简单来说就是正常的人都差不多 , 奇葩的人可能有各种奇葩 。 那么 , 我们怎么去提取这些“奇葩”呢? 最理想的情况就是通过机器学习的算法 , 直接区分出正常和异常的用户 。 正如我们前面提到的 , 异常的情况可能是多种多样 , 所以这里我们不能简单的进行二分类 , 而是考虑使用聚类算法 , 先进行分类 , 再针对各类的用户进行针对性的分析 , 这里我们尝试使用K-Means算法 。

上图就是通过K-Means算法分簇效果展示 , 通过图表相信大家比较容易理解 。 很多时候一开始分析日志时 , 我们并不清楚正常访问和异常访问具体的特征和区别 , 所以这里使用 K-Means算法 , K-Means本身是无监督学习算法 , 所以我们在使用时并不需要花费大量的时间来搜集样本 , 并进行模型训练(终于不用像识别图片验证码那样整理一大堆的样本文件了) 。 另外一个很重要的原因就是K-Means算法非常容易实现 , 上手也比较容易 , 简单的来说就是先根据请求的特性进行分类 , 然后我们去掉正常的请求(通常情况下数量最多的一簇) , 针对其他簇(异常)进行深入分析 。 K-Means算法的思想很简单 , 对于给定的样本集 , 按照样本之间的距离大小 , 将样本集划分为K个簇 。 让簇内的点尽量紧密的连在一起 , 而让簇间的距离尽量的大 。 有关“簇”和“质心”参考下图:

推荐阅读