吴恩达老师机器学习课程chapter09——异常检测

本文是非计算机专业新手的自学笔记,高手勿喷。

本文仅作速查备忘之用,对应吴恩达(AndrewNg)老师的机器学期课程第十五章。



异常检测指的是用来判断样本是否异常的过程。

一元高斯分布/正态分布

对于随机变量\(x \in \mathbb{R}\),服从一个数学期望为μ、方差为σ^2的正态分布,记为 \(N(μ,σ^{2})\),如下:

\[\begin{array}{l}
N(μ,σ^{2})=p\left(x ; \mu, \sigma^{2}\right) =\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)
\end{array}
\]

μ影响函数分布中心位置;σ^2越大函数越平。

从样本中计算数学期望为μ、方差为σ^2:

\[\mu=\frac{1}{m} \sum_{i=1}^{m} x^{(i)}\\
\sigma^{2}=\frac{1}{m} \sum_{i=1}^{m} {\left(x^{(i)}-\mu\right)^{2}}
\]

异常检测算法

有训练集$ x^{(1)}, x^{(2)} \cdots x^{(m)} $,认为各样本独立同分布,有:

\[p(x)=p\left(x_{1} ; \mu_{1}, \sigma_{1}^{2}\right) p\left(x_{2} ; \mu_{2}, \sigma_{2}^{2}\right) p\left(x_{3} ; \mu_{3}, \sigma_{3}^{2}\right) \cdots p\left(x_{n} ; \mu_{n}, \sigma_{n}^{2}\right)
=\prod_{j=1}^{n} p\left(x_{j} ; \mu_{j}, \sigma_{j}^{2}\right)
\]

有异常检测算法如下:

以二维空间为例,可视化之后的直观表现如下:


异常检测设计

给定有标签的样本,可以按照一定比例将其分为训练集、交叉验证集、测试集,一般比例可以选择6:2:2。

例如:

设计步骤如下:

如何选择 $\varepsilon $

可以通过设定不同的 $\varepsilon \(, 在交叉验证集上考察其F1Score,选择F1Score最高时对应的\)\varepsilon $。

如何选择特征

实际操作中,选择接近高斯分布的特征;

如果特征与高斯分布相差很远,可以使用对数函数、幂函数,将特征转变为与高斯分布相近的新特征。

当现有特征不能将异常与非异常的样本区分时,应该寻找新的特征将异常样本剥离出来。


与监督学习的区别

异常检测与监督学习有如下区别:

监督学习通常拥有大量样本,当中包含了许多正样本与负样本;而异常检测中正样本数量通常很少,负样本数量很多。

监督学习中,正样本通常拥有明显的特征,正样本之间很类似;而异常检测中正样本之间可能差异很大,可能会出现从未见过的类型。


多元高斯分布

当特征之间的独立性不够明显,会出现异常样本被淹没的情况:

这时候需要引入协方差矩阵 \(\Sigma\) 。对于一组样本, \(\mu \in \mathbb{R}^{n}, \Sigma \in \mathbb{R}^{n \times n}\),其高斯分布如下:

\[p(x ; \mu, \Sigma)=
\frac{1}{(2 \pi)^{\frac{}{2}}|\varepsilon|^{\frac{1}{2}}}
\exp \left(-\frac{1}{2}(x-\mu)^{T} \Sigma^{-1}(x-\mu)\right)
\]

其中,均值向量 \(\mu\) 对分布的影响如下:

协方差矩阵 $\Sigma $对分布的影响如下:

当\(\Sigma\)满足如下条件时:

\[\Sigma=
\begin{bmatrix}
\sigma_{1}^{2} &0 &\cdots &0 \\
0& \sigma_{2}^{2} &\cdots &0 \\
\vdots &\vdots & \ddots &\vdots \\
0& 0 & \cdots &\sigma_{n}^{2}
\end{bmatrix}
\]

多元高斯分布与一元高斯分布的乘积是一样的(各特征独立)。

引入多元高斯分布之后,异常检测算法也要做出如下修改:

多元高斯分布方法与一元高斯分布方法的比较:

吴恩达老师机器学习课程chapter09——异常检测的更多相关文章

  1. 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/

    机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 GNU Octave    开源  MatLab http://www.ai-start.com/ https://zhuanlan.zhihu ...

  2. 吴恩达《机器学习》课程笔记——第六章:Matlab/Octave教程

    上一篇  ※※※※※※※※  [回到目录]  ※※※※※※※※  下一篇 这一章的内容比较简单,主要是MATLAB的一些基础教程,如果之前没有学过matlab建议直接找一本相关书籍,边做边学,matl ...

  3. 吴恩达《机器学习》课程总结(5)_logistic回归

    Q1分类问题 回归问题的输出可能是很大的数,而在分类问题中,比如二分类,希望输出的值是0或1,如何将回归输出的值转换成分类的输出0,1成为关键.注意logistics回归又称 逻辑回归,但他是分类问题 ...

  4. 深度学习 吴恩达深度学习课程2第三周 tensorflow实践 参数初始化的影响

    博主 撸的  该节 代码 地址 :https://github.com/LemonTree1994/machine-learning/blob/master/%E5%90%B4%E6%81%A9%E8 ...

  5. 吴恩达《机器学习》课程笔记——第七章:Logistic回归

    上一篇  ※※※※※※※※  [回到目录]  ※※※※※※※※  下一篇 7.1 分类问题 本节内容:什么是分类 之前的章节介绍的都是回归问题,接下来是分类问题.所谓的分类问题是指输出变量为有限个离散 ...

  6. 吴恩达《机器学习》课程总结(18)_照片OCR

    18.1问题描述和流程图 (1)图像文字识别是从给定的一张图片中识别文字. (2)流程包括: 1.文字侦测 2.字符切分(现在不需要切分了) 3.字符分类 18.2滑动窗口 在行人检测中,滑动窗口是首 ...

  7. 吴恩达《机器学习》编程作业——machine-learning-ex1:线性回归

    ❄❄❄❄❄❄❄❄[回到目录]❄❄❄❄❄❄❄❄ 本次编程作业中,需要完成的代码有如下几部分: [⋆] warmUpExercise.m - Simple example function in Octa ...

  8. 跟我学算法-吴恩达老师(超参数调试, batch归一化, softmax使用,tensorflow框架举例)

    1. 在我们学习中,调试超参数是非常重要的. 超参数的调试可以是a学习率,(β1和β2,ε)在Adam梯度下降中使用, layers层数, hidden units 隐藏层的数目, learning_ ...

  9. 跟我学算法-吴恩达老师(mini-batchsize,指数加权平均,Momentum 梯度下降法,RMS prop, Adam 优化算法, Learning rate decay)

    1.mini-batch size 表示每次都只筛选一部分作为训练的样本,进行训练,遍历一次样本的次数为(样本数/单次样本数目) 当mini-batch size 的数量通常介于1,m 之间    当 ...

  10. 跟我学算法-吴恩达老师的logsitic回归

    logistics回归是一种二分类问题,采用的激活函数是sigmoid函数,使得输出值转换为(0,1)之间的概率 A = sigmoid(np.dot(w.T, X) + b ) 表示预测函数 dz ...

随机推荐

  1. java struts2框架漏洞合集

    目录 struts2 s2-016 payload 数据包 返回结果 struts2 s2-016 参考:https://github.com/vulhub/vulhub/blob/master/st ...

  2. 快速构建用户xlwings环境

    一.安装python python-3.8.3-amd64.exe 二.准备文件requirements.txt 内容如下 安装失败需要切换国内镜像源 numpy==1.22.1 openpyxl== ...

  3. drf从入门到飞升仙界 08

    断点调试使用 # 程序在debug模式运行,可以在任意位置停下,查看当前情况下变量数据的变化情况 # 使用pycharm调试程序 - 1.以debug模式运行. - 2.在代码左侧加入断点(红圈) - ...

  4. c++ class派生与多态

    目录 类继承和类派生 继承时名字遮蔽 基类和派生类的构造函数 构造函数调用顺序 基类和派生类的析构函数 多重继承 虚继承和虚基类 将派生类赋值给基类(向上转型) 将派生类指针赋值给基类指针. 将派生类 ...

  5. 数据库基础day1

    数据库基础 MySQL概述 SQL 函数 概念 函数 是指一段可以直接被另一段程序调用的程序或代码. 3.1字符串函数 函数 功能 CONCAT(S1,S2,...Sn) 字符串拼接,将S1,S2,. ...

  6. Unity 使整个UnityUI变成彩色的BUG

    最近接手了一个两年前的老项目,在这个项目里碰到一个BUG ,每次运行到这个场景的时候,整个Unity 的所有UI包括Unity界面都会变成彩色. 后来发现是因为物体丢失,代码修改Image里的图片颜色 ...

  7. VsCode轻松使用docker容器-Remote Containers

    VsCode轻松使用docker容器-Remote Containers 演示视频:BiliBili 使用docker容器过程中,最常见的操作是进入容器内查看文件.修改配置等操作 以前 使用shell ...

  8. cdn全栈加速nginx二层代理实现

    1 nginx.conf中添加配置如下: server { listen 5050; location / { proxy_pass http://代理IP:3333; proxy_set_heade ...

  9. fastdfs虚拟机单机版搭建

    说明:github搭建步骤:https://github.com/happyfish100/fastdfs/wiki#trackermkdir /home/dfs #创建数据存储目录 cd /usr/ ...

  10. 【Java】取n工作日后的日期(仅排除周六周日)

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.*; import java. ...