zoukankan      html  css  js  c++  java
  • 孤立森林算法简介

    前言

    现有的异常检测方法主要是通过对正常样本的描述,给出一个正常样本在特征空间中的区域,对于不在这个区域中的样本,视为异常。这些方法的主要缺点是,异常检测器只会对正常样本的描述做优化,而不会对异常样本的描述做优化,这样就有可能造成大量的误报,或者只检测到少量的异常。

    异常具有两个特点:异常数据只占很少量,异常数据特征值和正常数据差别很大。而孤立森林不再是描述正常的样本点,而是孤立异常点

    在孤立森林中,异常被定义为“容易被孤立的离群点 (more likely to be separated)”,可以将其理解为分布稀疏且离密度高的群体较远的点。 在特征空间里,分布稀疏的区域表示事件发生在该区域的概率很低,因而可以认为落在这些区域里的数据是异常的。

    孤立森林是一种适用于连续数据无监督异常检测方法。在孤立森林中,递归地随机分割数据集,直到所有的样本点都是孤立的。在这种随机分割的策略下,异常点通常具有较短的路径。

    直观上来讲,那些密度很高的簇是需要被切很多次才能被孤立,但是那些密度很低的点很容易就可以被孤立。

    如下图:

    X需要多次的分割才能被孤立,而 Xo 需要较少的分割次数就能被孤立。因此 X为正常点,Xo 为异常点。

    分割方式采用的是,随机选择一个特征以及拆分的值(这个值位于该特征的最小值和最大值之间)。

    isolation tree (iTree)

    定义:假设 T 是孤立树的一个节点,它要么是没有子节点的叶子节点,要么是只有两个子节点 (Tl,Tr) 的内部节点。

    每一步分割,都包含特征 q 和分割值 p,将 q < p 的数据分到Tl,将 q ≥ p 的数据分到Tr。

    给定 n 个样本数据 X = {x1,⋯,xn},特征的维度为 d。为了构建一棵孤立树,需要随机选择一个特征 q 及其分割值 p,递归地分割数据集 X

    直到满足以下任意一个条件:(1) 树达到了限制的高度;(2) 节点上只有一个样本;(3) 节点上的样本所有特征都相同。

    异常检测的任务是给出一个反应异常程度的排序,常用的排序方法是根据样本点的路径长度或异常得分来排序,异常点就是排在最前面的那些点。

    Path Length(路径长度)

    定义: 样本点 的路径长度 h(x) 为从 iTree 的根节点到叶子节点所经过的边的数量。

    Anomaly Score(异常得分)

    给定一个包含 个样本的数据集,树的平均路径长度为:

                                                                               

    其中 H(i) 为调和数,该值可以被估计为 ln(i) + 0.5772156649。c(n) 为给定样本数 n 时,路径长度的平均值,用来标准化样本 x 的路径长度 h(x)。

    样本 的异常得分定义为

                                                                             

    其中,E(h(x)) 为样本 x 在一批孤立树中的路径长度的期望。下图给出了 s 和 E(h(x)) 的关系。

    由上图可以得到一些结论:

    当 E(h(x))→c(n) 时,s→0.5,即样本 x 的路径平均长度与树的平均路径长度相近时,则不能区分是不是异常。

    当 E(h(x))→0 时,s→1,即 x 的异常分数接近1时,被判定为异常。

    当 E(h(x))→n−1 时,s→0,被判定为正常。

    参考链接:https://blog.csdn.net/extremebingo/article/details/80108247

  • 相关阅读:
    10 种保护 Spring Boot 应用的绝佳方法
    Redis 如何分析慢查询操作?
    Spring Boot 主类及目录结构介绍
    Redis 再牛逼,也得设置密码!!
    Spring Data Redis 详解及实战一文搞定
    Spring Boot Redis Cluster 实战干货
    超详细的 Redis Cluster 官方集群搭建指南
    Redis Linux 安装运行实战全记录
    hdu 4790 Just Random (思路+分类计算+数学)
    poj 1328 Radar Installation(贪心)
  • 原文地址:https://www.cnblogs.com/yytest/p/12708948.html
Copyright © 2011-2022 走看看