notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • 深度学习

  • 机器学习

    • 吴恩达-机器学习

      • 基础概念
      • Logistic Regression
      • Regularization
      • Neural Network
      • K-Means
      • 主成分分析(PCA)
      • Anomaly detection
        • 1. Problem Motivation
        • 2. Gaussian Distribution
          • 2.1 Gaussian (Normal) Distribution
          • 2.2 Parameter estimation
        • 3. Algorithm
        • 4. Developing and Evaluating an Anomaly Detection System
        • 5. Anomaly detection vs. Supervised learning
        • 6. Choosing what features to use
          • 6.1 面对 non-gaussian features 怎么办?
          • 6.2 怎样得到这些 feature?
        • 7. 多变量高斯分布
      • 协同过滤
      • 大规模机器学习
    • 浙大胡浩基-机器学习

    • 莫烦-机器学习算法的数学解析与 Python 实现

    • 李航-统计学习方法

    • 李沐-实用机器学习

  • 知识图谱

  • AI
  • 机器学习
  • 吴恩达-机器学习
yubin
2022-07-20
目录

Anomaly detection

# 1. Problem Motivation

异常检测是机器学习算法的一个常见应用。

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

image-20220720115045502

这样一来,你就有了一个数据集,将这些数据绘制成图表,看起来就是这个样子:

image-20220720115130730

这样,异常检测问题可以定义如下:我们假设后来有一天,你有一个新的飞机引擎从生产线上流出,而你的新飞机引擎有特征变量 ,所谓的异常检测问题就是:我们希望知道这个新的飞机引擎是否有某种异常,或者说,我们希望判断这个引擎是否需要进一步测试。因为,如果它看起来像一个正常的引擎,那么我们可以直接将它运送到客户那里,而不需要进一步的测试。

我们希望知道这个新数据 是不是异常的,就是看这个数据不属于这组正常数据的几率是多少:

image-20220720115305421

上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。

这种方法称为密度估计,表达如下:

if p(x) < threshold:
    x is anomaly
else
	x is normal
1
2
3
4

这种方式也可以用于做欺诈检测等。

# 2. Gaussian Distribution

# 2.1 Gaussian (Normal) Distribution

高斯分布就是正态分布。

# 2.2 Parameter estimation

给了一个 dataset:,我们猜测它符合 Gaussian Distribution,即 ,但我们不知道 param 和 的值:

image-20220720130906566

估计这两个参数的公式为:

在统计学中,为了达到无偏估计,估计 时前面的系数应该是 ,不过在机器学习中,当数据量大了之后,就无所谓用哪个了,所以在机器学习中一般是用 。

# 3. Algorithm

本节将应用 Gaussian Distribution 开发异常检测算法。

Anomaly detection algorithm

image-20220720133046056

# 4. Developing and Evaluating an Anomaly Detection System

When developing a learning algorithm (choosing features, etc.), making decisions is much easier if we have a way of evaluating our learning algorithm.

假定我们有一些 labeled data,y = 0 if normal,y = 1 if anomalous. 那么划分出三个数据集:

  • Training set:,这些都是 normal example
  • Cross validation set:
  • Test set:

以之前说的飞机引擎作为例子,加入我们有 10000 个 normal example,20 个 anomalous example,可以做如下划分:

  • training set:6000 good engines
  • validation set:2000 good, 10 anomalous
  • test set:2000 good,10 anomalous

不建议让 validation set 和 test set 使用同一个数据集。

划分了数据集后,对算法的评价方法时:

Algorithm evaluation

image-20220720153552405
通过在 validation set 上最大化 evaluation metrics 来选择参数 threshold $\epsilon$。

# 5. Anomaly detection vs. Supervised learning

image-20220720155112558
  • Anomaly detection 常用于 fraud detection、manufacturing、monitoring machines in a data center
  • Supervised learning 常用于 Email spam classification、weather prediction、cancer classification

# 6. Choosing what features to use

# 6.1 面对 non-gaussian features 怎么办?

在刚刚介绍的算法中,我们使用 Gaussian Distribution 来对 feature 建模,所以我们需要先用直方图画出数据,以确保 feature 在进入 Anomaly detection 算法之前看上去比较接近 Gaussian Distribution。

image-20220720160752508

上图中的上半部分的直方图(hist)是比较接近与 Gaussian Distribution 的,但下半部分的原始数据却显然不接近,这时可以对他进行一个变换,比如 后就变成了右边的图像,从而接近于 Gaussian Distribution。

当然还存在其他变换,比如可以 ,其中 c 是一个常数;可以 、 等等,具体采用哪种变换是需要自己去调的。

# 6.2 怎样得到这些 feature?

在 Anomaly Detection 中,我们希望的是:

  • 当 x 是 normal example 时 尽可能大
  • 当 x 是 anomalous example 时 尽可能小。

但一个问题是,很多 feature 的 在 normal 和 anomalous 时都是差不多大的。

仍以监控计算机作为例子。Choose features that might take on unusually large or small values in the event of an anomaly. 假如有以下 features:

  • : memory use of computer
  • : number of disk accesses/sec
  • : CPU load
  • : network traffic

如果有一台服务器的程序陷入了死循环,那么就会出现 CPU load 很大,但 network traffic 很低的情况,这时候就可以将 作为一个 feature,这个 feature 可以帮助我们检测到异常的情况。

# 7. 多变量高斯分布

// TODO:选修,还没有学

编辑 (opens new window)
上次更新: 2022/07/20, 09:28:10
主成分分析(PCA)
协同过滤

← 主成分分析(PCA) 协同过滤→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×