基于高斯分布的异常检测算法一文中,详细给出了异常检测算法的原理及其公式,本文为该算法的Octave仿真。实例为,根据训练样例(一组网络服务器)的吞吐量(Throughput)和延迟时间(Latency)数据,标记出异常的服务器。

可视化的数据集如下:

我们根据数据集X,计算其二维高斯分布的数学期望mu与方差sigma2:

  1. function [mu sigma2] = estimateGaussian(X)
  2. %ESTIMATEGAUSSIAN This function estimates the parameters of a
  3. %Gaussian distribution using the data in X
  4. % [mu sigma2] = estimateGaussian(X),
  5. % The input X is the dataset with each n-dimensional data point in one row
  6. % The output is an n-dimensional vector mu, the mean of the data set
  7. % and the variances sigma^2, an n x 1 vector
  8. %
  9.  
  10. % Useful variables
  11. [m, n] = size(X);
  12.  
  13. mu = zeros(n, 1);
  14. sigma2 = zeros(n, 1);
  15.  
  16. mu = sum(X,1)'/m;
  17. %note:mu and sigma are both n-demension.
  18. for(i=1:m)
  19. e=(X(i,:)'-mu);
  20. sigma2 += e.^2;
  21. endfor
  22.  
  23. sigma2 = sigma2/m
  24.  
  25. end

计算概率密度:

  1. function p = multivariateGaussian(X, mu, Sigma2)
  2. %MULTIVARIATEGAUSSIAN Computes the probability density function of the
  3. %multivariate gaussian distribution.
  4. % p = MULTIVARIATEGAUSSIAN(X, mu, Sigma2) Computes the probability
  5. % density function of the examples X under the multivariate gaussian
  6. % distribution with parameters mu and Sigma2. If Sigma2 is a matrix, it is
  7. % treated as the covariance matrix. If Sigma2 is a vector, it is treated
  8. % as the \sigma^2 values of the variances in each dimension (a diagonal
  9. % covariance matrix)
  10. %
  11.  
  12. k = length(mu);
  13.  
  14. if (size(Sigma2, 2) == 1) || (size(Sigma2, 1) == 1)
  15. Sigma2 = diag(Sigma2);
  16. end
  17.  
  18. X = bsxfun(@minus, X, mu(:)');
  19. p = (2 * pi) ^ (- k / 2) * det(Sigma2) ^ (-0.5) * ...
  20. exp(-0.5 * sum(bsxfun(@times, X * pinv(Sigma2), X), 2));
  21.  
  22. end

可视化后:

根据预留的一部分已知是否异常的训练样例(CV集),来选择阈值:

  1. function [bestEpsilon bestF1] = selectThreshold(yval, pval)
  2. %SELECTTHRESHOLD Find the best threshold (epsilon) to use for selecting
  3. %outliers
  4. % [bestEpsilon bestF1] = SELECTTHRESHOLD(yval, pval) finds the best
  5. % threshold to use for selecting outliers based on the results from a
  6. % validation set (pval) and the ground truth (yval).
  7. %
  8.  
  9. bestEpsilon = 0;
  10. bestF1 = 0;
  11. F1 = 0;
  12.  
  13. stepsize = (max(pval) - min(pval)) / 1000;
  14. for epsilon = min(pval):stepsize:max(pval)
  15.  
  16. pred = (pval<epsilon);
  17.  
  18. p_e_1 = (pred==1);
  19. y_e_1 = (yval==1);
  20. p1 = 0;
  21. m = size(p_e_1,1);
  22. for(i=1:m)
  23. if((p_e_1(i)==1)&&(p_e_1(i)==y_e_1(i)))
  24. p1++;
  25. endif
  26. endfor
  27. p_12 = sum(pred);
  28. p_13 = sum(y_e_1);
  29.  
  30. p=p1/p_12;
  31. r=p1/p_13;
  32.  
  33. F1 = 2*p*r/(p+r);
  34.  
  35. if F1 > bestF1
  36. bestF1 = F1;
  37. bestEpsilon = epsilon;
  38. end
  39. end
  40.  
  41. end

最终的标记结果:

异常检测算法的Octave仿真的更多相关文章

  1. 如何开发一个异常检测系统:使用什么特征变量(features)来构建异常检测算法

    如何构建与选择异常检测算法中的features 如果我的feature像图1所示的那样的正态分布图的话,我们可以很高兴地将它送入异常检测系统中去构建算法. 如果我的feature像图2那样不是正态分布 ...

  2. 异常检测算法--Isolation Forest

    南大周志华老师在2010年提出一个异常检测算法Isolation Forest,在工业界很实用,算法效果好,时间效率高,能有效处理高维数据和海量数据,这里对这个算法进行简要总结. iTree 提到森林 ...

  3. 机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现

    Twritters的异常检测算法(Anomaly Detection)做的比较好,Seasonal Hybrid ESD算法是先用STL把序列分解,考察残差项.假定这一项符合正态分布,然后就可以用Ge ...

  4. 异常检测算法:Isolation Forest

    iForest (Isolation Forest)是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法,具有效果好.训练快(线性复杂度)等特点. 1. 前言 iFore ...

  5. 【机器学习】异常检测算法(I)

    在给定的数据集,我们假设数据是正常的 ,现在需要知道新给的数据Xtest中不属于该组数据的几率p(X). 异常检测主要用来识别欺骗,例如通过之前的数据来识别新一次的数据是否存在异常,比如根据一个用户以 ...

  6. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归

    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...

  7. 异常检测(Anomaly detection): 异常检测算法(应用高斯分布)

    估计P(x)的分布--密度估计 我们有m个样本,每个样本有n个特征值,每个特征都分别服从不同的高斯分布,上图中的公式是在假设每个特征都独立的情况下,实际无论每个特征是否独立,这个公式的效果都不错.连乘 ...

  8. 异常检测算法Robust Random Cut Forest(RRCF)关键定理引理证明

    摘要:RRCF是亚马逊发表的一篇异常检测算法,是对周志华孤立森林的改进.但是相比孤立森林,具有更为扎实的理论基础.文章的理论论证相对较为晦涩,且没给出详细的证明过程.本文不对该算法进行详尽的描述,仅对 ...

  9. 时间序列异常检测算法S-H-ESD

    1. 基于统计的异常检测 Grubbs' Test Grubbs' Test为一种假设检验的方法,常被用来检验服从正太分布的单变量数据集(univariate data set)\(Y\) 中的单个异 ...

随机推荐

  1. Codeforces 1163D Mysterious Code(AC自动机+DP)

    用 AC自动机 来做有点想不到,捞一手就是学一手. 设 dp[ i ][ j ] 表示字符串 c 中的第 i 位到字典树上节点 j 的最大值是多少, word[ j ] 表示在节点 j 下对答案修改的 ...

  2. Python 数据分析中常用的可视化工具

    Python 数据分析中常用的可视化工具 1 Matplotlib 用于创建出版质量图表的绘图工具库,目的是为 Python 构建一个 Matlab 式的绘图接口. 1.1 安装 Anaconada ...

  3. CentOS7 安装Postgresql 11+ 源码编译安装Postgis-2.5.2

    ####安装Postgresql-11yum install zlib-devel gcc makegroupadd postgresuseradd -g postgres postgrespassw ...

  4. 事件对象e的实现原理

    转自:https://segmentfault.com/q/1010000007337410?_ea=1313467 事件对象传递原理 1.前置知识回顾 在讲传递原理前,我们先看看普通函数是如何传递参 ...

  5. PHP Web Server 实例

    通过WebService,我们可以调用部署在其它地方的程序,而不用关心被调用的程序是在什么平台用什么语言编写的.这里我们使用php调用. 在php4时代调用WebService大部分使用的nusoap ...

  6. 脚本_获取本机 MAC 地址

    #!bin/bash#作者:liusingbon#功能:获取本机 MAC 地址ip a s |awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{ ...

  7. visual studio 中添加命令行参数

    argc argv

  8. ps:建立规则选区

    在前面的内容中,我们初步接触了色彩调整工具中的“色相/饱和度”工具[CTRL U],现在我们可以很容易地改变图像的色相.将如下左图的色相改为-100,形成如下中图的效果.但是这样做有一个局限,那就是只 ...

  9. less:运算

    less中的运算 -任何数字.颜色或者变量都可以参加运算,运算应该被包裹在括号中. -例如:+-*. @width: 30px; .box { width: (20 + 5) * @width; } ...

  10. [web 安全]逻辑漏洞之密码重置

    原文:http://wooyun.jozxing.cc/static/drops/web-5048.html 密码找回逻辑一.用户凭证(密码找回的凭证太弱,暴力破解)1.当当网任意用户密码修改漏洞(h ...