Novelty Detection

  • 无监督学习算法
  • 做特征工程的时候需要对异常数据做过滤,防止对归一化等处理的结果产生影响。
  • 对没有标记输出的特征数据做筛选,找出异常的数据
  • 对有标记输出的特征数据做二分类时,对某些训练样本非常少的类别,可以考虑用非监督的异常点检测算法来做。

异常点检测算法常见类别

  • 基于统计学的方法来处理异常数据,这种方法一般会构建一个概率分布模型,并计算对象符合该模型的概率,把具有低概率的对象视为异常点。
    preprocessing.RobustScaler:在做数据特征值缩放的时候,利用数据特征的分位数分布,将数据根据分位数划分为多段,只取中间段来做缩放,比如只取25%分位数到75%分位数的数据做缩放。
  • 基于聚类方法来做异常点检测。
    如果聚类后发现某些聚类簇的数据样本量比其他簇少很多,而且这个簇内数据的特征均值分布和其他簇也差异很大,这些簇内的样本点大概率是异常点。
  • 基于专门的异常点检测算法来做。
    专门检测异常点,One Class SVM和Isolation Forest

svm.OneClassSVM

  • 无监督学习,不需要标记训练集的输出标签。
  • 期望所有不是异常的样本都是正类别,它采用一个超球体而不是超平面来做划分,该算法在特征空间中获得球形边界,判断新的数据点 𝑧 是否在球内,如果𝑧到中心的距离小于或者等于半径𝑟,则不是异常点,如果在超球体以外,则是异常点。
  • 期望最小化这个超球体的体积,从而最小化异常点数据的影响。 m i n ⏟ r , o V ( r ) + C ∑ i = 1 m ξ i \underbrace{min}_{r,o}V(r) + C\sum\limits_{i=1}^m\xi_i r,o minV(r)+Ci=1mξi ∣ ∣ x i − o ∣ ∣ 2 ≤ r + ξ i ,    ξ i ≥ 0 ,    i = 1 , 2 , . . . m ||x_i-o||_2 \leq r + \xi_i,\;\xi_i\geq0, \;i=1,2,...m xio2r+ξi,ξi0,i=1,2,...m

ensemble.IsolationForest

  1. 第一步训练构建随机森林对应的n颗决策树,iTree
  2. 计算需要检测的数据点𝑥最终落在任意第t颗iTree的层数 h t ( x ) h_t(x) ht(x),得出𝑥在每棵树的高度平均值 h ( x ) h_(x) h(x)
  3. 根据 h ( x ) h_(x) h(x)判断𝑥是否是异常点

  1. 采样决策树的训练样本时,普通的随机森林要采样的样本个数等于训练集个数。但一般来说,iTree采样个数要远远小于训练集个数。只需要部分样本一般就可以将异常点区别出来。
  2. 随机选择划分特征,然后基于这个特征再随机选择划分阈值,进行决策树的分裂。直到树的深度达到限定阈值或者样本数只剩一个。
  3. 遍历每一颗iTree,得到检测的数据点𝑥最终落在任意第t颗iTree的数层数 h t ( x ) h_t(x) ht(x),根节点的高度为0。
  4. 计算𝑥的异常概率分值: s ( x , m ) = 2 − h ( x ) c ( m ) s(x,m) = 2^{-\frac{h(x)}{c(m)}} s(x,m)=2c(m)h(x) c ( m ) = 2 ln ⁡ ( m − 1 ) + ξ − 2 m − 1 m ,    ξ 是 欧 拉 常 数 c(m) =2\ln(m-1) + \xi - 2\frac{m-1}{m}, \; \xi 是欧拉常数 c(m)=2ln(m1)+ξ2mm1,ξ 𝑠(𝑥,𝑚) 的取值范围是[0,1],取值越接近于1,则是异常点的概率也越大。m为样本个数。
  5. h ( x ) → 0 h(x)→0 h(x)0, 则 s ( x , m ) → 1 s(x,m)→1 s(x,m)1 h ( x ) → m − 1 h(x)→m-1 h(x)m1, 则 s ( x , m ) → 0 s(x,m)→0 s(x,m)0

异常点检测小结

  • IForest是异常点检测最常用的算法之一。
  • 它具有线性时间复杂度;树的数量越多,算法越稳定;可以在大规模分布式系统上来加速运算。
  • 不适用于特别高维的数据,每次都是随机选取一个维度和该维度的随机一个特征,建完树后仍然有大量的维度没有被使用,导致算法可靠性降低。此时推荐降维后使用,或考虑使用One Class SVM。
  • 仅对全局稀疏点敏感,不擅长处理局部的相对稀疏点 ,这样在某些局部的异常点较多的时候检测可能不是很准。
  • One Class SVM较适合对中小型数据的分析,尤其是训练样本不是特别海量时。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值