机器学习之异常点检测

1.iForest(独立森林)算法

样本数据过大时推荐采用这种异常值检测方法

原理分析:iForest森林也由大量的树组成。iForest中的树叫isolation tree,简称iTree。iTree树和决策树不太一样,其构建过程也比决策树简单,因为其中就是一个完全随机的过程。具体实施过程如下:第一、假设共有N条数据,构建一颗iTree时,从N条数据中均匀抽样(一般是无放回抽样)出ψ个样本出来,作为这颗树的训练样本。在样本中,随机选一个特征,并在这个特征的所有值范围内(最小值与最大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。这样得到了一个分裂条件和左、右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直接达到终止条件。终止条件有两个,一个是数据本身不可再分(只包括一个样本,或者全部样本相同),另外一个是树的高度达到log2(ψ)。不同于决策树,iTree在算法里面已经限制了树的高度。当然不限制也可以,只是算法为了效率考虑,只需要达到log2(ψ)深度即可。

第二、把所有的iTree树构建好了,就可以对测试数据进行预测了。预测的过程就是把测试数据在iTree树上沿对应的条件分支往下走,直到达到叶子节点,并记录这过程中经过的路径长度h(x),即从根节点,穿过中间的节点,最后到达叶子节点,所走过的边的数量(path length)。最后,将h(x)带入(具体公式参考https://www.cnblogs.com/pinard/p/9314198.html),计算每条待测数据的异常分数(Anomaly Score)如果分数越接近1,其是异常点的可能性越高;如果分数都比0.5要小,那么基本可以确定为正常数据;如果所有分数都在0.5附近,那么数据不包含明显的异常样本。

在sklearn中的使用:

算法基本上不需要配置参数就可以直接使用,通常就以下几个(参数明显比随机森林简单):
n_estimators: 默认为100,配置iTree树的多少

max_samples: 默认为265,配置采样大小

max_features: 默认为全部特征,对高维数据,可以只选取部分特征

from sklearn.ensemble import IsolationForest

ilf=IsolationForest()
ilf.fit(X)
s=ilf.predict(X)

返回的是只包含-1和1元素的数组,-1代表可能为异常值的点

2.异常点检测常用算法OneClassSVM

在样本数据较少时建议采用这种异常值检测方法

它是无监督学习的方法,这里只讲解一种特别的思路SVDD, 对于SVDD来说,我们期望所有不是异常的样本都是正类别,同时它采用一个超球体而不是一个超平面来做划分,该算法在特征空间中获得数据周围的球形边界,期望最小化这个超球体的体积,从而最小化异常点数据的影响。可以判断新的数据点z是否在类内,如果z到中心的距离小于或者等于半径r,则不是异常点,如果在超球体以外,则是异常点。在sklearn中的用法

from sklearn.svm import OneClassSVM

classer=OneClassSVM()
classer.fit(X)
yHat=classer.predict(X)
print(yHat)

注意:由于其是非监督学习方法,所以不用传入类别列表。返回数据和iForest一样是只包含1,-1的列表,-1代表可能是异常点,X是训练样本。检测完后的数据筛选

原文地址:https://www.cnblogs.com/dyl222/p/11122226.html

时间: 2024-10-09 01:47:34

机器学习之异常点检测的相关文章

机器学习 鲁棒的基于高斯概率密度的异常点检测(novelty detection) ellipticalenvelope算法

异常点检测分为novelty detection 与 outlier detection 鲁棒性的高斯概率密度是novelty detection, 就是在给出的数据中, 找出一些与大部分数据偏离较远的异常数据, 我们的训练集不是纯净的, 包含异常点 outlier detection 的训练集是纯净的 算法理解 这个算法的思想很好理解, 就是求出训练集在空间中的重心, 和方差, 然后根据高斯概率密度估算每个点被分配到重心的概率. 程序 调包侠决定使用 scikit-learn: print(_

基于欧氏距离和马氏距离的异常点检测—matlab实现

前几天接的一个小项目,基于欧氏距离和马氏距离的异常点检测,已经交接完毕,现在把代码公开. 基于欧式距离的: load data1.txt %导入数据,行为样本,列为特征 X=data1; %赋值给X u=mean(X); %求均值 [m,n]=size(X); for i=1:m dist(i)=sqrt(sum(X(i,:)-u).^2); end [a,b]=sort(dist);%对欧氏距离进行排序 T=ceil(m*0.02)%设置阀值 Threshold=a(m-T);%定为阀值 le

异常点检测算法

基于统计学的方法 一.基于正态分布的一元离群点检测方法 假设有 n 个点$(x_1, ...,x_n)$, 那么可以计算出这n个点的均值$\mu$和方差$\sigma$.均值和方差分别被定义为: 在正态分布的假设下,区域$\mu +- 3 \sigma$包含了99.7% 的数据,如果某个值距离分布的均值$\mu$超过了$3 \sigma$,那么这个值就可以被简单的标记为一个异常点(outlier). 二.多元离群点的检测方法 涉及两个或者两个以上变量的数据称为多元数据,很多一元离群点的检测方法都

异常点检测算法小结

异常点检测,有时也叫离群点检测,英文一般叫做Novelty Detection或者Outlier Detection,是比较常见的一类非监督学习算法,这里就对异常点检测算法做一个总结. 一.1.?异常点检测算法使用场景 什么时候我们需要异常点检测算法呢?常见的有三种情况.一是在做特征工程的时候需要对异常的数据做过滤,防止对归一化等处理的结果产生影响.二是对没有标记输出的特征数据做筛选,找出异常的数据.三是对有标记输出的特征数据做二分类时,由于某些类别的训练样本非常少,类别严重不平衡,此时也可以考

碎碎念 - 异常点检测

异常点的定义参考hawkings离群点定义.需要注意的问题有属性个数.全局/局部.异常程度.一次识别异常个数.评估等.检测方法有:基于模型的方法.基于邻近度的方法.基于密度的方法.在基于模型的方法下,对一元正态分布使用标准差区分:对多元正态分布使用mahalanobis距离区分,它会考虑分布的形状:对屏蔽(masking)问题,使用混合模型进行最大似然度估计.在基于邻近度的方法下,近邻数k越大,越有可能检测为异常点.在基于密度的方法下,密度可以通过逆距离和点计数计算:当簇的密度不均时,使用相对密

15-outbreak 图机器学习之爆发检测

网络的爆发检测 outbreak detection 近似算法,加速贪婪爬升,证明数据依赖 给一个真实的城市水源分布网络 以及污染物如何再网络中传播的数据 尽可能快的检测到污染物 检测信息的爆发 一般的问题: 1) 两个示例都是同样的潜在的问题 2) 给定一个网络传播的动态过程,我们希望选择一个节点集合来高效的检测过程 更多的应用: 流行病:影响力传播:网络安全 水网络: 放置传感器的用途:水流动力学,家庭需求 下图中的颜色表示不同的应用需求,红,黄,绿 表示不同的影响爆发 给定一个图,outb

基于机器学习的web异常检测

基于机器学习的web异常检测 Web防火墙是信息安全的第一道防线.随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战.传统web入侵检测技术通过维护规则集对入侵访问进行拦截.一方面,硬规则在灵活的黑客面前,很容易被绕过,且基于以往知识的规则集难以应对0day攻击:另一方面,攻防对抗水涨船高,防守方规则的构造和维护门槛高.成本大. 基于机器学习技术的新一代web入侵检测技术有望弥补传统规则集方法的不足,为web对抗的防守端带来新的发展和突破.机器学习方法能够基于大量数据进行

常用的机器学习知识(点)

常用的机器学习&数据挖掘知识(点) 声明:想做机器学习&数据挖掘的学弟学妹,可以看看,转载请说明出处... 常用的机器学习知识(点) Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Least Square Methods 最小二乘法),MLE(MaximumLikelihood Estimation最大似然估计),QP(Quadratic Programming 二次规划), CP(Conditi

机器学习中的数据清洗与特征处理综述

背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富.通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向.目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐.筛选排序.搜索排序.用户建模等等,为公司创造了巨大的价值.本文主要介绍在美团的推荐与个性化团队实践中的数据清洗与特征挖掘方法.主要内容已经在内部公开课"机器学习InAction系列"讲过,本博客的内容主要是