异常检测算法的Octave仿真
在基于高斯分布的异常检测算法一文中,详细给出了异常检测算法的原理及其公式,本文为该算法的Octave仿真。实例为,根据训练样例(一组网络服务器)的吞吐量(Throughput)和延迟时间(Latency)数据,标记出异常的服务器。
可视化的数据集如下:
我们根据数据集X,计算其二维高斯分布的数学期望mu与方差sigma2:
- function [mu sigma2] = estimateGaussian(X)
- %ESTIMATEGAUSSIAN This function estimates the parameters of a
- %Gaussian distribution using the data in X
- % [mu sigma2] = estimateGaussian(X),
- % The input X is the dataset with each n-dimensional data point in one row
- % The output is an n-dimensional vector mu, the mean of the data set
- % and the variances sigma^2, an n x 1 vector
- %
- % Useful variables
- [m, n] = size(X);
- mu = zeros(n, 1);
- sigma2 = zeros(n, 1);
- mu = sum(X,1)'/m;
- %note:mu and sigma are both n-demension.
- for(i=1:m)
- e=(X(i,:)'-mu);
- sigma2 += e.^2;
- endfor
- sigma2 = sigma2/m
- end
计算概率密度:
- function p = multivariateGaussian(X, mu, Sigma2)
- %MULTIVARIATEGAUSSIAN Computes the probability density function of the
- %multivariate gaussian distribution.
- % p = MULTIVARIATEGAUSSIAN(X, mu, Sigma2) Computes the probability
- % density function of the examples X under the multivariate gaussian
- % distribution with parameters mu and Sigma2. If Sigma2 is a matrix, it is
- % treated as the covariance matrix. If Sigma2 is a vector, it is treated
- % as the \sigma^2 values of the variances in each dimension (a diagonal
- % covariance matrix)
- %
- k = length(mu);
- if (size(Sigma2, 2) == 1) || (size(Sigma2, 1) == 1)
- Sigma2 = diag(Sigma2);
- end
- X = bsxfun(@minus, X, mu(:)');
- p = (2 * pi) ^ (- k / 2) * det(Sigma2) ^ (-0.5) * ...
- exp(-0.5 * sum(bsxfun(@times, X * pinv(Sigma2), X), 2));
- end
可视化后:
根据预留的一部分已知是否异常的训练样例(CV集),来选择阈值:
- function [bestEpsilon bestF1] = selectThreshold(yval, pval)
- %SELECTTHRESHOLD Find the best threshold (epsilon) to use for selecting
- %outliers
- % [bestEpsilon bestF1] = SELECTTHRESHOLD(yval, pval) finds the best
- % threshold to use for selecting outliers based on the results from a
- % validation set (pval) and the ground truth (yval).
- %
- bestEpsilon = 0;
- bestF1 = 0;
- F1 = 0;
- stepsize = (max(pval) - min(pval)) / 1000;
- for epsilon = min(pval):stepsize:max(pval)
- pred = (pval<epsilon);
- p_e_1 = (pred==1);
- y_e_1 = (yval==1);
- p1 = 0;
- m = size(p_e_1,1);
- for(i=1:m)
- if((p_e_1(i)==1)&&(p_e_1(i)==y_e_1(i)))
- p1++;
- endif
- endfor
- p_12 = sum(pred);
- p_13 = sum(y_e_1);
- p=p1/p_12;
- r=p1/p_13;
- F1 = 2*p*r/(p+r);
- if F1 > bestF1
- bestF1 = F1;
- bestEpsilon = epsilon;
- end
- end
- end
最终的标记结果:
异常检测算法的Octave仿真的更多相关文章
- 如何开发一个异常检测系统:使用什么特征变量(features)来构建异常检测算法
如何构建与选择异常检测算法中的features 如果我的feature像图1所示的那样的正态分布图的话,我们可以很高兴地将它送入异常检测系统中去构建算法. 如果我的feature像图2那样不是正态分布 ...
- 异常检测算法--Isolation Forest
南大周志华老师在2010年提出一个异常检测算法Isolation Forest,在工业界很实用,算法效果好,时间效率高,能有效处理高维数据和海量数据,这里对这个算法进行简要总结. iTree 提到森林 ...
- 机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现
Twritters的异常检测算法(Anomaly Detection)做的比较好,Seasonal Hybrid ESD算法是先用STL把序列分解,考察残差项.假定这一项符合正态分布,然后就可以用Ge ...
- 异常检测算法:Isolation Forest
iForest (Isolation Forest)是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法,具有效果好.训练快(线性复杂度)等特点. 1. 前言 iFore ...
- 【机器学习】异常检测算法(I)
在给定的数据集,我们假设数据是正常的 ,现在需要知道新给的数据Xtest中不属于该组数据的几率p(X). 异常检测主要用来识别欺骗,例如通过之前的数据来识别新一次的数据是否存在异常,比如根据一个用户以 ...
- kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归
使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...
- 异常检测(Anomaly detection): 异常检测算法(应用高斯分布)
估计P(x)的分布--密度估计 我们有m个样本,每个样本有n个特征值,每个特征都分别服从不同的高斯分布,上图中的公式是在假设每个特征都独立的情况下,实际无论每个特征是否独立,这个公式的效果都不错.连乘 ...
- 异常检测算法Robust Random Cut Forest(RRCF)关键定理引理证明
摘要:RRCF是亚马逊发表的一篇异常检测算法,是对周志华孤立森林的改进.但是相比孤立森林,具有更为扎实的理论基础.文章的理论论证相对较为晦涩,且没给出详细的证明过程.本文不对该算法进行详尽的描述,仅对 ...
- 时间序列异常检测算法S-H-ESD
1. 基于统计的异常检测 Grubbs' Test Grubbs' Test为一种假设检验的方法,常被用来检验服从正太分布的单变量数据集(univariate data set)\(Y\) 中的单个异 ...
随机推荐
- Codeforces 1163D Mysterious Code(AC自动机+DP)
用 AC自动机 来做有点想不到,捞一手就是学一手. 设 dp[ i ][ j ] 表示字符串 c 中的第 i 位到字典树上节点 j 的最大值是多少, word[ j ] 表示在节点 j 下对答案修改的 ...
- Python 数据分析中常用的可视化工具
Python 数据分析中常用的可视化工具 1 Matplotlib 用于创建出版质量图表的绘图工具库,目的是为 Python 构建一个 Matlab 式的绘图接口. 1.1 安装 Anaconada ...
- CentOS7 安装Postgresql 11+ 源码编译安装Postgis-2.5.2
####安装Postgresql-11yum install zlib-devel gcc makegroupadd postgresuseradd -g postgres postgrespassw ...
- 事件对象e的实现原理
转自:https://segmentfault.com/q/1010000007337410?_ea=1313467 事件对象传递原理 1.前置知识回顾 在讲传递原理前,我们先看看普通函数是如何传递参 ...
- PHP Web Server 实例
通过WebService,我们可以调用部署在其它地方的程序,而不用关心被调用的程序是在什么平台用什么语言编写的.这里我们使用php调用. 在php4时代调用WebService大部分使用的nusoap ...
- 脚本_获取本机 MAC 地址
#!bin/bash#作者:liusingbon#功能:获取本机 MAC 地址ip a s |awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{ ...
- visual studio 中添加命令行参数
argc argv
- ps:建立规则选区
在前面的内容中,我们初步接触了色彩调整工具中的“色相/饱和度”工具[CTRL U],现在我们可以很容易地改变图像的色相.将如下左图的色相改为-100,形成如下中图的效果.但是这样做有一个局限,那就是只 ...
- less:运算
less中的运算 -任何数字.颜色或者变量都可以参加运算,运算应该被包裹在括号中. -例如:+-*. @width: 30px; .box { width: (20 + 5) * @width; } ...
- [web 安全]逻辑漏洞之密码重置
原文:http://wooyun.jozxing.cc/static/drops/web-5048.html 密码找回逻辑一.用户凭证(密码找回的凭证太弱,暴力破解)1.当当网任意用户密码修改漏洞(h ...