数据集ex8data1.mat中给出了m=307个样本,其表示的是服务器电脑特征值,第1个特征值表示的是吞吐量,第2个特征值表示的是延迟。需要做的是从这些无标签数据中,找出异常数据。
其数据的可视化为:

1、高斯分布
高斯分布函数为:

其中mu表示的是高斯分布的平均值即期望,sigma表示的是高斯分布的标准差。
2、高斯分布的参数估计
使用最大似然法进行参数估计有:


补充完整[mu sigma2] = estimateGaussian(X)函数:

function [mu sigma2] = estimateGaussian(X)
[m, n] = size(X);
mu = zeros(n, 1);
sigma2 = zeros(n, 1);
mu = mean(X,1);
sigma2 = mean(bsxfun(@minus, X, mu).^2,1);
mu = mu';
sigma2 = sigma2';
end

得到数据集的高斯概率模型为:

3、选择合适的阈值
F1-Score的计算公式为:

其中prec表示的是准确率,rec表示的是召回率,计算过程如下:

tp指的是true positives的数量,即标签显示其为异常的,并且分类算法也成功检测出其为异常样本的数量;
fp指的是false positives的数量,即标签显示其为正常的,但是分类算法检测其为异常样本的数量;
fn指的是false negatives的数量,即标签显示其为异常的,但分类算法并未检测出为异常样本的数量。
补充完整[bestEpsilon bestF1] = selectThreshold(yval, pval)函数:

function [bestEpsilon bestF1] = selectThreshold(yval, pval)bestEpsilon = 0;
bestF1 = 0;
F1 = 0;stepsize = (max(pval) - min(pval)) / 1000;
for epsilon = min(pval):stepsize:max(pval)ydetect = pval < epsilon;tp = sum(((ydetect==1)&(yval==1)) ==1);fp = sum(((ydetect==1)&(yval==0)) ==1);fn = sum(((ydetect==0)&(yval==1)) ==1);prec = tp/(tp+fp);rec = tp/(tp+fn);F1 = 2*prec*rec/(prec+rec);if F1 > bestF1bestF1 = F1;bestEpsilon = epsilon;end
end
end

运行程序得:

>> fprintf('Best epsilon found using cross-validation: %e\n', epsilon);
Best epsilon found using cross-validation: 8.990853e-05
>> fprintf('Best F1 on Cross Validation Set:  %f\n', F1);
Best F1 on Cross Validation Set:  0.875000


4、高维数据集
其计算过程与上述过程一致,运行代码得到:

>> load('ex8data2.mat');
>> [mu sigma2] = estimateGaussian(X);
>> p = multivariateGaussian(X, mu, sigma2);
>> pval = multivariateGaussian(Xval, mu, sigma2);
>> [epsilon F1] = selectThreshold(yval, pval);
>> fprintf('Best epsilon found using cross-validation: %e\n', epsilon);
Best epsilon found using cross-validation: 1.377229e-18
>> fprintf('Best F1 on Cross Validation Set:  %f\n', F1);
Best F1 on Cross Validation Set:  0.615385
>> fprintf('# Outliers found: %d\n\n', sum(p < epsilon));
# Outliers found: 117

吴恩达机器学习ex8:异常检测相关推荐

  1. 吴恩达机器学习 12.异常检测

    异常检测 1.问题的动机 什么是异常检测? 假想你是一个飞机引擎制造商,当你生产的飞机引擎从生产线上流出时,你需要进行QA(质量控制测试),而作为这个测试的一部分,你测量了飞机引擎的一些特征变量,比如 ...

  2. 吴恩达机器学习15-异常检测

    吴恩达机器学习15-异常检测 1.问题引入 判断飞机引擎是否出现异常 收集飞机引擎的一些特征变量,比如引擎运转时产生的热量,或者引擎的振动等等 这里的每个点.每个叉,都是无标签数据.这样,异常检测问题 ...

  3. 吴恩达机器学习ex8:推荐系统

    1.电影评分数据集 load ('ex8_movies.mat'); 该数据集包含两个矩阵,分别是矩阵Y和矩阵R,其维度均为1682943(ij). Y(i,j)表示为第j个用户对第i个电影的评分,R ...

  4. 吴恩达机器学习 EX7 第二部分 主成分分析(PCA)

    2 主成分分析 主成分分析通过协方差矩阵提取数据的主要成分,如90%的成分,通常用户数据压缩和数据可视化(维度降低方便可视化) 2.1 导入模块和数据 该部分通过将二维数据压缩成一维数据演示主成分分析 ...

  5. 吴恩达机器学习作业Python实现(八):异常检测和推荐系统

    吴恩达机器学习系列作业目录 1 Anomaly detection 这部分,您将实现一个异常检测算法来检测服务器计算机中的异常行为.他的特征是测量每个服务器的响应速度(mb/s)和延迟(ms).当你的 ...

  6. 8. 吴恩达机器学习课程-作业8-异常检测和推荐系统

    fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 8. ...

  7. 吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection)

    吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection) 对于异常检测算法,使用特征是至关重要的,下面谈谈 ...

  8. 带你少走弯路:五篇文章学完吴恩达机器学习

    本文是吴恩达老师的机器学习课程[1]的笔记和代码复现部分,这门课是经典,没有之一.但是有个问题,就是内容较多,有些内容确实有点过时. 如何在最短时间学完这门课程?作为课程的主要翻译者和笔记作者,我推荐 ...

  9. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

最新文章

  1. 架构师之路 — 软件架构 — 软件版本定义
  2. 2020 年 Node.js 开发者调查报告
  3. Foundation框架: 9.OC中的集合类之四 - NSMutableDictionary的基本认识
  4. ipc原理linux,传统的Linux中IPC通信原理
  5. centos屏幕视频录制,转换
  6. Oracle用户及角色的权限管理[Oracle基础]
  7. 如何设置sap生产订单自动关闭
  8. mac vs 返回上一步_Mac 上 VSCode常用快捷键
  9. Windows10 调整屏幕颜色,设置暖色屏幕的办法
  10. 【工大SCIR】AAAI20 基于反向翻译和元学习的低资源神经语义解析
  11. OVP保护芯片首选ETA7008,耐压36V,过压保护点可调
  12. FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation
  13. 欧几里得算法求解最大公因数详解
  14. 脚手架--------Yeoman基本使用
  15. 数据对接—kettle使用之一
  16. C++别踩白块小游戏
  17. kiwi syslog安装部署中的问题
  18. 对redis的keys方法替换
  19. Activiti 自定义流程图颜色
  20. Huffman编码的Matlab实现--用于单导联ECG数据的压缩和解压缩

热门文章

  1. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测——LCT
  2. Android GPS 取经纬度
  3. oracle的会话(session)
  4. 方法对象Spring MVC SimpleFormController
  5. GDB调试多进程程序或同时调试多个程序
  6. typescript的基本类型
  7. JavaScript之面向对象与原型笔记整理--------创建对象之原型(2)
  8. python分类与原理以及国内好的发展方向
  9. mysqlinsert触发器的创建
  10. Beta版本冲刺———第二天