导航:首页 > 源码编译 > 半监督if异常检测算法

半监督if异常检测算法

发布时间:2022-09-27 23:54:18

Ⅰ 综述:广义的分布外检测(异常检测、开集识别、OOD检测)

Generalized Out-of-Distribution Detection: A Survey Jingkang Yang, Kaiyang Zhou, Yixuan Li, and Ziwei Liu https://github.com/Jingkang50/OODSurvey

分布外(Out-Of-Distribution,OOD)检测对确保机器学习系统的可靠性和安全性至关重要。例如,在自动驾驶中,当遇到它从未见过、无法给出安全决策的非常规情形或物体,我们需要驾驶系统发出警告并且将控制权交给人类。自2017年被提出起,这个问题越来越受研究者关注,各种解决方案层出不穷,大致包括:基于分类的、基于密度的、基于重构的、基于距离的方法。与此同时,其他几个问题在动机和方法上与分布外检测紧密相关,这些问题包括:异常检测(Anomaly Detection,AD)、新类检测(Novelty Detection)、开集识别(Open Set Recognition,OSR)和离群检测(Outlier Detection,OD)。尽管他们各自定义和问题设定不同,这些问题经常使读者和实践者感到困惑,这导致有些现有工作误用了这些术语。实际上,AD、ND、OSR、OOD、OD这五个问题能够统一在广义的分布外检测框架下,都可以视作分布外检测的特例或子任务,并且能够轻易地被区分。这篇综述通过总结最新的技术发展对这五个问题做了深入的回顾,并以该领域的开放挑战和潜在的研究方向作结。

可信的视觉识别系统不仅仅在已知的情境下能给出精确预测,还应该能检测到未知的样本并且丢弃或将它们交给用户来做安全地处理。

比如,一个训练良好的食物分类器应该丢弃像用户自拍照之类的非食物图片,而不是胡乱判定其属于某已知的食物类别。在安全要求极高的应用中,比如无人驾驶,系统应该在它碰到不寻常的、未在训练中见到的情形或物体时发出警告并将控制权交给司机。

大多数现有机器学习模型都基于封闭世界假设(the closed-world assumption)来训练,即测试集和训练集独立同分布,或者说两者来源于同一分布(in-distribution)。然而,当模型被部署在开放世界场景(open-world scenario)中,测试样本的分布可以是取自不同于训练集分布的分布的(out of distribution),因而需要被谨慎处理。分布的变化可能是语义漂移(比如,OOD样本取自别的类别)、协变量漂移(也称输入漂移,比如OOD样本取自其他领域??)。

只考虑语义漂移和协变量漂移两类漂移。

异常检测目的在于在测试阶段检测异常的样本,“异常”指的是偏离预定义的“正常”。这种偏离可能是协变量漂移或是语义漂移导致的。异常检测可以分为两个子任务:

与异常检测的区别 :1) 动机上,新类检测中并不像异常检测把没见过的“新”样本看做错误的或是有害的,而是将珍视这些新样本为后续模型的学习资源;2)新类检测首要关注的是语义漂移;3)新类检测中,没有限制ID样本属于单个类,在训练集中可以有多个类别的样本。

新类检测目的在于检测出不属于任何训练类别的测试样本。检测到的新奇样本通常预备用于未来程序的构建,比如特异性更强的分析、当前模型的增量学习等。依据训练类别数量的差异,新类检测分为:

OSR需要一个多类别分类器来同时1)精确地分类 训练类别的 测试样本(ID);2)识别出测试样本中 不属于训练类别 的样本(OOD)。

OSR = multi-class ND

需要模型拒绝标签迁移的样本以保证预测可靠性和安全性

分布外检测目的在于检测测试样本

当某个样本显着区别于其他的样本时,认为它是“离群”的。在异常检测、新类检测、开集识别、分布外检测的问题设定中,都存在这训练-测试的流程,要挑出测试中出现的不属于训练分布的样本。

而离群检测无“训练分布”、“测试分布”,而是直接挑出所有可见样本中显着区别于其他的那些样本。

给定同构的ID数据,最直接的方法是1)基于密度的方法,这些方法估计ID的密度,拒绝那些偏离估计的OOD的测试样本。其他的方法包括:2)依靠图片重构的质量来识别异常样本,3)直接学习一个决策边界来区分ID和OOD样本,4)基于距离的方法,5)基于元学习的方法

基于密度的方法尝试去建模正常数据(ID数据)的分布,这种做法基于一个实践假设:异常的测试样本在估计的密度模型下游较低的概率值,而正常样本概率值较高。

参数密度估计假设ID样本的密度能够被表示为某种定义好的分布。一种方法是在训练数据上拟合一个多变量高斯分布,并且度量测试样本与训练样本的期望之间的马氏距离(协方差距离,计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系)。其他的工作采用了更复杂的假设,认为训练分布是混合的高斯分布或是泊松分布等。

非参数密度估计考虑了更贴合实际的情形:预定义的分布不能够建模真实分布。可以简单地用直方图对训练分布进行建模。核密度估计(KDE)进一步使用核函数作为离散直方图的连续替代版,它可以灵活地使用点权重和带宽去控制估计的分布。

虽然经典的密度估计方法在很多任务上获得了很好的AD性能,但它们更适合低维任务。
对于计算机视觉任务中的高维数据,这些方法的计算性和可伸缩性受到影响。为缓解维数灾难,有些方法通过特征工程降维[277],[278]。

通过由潜在嵌入重建出输入,自编码器能学到无标签数据的高效表达。变分自编码器将输入的图片编码为服从高斯分布的潜在向量。习得的潜在嵌入可被视为输入的低维表示。传统密度估计方法可以应用在这些深度表示之上。

生成对抗网络由一个生成网络和一个判别网络构成,两者在零和博弈中相互竞争。典型地,生成网络学习从潜在空间到所研究数据分布的映射,而判别网络试图分辨生成器生成的数据和真实数据。然而,不同于基于自编码器/变分自编码器的范式,少了一个编码器使得GAN难以直接为一张输入图片找到相应的嵌入。针对这个问题,ADGAN [90] 对一个给定的样本,在潜在空间搜索一个好的表示。如果找不到这样的表示,这个样本被认为是异常的。该方法计算代价极高。

规范化的流描述了一个概率分布经过一系列可逆映射的转化过程。通过重复施加变量变化的规则,初始的密度“流”过了一系列可逆映射。因此,使用规范化的流的方法能够直接估计输入空间的可能性。基于流的方法有优雅的数学表示,但是它们同样仅对低维特征敏感。若不进行降维,基于流的方法计算代价高。

除通过生成式模型获取可视化嵌入外,一些方法主要通过扩充模型容量来增加提取到的特征的表示能力,这或许可以让正常(ID)能被更精确地特征化为密度估计。这些策略包括数据增强,对抗训练,蒸馏,损失函数增强,使用浅表/局部特征。

基于能量的方法使用一个标量能量评分来表述变量概率密度,这个标量采用非标准化的负对数概率,

然而,和标准的深度学习模型相比,训练基于能量的方法代价昂贵,因为马尔可夫链蒙特卡罗法(MCMC,在概率空间,通过随机采样估算兴趣参数的后验分布)采样和估计需要积分运算。

为解决这个难题,研究者提出了评分匹配方法和随机梯度之类的方法来支持高效训练。

现有工作也探索了使用频域分析方法做异常检测。人类通过图片的低频信息来理解图片,而CNN更多依赖高频信息来做决策。人们提出了CNN核平滑和谱引导的数据增强之类的方法去抑制高频分量的影响。还有一些工作发现,对低频分量的对抗攻击也很难被检测到,因此提出

基于频率的方法专注于感官异常检测(尤其是检测对抗样本),或许不适用于语义异常检测。

基于重构的方法的核心在于在ID数据上训练得到的编解码器(encoder-decoder)框架通常对ID和OOD样本返回不同的效果。

模型表现的差异可以被用作异常检测的指标。模型表现的差异可以用特征空间的差异或是重构误差来度量。

系数重构假定每个正常样本都能被有限个基础函数精确重构,而异常数据的重构开销则更大,因此生成了稠密表示。稀疏表示的典型技巧包括基于L1正则的核PCA和低阶嵌入网络。

重构误差方法依赖于以下假设:在正常数据上训练得到的重构模型在输入为正常测试样本时会输出更高质量的结果。深度重构模型(包括自编码器AE、变分自编码器VAE、生成对抗网络GAN和U-Net等)都能够被用作这类方法的backbone。

除去这种结合AE/VAE和重构误差这种标准做法,其他方法使用了更加精细的策略,比如通过memorized normality重构,调整模型架构、部分/有条件的重构。

在半监督设定下的异常检测中,CoRA分别在ID样本和OOD样本上训练,得到两个自编码器。这两个自编码器的重构误差被用作异常检测的指标。

GAN中的判别器本质上是 通过计算重构误差 实现异常检测。更进一步,GAN的变种,比如去噪声的GAN和类别-条件GAN通过 增加重构难度 获得了更好的性能。有些方法 利用重构图片在下游任务中的表现来进一步放大异常样本的重构误差 。集成也能够优化模型性能。

异常检测、单类别的新类检测通常被形式化为无监督学习问题,将所有的ID样本看做一类。

【283】做了完全有监督的异常检测

半监督的异常检测中,模型训练时用到了无标签数据。

PU学习针对这个问题被提出

自监督方法3.3.3

单个类别分类直接学到一个决策边界

未完成

共性:ID样本的类别(训练类别)为多个。

差异:开集识别还需要精确地给ID样本分类,而新类检测只需得到区分ID/OOD的二分类器。

由于开集识别和多类别新类检测的训练类别为多个,大多数方法都是基于分类的。其余方法包括基于ID原型的以及基于重构的。极少数模型是基于密度的。

为了解决

开集识别和多类新类检测都关注ID样本包含多个类别的情形。分类问题中,一般采用独热编码来编码类别信息。然而,独热编码忽略了类别间的内在联系。举例来说,“狗”-“猫”,“狗”-“车”之间有相同的距离显然不合情理。有些工作考虑这一点,尝试利用新类的标签空间上的信息来解决这个新类检测问题。重分配大的语义空间,形成已知类别的层次化分类

基于标签组织重设,自上而下的分类策略和分组softmax训练被证实有效。应一组工作使用词向量嵌入来自动地构建标签空间。【169】中稀疏独热标签被几组产生自不同NLP模型的稠密词向量替代,形成了多个回归头来做鲁棒的训练。

测试时,标签(同所有不同头给出的嵌入向量距离最小的标签被作为预测结果输出,

如果这个最小距离超出阈值,这个样本被分类为“新”。近期工作进一步采用语言-图片预训练模型输出的特征来更好地检测新类,图片编码空间中也包含来自标签空间的丰富特征。)

基于距离的开集识别方法需要“原型”来实现class-conditional。维持ID样本的分类性能。

基于类别的聚类和原型(prototyping)操作在分类器提取到的视觉特征上进行。

OOD样本能够通过计算样本与聚类之间的距离而被识别。

有些方法还引入了对比学习来为已知类别学到更加紧密的聚类,从而拉远ID和OOD样本之间的距离。

CROSR【177】通过拼接分类器和用于距离计算的重构模型给出的可视化嵌入来在拓展的特征空间中得到强化的特征。除了使用分类器给出的特征,GMVAE【178】使用重构VAE来提取特征,将训练集的嵌入建模为一个多中心的混合高斯分布以便后续基于距离的操作。使用最近邻的分类器也适用于开集识别问题。通过存储训练样本,最近邻距离比值被用于在测试中识别未知样本。

基于重构的方法希望ID和OOD样本被重构时表现不同。这种差异能够在潜在特征空间或重构图片的像素空间中被捕捉到。

通过将已知类别的图片转化为稀疏表示,开集样本由于相对稠密能被识别出。用于稀疏编码的技巧包括:疏密指数(sparsity concentration index)【180】和核虚空间方法(kernel null space method)【181,182】。

通过固定在ID样本训练得到的多分类视觉编码器来维持在ID样本上的分类性能,C2AE训练一个以表情按向量为条件的解码器,使用极值理论估计重构后的图片来区分未知类别。后续的工作使用条件高斯分布,使得不同潜在特征逼近类内(class-wise)高斯模型,以达到在分类已知类别样本的同时能拒绝未知类别样本。其他方法生成反事实(counterfactual)图片来帮助模型更关注语义。对抗防御【186】也以这种思路去增强模型鲁棒性。

后处理检测的方法优点在于无需修改训练程序和目标就可以轻易应用。这一点对现实生产环境中的OOD检测方法很重要。早期的ODIN是一个使用temperature scaling和输入扰动来放大ID/OOD差别的后处理方法。该方法中,一个足够大的temperature有很强的平滑作用,能够将softmax值转换到logit空间(),从而有效区分ID和OOD样本。注意这种方式与信心校准不同,它采用了更温和的T

而校准更关注表达ID样本真实的正确概率

ODIN的评分最大化了ID和OOD样本之间的差异,可能从预测信心的角度看不再有意义。

基于这个见解,近期【189】提出使用能量分值来做OOD检测,该方法不需要超参数并且性能与ODIN相当甚至更好。能量函数将logit输出通过便捷的 logsumexp 运算符映射为标量。能量值相对低的测试样本被认为是ID的,反之为OOD。

【55】进一步提出了联合能量值(JointEnergy score)

为OOD检测定制的基于信心的方法能够通过设计信心估计分支和类别数据增强(结合leaving-out留一策略、对抗训练、更强的数据增强、不确定性建模、利用理想深度的特征)来实现。

特别地,为了增强对协变量偏移的敏感性,一些方法关注神经网络中间层的隐藏表示。泛化的ODIN通过使用DeConf-C作为训练目标来扩展ODIN,选择ID数据上的扰动尺度作为超参。

由于ODIN需要模型训练过程,它未被归类到后处理方法。

为了得到质量更优的隐藏层特征以便进行密度估计,分层的 Mahalanobis距离、 Gram Matrix等技巧被引入。

OOD检测的另一分支利用收集到的OOD样本集(离群样本集),在训练中帮助模型学到ID和OOD的差异。

总的来说,采用离群点暴露的OOD检测能达到明显更优的性能。然而,其性能受给定OOD样本和真实OOD样本间相关性强弱影响明显,如何将OOD由已经暴露的OOD泛化到更广泛的OOD还需进一步探索。

离群点暴露方法依赖于OOD训练数据可获取这一强假设,该条件在实际可能不成立。在OOD数据不可获取时,一些方法尝试去合成OOD样本从而让ID和OOD可区分。现有工作利用GAN来生成OOD训练样本并使模型输出均匀(uniform 正态???)的预测,从而在低密度区域生成边界样本,或者类似地,生成高置信度的OOD样本。

现有的OOD检测方法主要依赖输出或特征空间来给出OOD评分,而忽视了梯度空间的信息。ODIN【188】首次探索了使用梯度信息检测OOD。ODIN使用经过预处理的输入,其预处理为施加由输入梯度得来的细微扰动。ODIN扰动的目标在于增强模型对预测标签的信心从而增加任何给定输入的softmax值。最终,可以找到能使ID和OOD输入的softmax评分差异更大的扰动,从而使得它们更能被区分,使得OOD检测性能更好。ODIN仅隐式地通过扰动来利用梯度。GradNorm则使用梯度向量的范数,从softmax输出和正态概率分布的KL散度反向传播。

贝叶斯模型是一类统计模型,应用贝叶斯法则来推测模型中所有的不确定性。其中,最有代表性的是贝叶斯神经网络,该方法通过马尔可夫链蒙特卡洛方法、拉普拉斯方法、变分推断来构成模型的认知不确定性,从模型的后验分布中采样。它们最明显的缺陷在于预测不精确,计算代价高使得它们难以用于实际。近期工作尝试了几种less principled(理论性较弱??)的近似,包括 MC-dropout [224] 和深度融合 [225],299] 用于更快、更好地估计不确定性。这些方法在OOD不确定性估计上不太有竞争力。更进一步的探索需要在保留贝叶斯原理的优势的同时,采用自然梯度变分推理,从而能够采用实用且可负担的现代深度学习训练。狄利克雷先验网络Dirichlet Prior Network (DPN) 也在OOD检测中被运用,使用对模型不确定性、数据不确定性以及分布不确定性三个不同来源的不确定性进行不确定性建模,出现了一系列工作 [227], [228], [229]。

近期工作推进了更贴近实际应用的大规模OOD检测。研究的两个方向是:将OOD检测扩展到大的语义空间、利用大型的预训练模型。例如,【168】指出,在基于CIFAR benchmark数据得到的方法在语义空间更大的benchmark ImageNet上并不奏效,这强调了在大型真实设定下评估OOD检测的必要性。为解决上述挑战,MOS的关键理念是将大的语义空间解构为有相似概念的更小的群组,这简化了已知和未知数据之间的决策边界。强有力的预训练模型在各种任务、模态都达到了惊人的性能。同期的工作 [171], [230], [231] 证实预训练过的transformer在特定的困难的OOD任务上性能显着改善。

OOD检测领域中,基于密度的方法用一些概率模型显式地建模分布内数据,并将低密度区域的测试数据标记为OOD。即使OOD检测在分布内数据为多类别的情形下和异常检测不同,3.1.2节中的密度估计方法能够通过将分布内数据统一成一个整体而直接适用于OOD检测。当分布内含多个类别时,class-conditional高斯分布能够显式地建模分布内数据,因而分布外样本能够根据输出的预测概率而被识别【207】。基于流的方法 [92], [232], [233], [234]也可被用于概率建模。直接估计OOD概率似乎是一种自然的解决方法,也有一些方法 [235], [236], [237] 通过给OOD样本输出更高的概率预测值来实现OOD检测。【238】尝试使用likelihood ratio来解决这个问题。【239】发现,对输入复杂度,概率值存在明显偏差,提出了一种基于概率值比例的方法来削减输入复杂度的影响。近期的方法转而使用新的评分,例如likelihood regret【240】或是集成多个密度模型【236】。整体上,生成式模型的训练和优化难度几乎是不可接受的,它们的性能也往往落后于基于分类的方法(3.3)

基于距离的方法基本理念在于,测试中OOD样本应当相对远离分布内类别的中心(centroid)或原型(prototype)。【207】使用相对所有类别中心的最小Mahalanobis距离来检测。一个后续工作【241】将图片分为前景和背景,再计算这两个空间间的Mahalanobis距离比例。一些工作使用测试样本特征和类别特征间的余弦相似度来确定OOD样本【242】、【243】。被训练特征的的第一奇异向量一维的子空间

更进一步,其他工作利用了径向基函数核距离(distance with radial basis function kernel)、输入的嵌入向量到类别中心的欧拉距离。

OOD检测领域自出现以来发展迅速,其解决方案从基于分类的、基于密度的、再到基于距离的。在多类别设定下,典型的OOD检测是开集识别问题(第4节),在类别空间Y中精确分类分布内的测试样本,并且丢弃语义不被Y所支持的分布外样本。然而,OOD检测包含了更广泛的学习任务(比如,多标签分类)和解法(比如,密度估计和离群点暴露)。一些方法放宽了开集检测的限制条件,并且达到了更强的性能。

离群检测需要所有样本可见,其目标是检测出那些显着偏离大多数的分布的样本。离群检测方法通常是转导式的,而不是归纳式的。 [13], [14], [15], [16]综述主要回顾了数据挖掘领域的离群检测方法。以下主要回顾离群检测方法,尤其是为计算机视觉设计的使用深度神经网络的方法。即使深度学习方法极少能直接解决离群检测问题,数据清洗程序(从开集脏数据学习的先决条件)和开集半监督学习的方法也在解决离群检测问题。

离群检测模型的基本理念是将整个数据集建模为一个高斯分布,将偏离均值超过三杯标准差的样本标记为离群【300】【301】。其他带参数的概率方法利用Mahalanobis距离[266] 和高斯混合模型 [302]来建模数据密度。和“三倍标准偏离”规则类似,四分位距也可通过构建传统的无参数概率模型来检测离群样本【247】。为了鲁棒和简化,局部离群因子(local outlier factor)方法【248】借助给定点的邻居和它自身局部可达性的比值,去估计给定点的密度。RANSAC【252】迭代地估计数学模型的参数来拟合数据并且找到对估计贡献较少的样本作为离群点。

总体上,经典的异常检测的密度方法比如,核密度估计(3.1节),也可应用于离群检测。即便这些方法由于图片数据维度太高而应用困难,也可以通过降维方法【253,254】和基于最近邻的密度方法(3.1节)来缓解。

检测离群的一个简易方法是计数某特定半径内的邻居数量,或者度量第k近邻居的距离【303,304】。以下主要介绍基于聚类的方法和基于图的方法。

DBSCAN【255】依照基于距离的密度来积聚样本构成聚类。处在主要聚类之外的样本被识别为离群样本。后续工作通过考虑聚类标签的信心改良了聚类的方式【256】。

另一类方法利用数据点之间的关系,并构造邻域图[305], [306](或其变体[307]),利用图的属性和图挖掘技巧来找到异常的样本【257,258】,比如图聚类[259], [260]、图分割【308】、使用图神经网络的标签传播【261】。

Ⅱ 天眼ai ops平台单指标异常检测算法提供电能力有哪些

咨询记录 · 回答于2021-07-15

Ⅲ 半监督学习和无监督学习的区别

无监督与半监督学习的区别在于一个无教学值,一个有教学值。但是,个人认为他们的区别在于无监督学习一般是采用聚簇等算法来分类不同样本。而半监督学习一般是利用教学值与实际输出值产生的误差,进行误差反向传播修改权值来完成网络修正的。但是无监督学习没有反向传播修改权值操作。

无监督学习:训练样本的标记信息未知,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础,此类学习任务中研究最多、应用最广的是"聚类" ,其他无监督算法还有:密度估计、异常检测等。
半监督学习:训练集同时包含有标记样本数据和未标记样本数据,不需要人工干预,让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能。

想要了解更多有关半监督学习和无监督学习的信息,可以了解一下CDA数据分析师的课程。CDA证书已得到中国成人教育协会的认可和工信部认可,考过CDA认证考生可以得到经管之家CDA数据分析师中文证书,CDAINSTITUTE英文证书以及可额外申请工信部数据分析师证书。帮助学员掌握真正过硬的解决业务问题的数据挖掘能力。点击预约免费试听课。

Ⅳ 人工智能算法简介

人工智能的三大基石—算法、数据和计算能力,算法作为其中之一,是非常重要的,那么人工智能都会涉及哪些算法呢?不同算法适用于哪些场景呢?

一、按照模型训练方式不同可以分为监督学习(Supervised Learning),无监督学习(Unsupervised Learning)、半监督学习(Semi-supervised Learning)和强化学习(Reinforcement Learning)四大类。

常见的监督学习算法包含以下几类:
(1)人工神经网络(Artificial Neural Network)类:反向传播(Backpropagation)、波尔兹曼机(Boltzmann Machine)、卷积神经网络(Convolutional Neural Network)、Hopfield网络(hopfield Network)、多层感知器(Multilyer Perceptron)、径向基函数网络(Radial Basis Function Network,RBFN)、受限波尔兹曼机(Restricted Boltzmann Machine)、回归神经网络(Recurrent Neural Network,RNN)、自组织映射(Self-organizing Map,SOM)、尖峰神经网络(Spiking Neural Network)等。
(2)贝叶斯类(Bayesin):朴素贝叶斯(Naive Bayes)、高斯贝叶斯(Gaussian Naive Bayes)、多项朴素贝叶斯(Multinomial Naive Bayes)、平均-依赖性评估(Averaged One-Dependence Estimators,AODE)
贝叶斯信念网络(Bayesian Belief Network,BBN)、贝叶斯网络(Bayesian Network,BN)等。
(3)决策树(Decision Tree)类:分类和回归树(Classification and Regression Tree,CART)、迭代Dichotomiser3(Iterative Dichotomiser 3, ID3),C4.5算法(C4.5 Algorithm)、C5.0算法(C5.0 Algorithm)、卡方自动交互检测(Chi-squared Automatic Interaction Detection,CHAID)、决策残端(Decision Stump)、ID3算法(ID3 Algorithm)、随机森林(Random Forest)、SLIQ(Supervised Learning in Quest)等。
(4)线性分类器(Linear Classifier)类:Fisher的线性判别(Fisher’s Linear Discriminant)
线性回归(Linear Regression)、逻辑回归(Logistic Regression)、多项逻辑回归(Multionmial Logistic Regression)、朴素贝叶斯分类器(Naive Bayes Classifier)、感知(Perception)、支持向量机(Support Vector Machine)等。

常见的无监督学习类算法包括:
(1) 人工神经网络(Artificial Neural Network)类:生成对抗网络(Generative Adversarial Networks,GAN),前馈神经网络(Feedforward Neural Network)、逻辑学习机(Logic Learning Machine)、自组织映射(Self-organizing Map)等。
(2) 关联规则学习(Association Rule Learning)类:先验算法(Apriori Algorithm)、Eclat算法(Eclat Algorithm)、FP-Growth算法等。
(3)分层聚类算法(Hierarchical Clustering):单连锁聚类(Single-linkage Clustering),概念聚类(Conceptual Clustering)等。
(4)聚类分析(Cluster analysis):BIRCH算法、DBSCAN算法,期望最大化(Expectation-maximization,EM)、模糊聚类(Fuzzy Clustering)、K-means算法、K均值聚类(K-means Clustering)、K-medians聚类、均值漂移算法(Mean-shift)、OPTICS算法等。
(5)异常检测(Anomaly detection)类:K最邻近(K-nearest Neighbor,KNN)算法,局部异常因子算法(Local Outlier Factor,LOF)等。

常见的半监督学习类算法包含:生成模型(Generative Models)、低密度分离(Low-density Separation)、基于图形的方法(Graph-based Methods)、联合训练(Co-training)等。

常见的强化学习类算法包含:Q学习(Q-learning)、状态-行动-奖励-状态-行动(State-Action-Reward-State-Action,SARSA)、DQN(Deep Q Network)、策略梯度算法(Policy Gradients)、基于模型强化学习(Model Based RL)、时序差分学习(Temporal Different Learning)等。

常见的深度学习类算法包含:深度信念网络(Deep Belief Machines)、深度卷积神经网络(Deep Convolutional Neural Networks)、深度递归神经网络(Deep Recurrent Neural Network)、分层时间记忆(Hierarchical Temporal Memory,HTM)、深度波尔兹曼机(Deep Boltzmann Machine,DBM)、栈式自动编码器(Stacked Autoencoder)、生成对抗网络(Generative Adversarial Networks)等。

二、按照解决任务的不同来分类,粗略可以分为二分类算法(Two-class Classification)、多分类算法(Multi-class Classification)、回归算法(Regression)、聚类算法(Clustering)和异常检测(Anomaly Detection)五种。
1.二分类(Two-class Classification)
(1)二分类支持向量机(Two-class SVM):适用于数据特征较多、线性模型的场景。
(2)二分类平均感知器(Two-class Average Perceptron):适用于训练时间短、线性模型的场景。
(3)二分类逻辑回归(Two-class Logistic Regression):适用于训练时间短、线性模型的场景。
(4)二分类贝叶斯点机(Two-class Bayes Point Machine):适用于训练时间短、线性模型的场景。(5)二分类决策森林(Two-class Decision Forest):适用于训练时间短、精准的场景。
(6)二分类提升决策树(Two-class Boosted Decision Tree):适用于训练时间短、精准度高、内存占用量大的场景
(7)二分类决策丛林(Two-class Decision Jungle):适用于训练时间短、精确度高、内存占用量小的场景。
(8)二分类局部深度支持向量机(Two-class Locally Deep SVM):适用于数据特征较多的场景。
(9)二分类神经网络(Two-class Neural Network):适用于精准度高、训练时间较长的场景。

解决多分类问题通常适用三种解决方案:第一种,从数据集和适用方法入手,利用二分类器解决多分类问题;第二种,直接使用具备多分类能力的多分类器;第三种,将二分类器改进成为多分类器今儿解决多分类问题。
常用的算法:
(1)多分类逻辑回归(Multiclass Logistic Regression):适用训练时间短、线性模型的场景。
(2)多分类神经网络(Multiclass Neural Network):适用于精准度高、训练时间较长的场景。
(3)多分类决策森林(Multiclass Decision Forest):适用于精准度高,训练时间短的场景。
(4)多分类决策丛林(Multiclass Decision Jungle):适用于精准度高,内存占用较小的场景。
(5)“一对多”多分类(One-vs-all Multiclass):取决于二分类器效果。

回归
回归问题通常被用来预测具体的数值而非分类。除了返回的结果不同,其他方法与分类问题类似。我们将定量输出,或者连续变量预测称为回归;将定性输出,或者离散变量预测称为分类。长巾的算法有:
(1)排序回归(Ordinal Regression):适用于对数据进行分类排序的场景。
(2)泊松回归(Poission Regression):适用于预测事件次数的场景。
(3)快速森林分位数回归(Fast Forest Quantile Regression):适用于预测分布的场景。
(4)线性回归(Linear Regression):适用于训练时间短、线性模型的场景。
(5)贝叶斯线性回归(Bayesian Linear Regression):适用于线性模型,训练数据量较少的场景。
(6)神经网络回归(Neural Network Regression):适用于精准度高、训练时间较长的场景。
(7)决策森林回归(Decision Forest Regression):适用于精准度高、训练时间短的场景。
(8)提升决策树回归(Boosted Decision Tree Regression):适用于精确度高、训练时间短、内存占用较大的场景。

聚类
聚类的目标是发现数据的潜在规律和结构。聚类通常被用做描述和衡量不同数据源间的相似性,并把数据源分类到不同的簇中。
(1)层次聚类(Hierarchical Clustering):适用于训练时间短、大数据量的场景。
(2)K-means算法:适用于精准度高、训练时间短的场景。
(3)模糊聚类FCM算法(Fuzzy C-means,FCM):适用于精确度高、训练时间短的场景。
(4)SOM神经网络(Self-organizing Feature Map,SOM):适用于运行时间较长的场景。
异常检测
异常检测是指对数据中存在的不正常或非典型的分体进行检测和标志,有时也称为偏差检测。
异常检测看起来和监督学习问题非常相似,都是分类问题。都是对样本的标签进行预测和判断,但是实际上两者的区别非常大,因为异常检测中的正样本(异常点)非常小。常用的算法有:
(1)一分类支持向量机(One-class SVM):适用于数据特征较多的场景。
(2)基于PCA的异常检测(PCA-based Anomaly Detection):适用于训练时间短的场景。

常见的迁移学习类算法包含:归纳式迁移学习(Inctive Transfer Learning) 、直推式迁移学习(Transctive Transfer Learning)、无监督式迁移学习(Unsupervised Transfer Learning)、传递式迁移学习(Transitive Transfer Learning)等。

算法的适用场景:
需要考虑的因素有:
(1)数据量的大小、数据质量和数据本身的特点
(2)机器学习要解决的具体业务场景中问题的本质是什么?
(3)可以接受的计算时间是什么?
(4)算法精度要求有多高?
————————————————

原文链接: https://blog.csdn.net/nfzhlk/article/details/82725769

Ⅳ 异常检测方法 二

  离群点是一个数据对象,它显着不同于其他数据对象,好像它是被不同的机制产生的一样。有时也称非离群点为“正常数据”,离群点为“异常数据”。
  离群点不同于噪声数据。噪声是被观测变量的随机误差或方差。一般而言,噪声在数据分析(包括离群点分析)中不是令人感兴趣的。如在信用卡欺诈检测,顾客的购买行为可以用一个随机变量建模。一位顾客可能会产生某些看上去像“随机误差”或“方差”的噪声交易,如买一份较丰盛的午餐,或比通常多要了一杯咖啡。这种交易不应该视为离群点,否则信用卡公司将因验证太多的交易而付出沉重代价。因此,与许多其他数据分析和数据挖掘任务一样,应该在离群点检测前就删除噪声。
  离群点检测是有趣的,因为怀疑产生它们的机制不同于产生其他数据的机制。因此,在离群点检测时,重要的是搞清楚为什么检测到的离群点被某种其他机制产生。通常,在其余数据上做各种假设,并且证明检测到的离群点显着违反了这些假设。

离群点可以分成三类:全局离群点、情境(或条件)离群点和集体离群点。

在给定的数据集中,一个数据对象是全局离群点,如果它显着的偏离数据集中的其他对象。全局离群点是最简单的一类离群点,大部分的离群点检测方法都旨在找出全局离群点。

在给定的数据集中,一个数据对象是情境离群点,如果关于对象的特定情境,它显着的偏离其他对象。情境离群点又称为条件离群点,因为它们条件的依赖于选定的情境。一般地,在情境离群点检测中,所考虑数据对象的属性划分成两组:
情境属性 :数据对象的情境属性定义对象的情境。一般为静态属性变量,如信用卡欺诈检测中,不同年龄、不同地区的人消费情况是不同的,先按照静态属性将人群大致分类,再检测每一类的离群点,会得到更好的结果。
行为属性 :定义对象的特征,并用来评估对象关于它所处的情境是否为离群点。在上述例子中,行为属性可以是消费金额,消费频率等
情境离群点分析为用户提供了灵活性,因为用户可以在不同情境下考察离群点,这在许多应用中都是非常期望的。

给定一个数据集,数据对象的一个子集形成集体离群点,如果这些对象作为整体显着的偏离整个数据集。如一家供应链公司,每天处理数以千计的订单和出货。如果一个订单的出货延误,则可能不是离群点,因为统计表明延误时常发生。然而,如果有一天有100个订单延误,则必须注意。这100个订单整体来看,形成一个离群点,尽管如果单个考虑,它们每个或许都不是离群点。你可能需要更详细地整个考察这些订单,搞清楚出货问题。
与全局和情境离群点检测不同,在集体离群点检测中,不仅必须考虑个体对象的行为,而且还要考虑对象组群的行为。因此,为了检测集体离群点,需要关于对象之间联系的背景知识,如对象之间的距离或相似性测量方法。

离群点检测的统计学方法对数据的正常性做假定。假定数据集中的正常对象由一个随机过程(生成模型)产生。因此,正常对象出现在该随机模型的高概率区域中,而低概率区域中的对象是离群点。
离群点检测的统计学方法的一般思想是:学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为离群点。有许多不同方法来学习生成模型,一般而言,根据如何指定和如何学习模型,离群点检测的统计学方法可以划分成两个主要类型: 参数方法和非参数方法。
参数方法: 假定正常的数据对象被一个以为参数的参数分布产生。该参数分布的概率密度函数给出对象被该分布产生的概率。该值越小,越可能是离群点。
非参数方法: 并不假定先验统计模型,而是试图从输入数据确定模型。非参数方法的例子包括直方图和核密度估计。

  假定数据集由一个正态分布产生,然后,可以由输入数据学习正态分布的参数,并把低概率的点识别为离群点。
  在正态分布的假定下,区域包含99.7%的数据,包含95.4%的数据,包含68.3%的数据。视具体情况而定,将其区域外的数据视为离群点。
  这种直截了当的统计学离群点检测方法也可以用于可视化。例如盒图方法使用五数概况绘制一元输入数据:最小的非离群点值(Min)、第一个四分位数(Q1)、中位数(Q2)、第三个四分位数(Q3)和最大的非离群点值(Max)。
  四分位数极差(IQR)定义为Q3-Q1。比Q1小1.5倍的IQR或者比Q3大1.5倍的IQR的任何对象都视为离群点,因为Q1-1.5 IQR和Q3+1.5 IQR之间的区域包含了99.3%的对象。

(1)使用马哈拉诺比斯距离检测多元离群点。
对于一个多元数据集,设为均值向量。对于数据集中的对象,从到的马哈拉诺比斯(Mahalanobis)距离为其中S是协方差矩阵。是一元数据,可以对它进行离群点检测。如果被确定为离群点,则也被视为离群点。
(2)使用统计量的多元离群点检测。
在正态分布的假设下,统计量可以用来捕获多元离群点。对于对象,统计量是
其中,是在第维上的值,是所有对象在第维上的均值,而是维度。如果对象的统计量很大,则该对象是离群点。
(3)使用混合参数分布
在许多情况下,数据是由正态分布产生的假定很有效。然而,当实际数据很复杂时,这种假定过于简单。在这种情况下,假定数据是被混合参数分布产生的。
混合参数分布中用期望最大化(EM)算法来估计参数。具体情况比较复杂,可以参考韩家炜的《数据挖掘:概念与技术》一书。

在离群点检测的非参数方法中,“正常数据”的模型从输入数据学习,而不是假定一个先验。通常,非参数方法对数据做较少假定,因而在更多情况下都可以使用。

使用直方图检测离群点
包括如下两步:
步骤1: 构造直方图。尽管非参数方法并不假定任何先验统计模型,但是通常确实要求用户提供参数,以便由数据学习。如指定直方图的类型(等宽或等深的)和其他参数(如直方图中的箱数或每个箱的大小)。与参数方法不同,这些参数并不指定数据分布的类型(如高斯分布)。
步骤2: 检测离群点。为了确定一个对象是否是离群点,可以对照直方图检验它。在最简单的方法中,如果该对象落入直方图的一个箱中,则该对象被看做是正常的,否则被认为是离群点。

对于更复杂的方法,可以使用直方图赋予每个对象一个离群点得分。一般可以令对象的离群点得分为该对象落入的箱的容积的倒数。得分越高,表明是离群点的概率越大。

使用直方图作为离群点检测的非参数模型的一个缺点是,很难选择一个合适的箱尺寸。一方面,如箱尺寸太小,则由很多正常对象都会落入空的或稀疏箱,因而被误识别为离群点。这将导致很高的假正例率或低精度。相反,如果箱尺寸太大,则离群点对象可能渗入某些频繁的箱中,这将导致很高的假负例率或召回率。为了解决这些问题,使用核密度估计来估计数据的概率密度分布。具体参考韩家炜的《数据挖掘:概念与技术》。

  给定特征空间中的对象集,可以使用距离度量来量化对象间的相似性。基于邻近性的方法假定:离群点对象与它最近邻的邻近性显着偏离数据集中其他对象与它们近邻之间的邻近性。
  有两种类型的基于邻近性的离群点检测方法:基于距离的和基于密度的方法。基于距离的离群点检测方法考虑对象给定半径的邻域。一个对象被认为是离群点,如果它的邻域内没有足够多的其他点。基于密度的离群点检测方法考察对象和它近邻的密度。这里,一个对象被识别为离群点,如果它的密度相对于它的近邻低得多。

对于待分析的数据对象集D,用户可以指定一个距离阈值r来定义对象的合理邻域。对于每个对象o,可以考察o的r-邻域中的其他对象的个数。如果D中大多数对象都远离o,即都不在o的r-邻域中,则o可以被视为一个离群点。
令是距离阈值,是分数阈值。对象是一个离群点,如果
其中是距离度量。
如何计算-离群点?一是嵌套循环方法,时间复杂度为。当数据集很大时,该方法的开销很大。为了改进性能,可以用基于网格的方法来实现。具体见韩家炜《数据挖掘》一书。

基于距离的离群点检测从全局考虑数据集。由于以下两个原因,这种离群点被看成“全局离群点”:
l 例如,一个-离群点至少远离(用参数r定量)数据集中的对象。换言之,这种离群点远离数据的大多数。
l 为了检测基于距离的离群点,需要两个距离参数,它们用于每个离群点对象。
现实世界的许多数据集都呈现更复杂的结构,那里对象可能关于其局部邻域,而不是关于整个数据分布而被视为离群点。如下图,基于距离的离群点检测方法不能捕获像o1和o2这样的局部离群点。
那么,如何确切地定义如图所示的局部离群点?这里关键的思想是,需要把对象周围的密度与对象邻域周围的密度进行比较。基于密度的离群点检测方法的基本假定是:非离群点对象周围的密度与其邻域周围的密度类似,而离群点对象周围的密度显着不同于其邻域周围的密度。

基于聚类的方法通过考察对象与簇之间的关系检测离群点。直观地,离群点是一个对象,它属于小的偏远簇,或不属于任何簇。
这导致三种基于聚类的离群点检测的一般方法。考虑一个对象。
l 该对象属于某个簇吗?如果不,则它被识别为离群点。
l 该对象与最近的簇之间的距离很远吗?如果是,则它是离群点。
l 该对象是小簇或稀疏簇的一部分吗?如果是,则该簇中的所有对象都是离群点。

下面对每一种方法考察一个例子。

例1 把离群点检测为不属于任何簇的对象。如图1所示,使用基于密度的聚类方法,如DBSCAN,注意到黑色点都属于簇,白色点a不属于任何簇,因而被认为是离群点。

图1 对象a是离群点,因为 它不属于任何簇

图2 离群点(a,b,c)都(关于簇中心)远离距它们最近的簇

例2 使用到最近簇的距离的基于聚类的离群点检测。如图2所示,使用k-均值聚类方法,可以把图2中的数据点划分成3个簇,如图中不同符号所示,每个簇中心用“+”标记。对于每个对象o,都可以根据该对象与最近簇中心的距离,赋予该对象一个离群点得分。假设到o的最近中心为c,则o与c之间的距离为dist(o,c),c与指派到c的对象之间的平均距离为L,比率度量与平均值的差异程度。在图2中,点a,b和c都相对远离它们的对应中心,因而被怀疑是离群点。

例3 检测小簇中的离群点

迄今为止我们看到的每种方法都只检测个体离群点,因为它们一次把一个对象与数据集中的簇进行比较。然而,在大型数据中,一些离群点可能是类似的,并且形成一个小簇。例如,在入侵检测中,使用相同手段攻击系统的黑客可能形成一个簇。迄今为止所讨论的方法可能被这种离群点所欺骗。
为了解决这一问题,第三种基于聚类的离群点检测方法识别小簇或稀疏簇,并宣告这些簇中的对象也是离群点。这种方法的一个例子是FindCBLOF算法,其方法如下。

(1) 找出数据集中的簇,并把它们按大小降序排列。该算法假定大部分数据点都不是离群点,它使用一个参数来区别大簇和小簇。任何至少包含数据集中百分之(如,=90%)数据点的簇都被视为大簇,而其余的簇被看成小簇。
(2) 对于每个数据点赋予基于簇的局部离群点因子(CBLOF),对于属于大簇的点,它的CBLOF是簇的大小和该点与簇的相似性的乘积。对于属于小簇的点,它的CBLOF用小簇的大小和该点与最近的大簇的相似性的乘积计算。
CBLOF用统计学方法定义点和簇之间的相似性,代表点属于簇的概率。该值越大,点与簇越相似。CBLOF值可以检测远离任何簇的离群点。
基于聚类的离群点检测方法具有如下优点。首先,它们可以检测离群点,而不要求数据是有标号的,即它们以无监督方式检测。它们对许多类型的数据都有效。簇可以看成是数据的概括,一旦得到簇,基于聚类的方法只需要把对象与簇进行比较,以确定该对象是否是离群点,这一过程通常很快,因为与对象总数相比,簇的个数通常很小。
基于聚类的方法的缺点是:它的有效性高度依赖于所使用的聚类方法。这些方法对于离群点检测而言可能不是最优的。对于大型数据集,聚类方法通常开销很大,这可能成为一个瓶颈。

如果训练数据具有类标号,则离群点检测可以看做分类问题。基于分类的离群点检测方法的一般思想是,训练一个可以区分“正常”数据和离群点的分类模型。
基于分类的离群点检测方法通常使用一类模型(单分类模型SVDD),即构造一个仅描述正常类的分类器,不属于正常类的任何样本都被视为离群点。
基于分类的方法和基于聚类的方法可以联合使用,以半监督的方式检测离群点。
例通过半监督学习检测离群点

如上图所示,其中对象被标记为“正常”或“离群点”,或者没有标号。使用基于聚类的方法,发现一个大簇C和一个小簇C1。因为C中的某些对象携带了标号“正常”,因此可以把该簇的所有对象(包括没有标号的对象)都看做正常对象。在离群点检测中,使用这个簇的一类模型来识别离群点。类似的,因为簇C1中的某些对象携带标号“离群点”,因此宣布C1中的所有对象都是离群点。未落入C模型中的任何对象(如a)也被视为离群点。

与一般的离群点检测相比,识别情境离群点需要分析对应的情境信息。情境离群点检测方法可以根据情境是否可以清楚地识别而分成两类。

这类方法适用于情境可以被清楚识别的情况,其基本思想是把情境离群点检测问题转换成典型的离群点检测问题。具体地说,对于给定的数据对象,用两步来评估该对象是否是离群点。第一步,使用对象的情境属性识别对象的情境。第二步,使用一种传统的离群点检测方法,估计该对象的离群点得分。

在某些应用中,清楚地把数据划分成情境是不方便的或不可行的。这时,可以关于情境对正常行为建模。使用一个训练数据集,这种方法训练一个模型,关于情境属性的值,预测期望的行为属性值。然后,为了确定一个数据对象是否是情境离群点,可以在该对象的情境属性上使用该模型。如果该对象的行为属性值显着地偏离该模型的预测值,则该对象被宣布为情境离群点。
通过使用连接情境和行为的预测模型,这些方法避免直接识别具体情境。许多分类和预测技术都可以用来构建这种模型,如回归、马尔科夫模型和有穷状态自动机等等。

与情境离群点检测一样,集体离群点检测方法也可以划分为两类。第一类方法把问题归结为传统的离群点检测。其策略是识别结构单元,把每个结构单元(例如,子序列、时间序列片段、局部区域或子图)看做是一个数据对象,并提取特征。这样,集体离群点检测问题就转换成在使用提取的特征构造的“结构化对象”集上的离群点检测。一个结构单元代表原数据集中的一组对象,如果该结构单元显着地偏离提取的特征空间中的期望趋势,则它是一个集体离群点。
为集体离群点检测预先定义结构单元可能是困难的,或者是不可能的。因此,第二类方法直接对结构单元的期望行为建模。例如,为了在时间序列中检测离群点,一种方法是从序列中学习马尔科夫模型。因此,一个子序列被宣布为集体离群点,如果它显着地偏离该模型。

一般地,高维数据的离群点检测方法应该应对以下挑战:

l 离群点的解释:不仅应该能够识别检测离群点,而且能够提供离群点的解释。离群点的解释可能是,例如,揭示离群点的特定子空间,或者关于对象的“离群点性”的评估。这种解释可以帮助用户理解离群点的含义和意义。
l 数据的稀疏性:这些方法应该能处理高维空间的稀疏性。随着维度的增加,对象之间的距离严重地被噪声所左右。因此,高维空间中的数据通常是稀疏的。
l 数据子空间:它们应该以合适的方式对离群点建模,例如,自适应现实离群点的子空间和捕获数据的局部变化。在所有的子空间上使用固定的距离阈值来检测离群点捕食一种好想法,因为两个对象之间的距离随着维度增加而单调增加。
l 关于维度的可伸缩性:随着维度的增加,子空间的数量指数增加。包含所有可能的子空间的穷举组合探索不是可伸缩的选择。
高维数据的离群点检测方法可以划分成三种主要方法,包括扩充的传统离群点检测、发现子空间中的离群点和对高维离群点建模。

一种高维数据离群点检测方法是扩充的传统离群点检测方法。它使用传统的基于邻近性的离群点模型。然而,为了克服高维空间中邻近性度量恶化问题,它使用其他度量,或构造子空间并在其中检测离群点。

HilOut算法就是这种方法的一个例子。HitOut找出基于距离的离群点,但在离群点检测中使用距离的秩,而不是绝对距离。具体地说,对于每个对象o,HitOut找出o的k个最近邻,记作nn1(o),nn2(o)……nnk(o),其中k是一个依赖于应用的参数。参数o的权重定义为

所有对象按权重递减序定秩。权重最高的top-p个对象作为离群点输出,其中p是另一个用户指定的参数。

HilOut算法计算每个对象的k-最近邻开销很大,当维度很高并且数据很大时不能伸缩。
另一种方法则是通过维归约,把高维离群点检测问题归结为较低维上的离群点检测。其基本思想是,把高维空间归约到低维空间,那里标准的距离度量仍然能够区分离群点。如果能够找到这样的较低维空间,则可以用传统的离群点检测方法。
为了降低维度,可以对离群点检测使用或扩充一般的特征特征选择和提取方法。例如,可以用主成分分析(PCA)来提取一个低维空间。

高维数据中离群点检测的另一种方法是搜索各种子空间中的离群点。其唯一的优点是,如果发现一个对象是很低维度的子空间的离群点,则该子空间提供了重要信息,解释该对象为什么和在何种程度上是离群点。
如何检测子空间中的离群点,一种方法是基于网格的子空间离群点检测。具体做法见韩家炜《数据挖掘》。

另一种方法是试图直接为高维离群点建立一个新模型。这种方法通常避免邻近性度量,而是采用新的启发式方法来检测离群点。具体做法见韩家炜《数据挖掘》。

Ⅵ 半监督算法有哪些

这样的一个算法应该是有很多种算法的了,你可以通过一些数据或者是相关的资料去查询。

Ⅶ 半监督学习的基本假设

SSL的成立依赖于模型假设,当模型假设正确时,无类标签的样例能够帮助改进学习性能。SSL依赖的假设有以下三个:
1)平滑假设(Smoothness Assumption):位于稠密数据区域的两个距离很近的样例的类标签相似,也就是说,当两个样例被稠密数据区域中的边连接时,它们在很大的概率下有相同的类标签;相反地,当两个样例被稀疏数据区域分开时,它们的类标签趋于不同。
2)聚类假设(Cluster Assumption):当两个样例位于同一聚类簇时,它们在很大的概率下有相同的类标签。这个假设的等价定义为低密度分离假设(Low Sensity Separation Assumption),即分类决策边界应该穿过稀疏数据区域,而避免将稠密数据区域的样例分到决策边界两侧。
聚类假设是指样本数据间的距离相互比较近时,则他们拥有相同的类别。根据该假设,分类边界就必须尽可能地通过数据较为稀疏的地方,以能够避免把密集的样本数据点分到分类边界的两侧。在这一假设的前提下,学习算法就可以利用大量未标记的样本数据来分析样本空间中样本数据分布情况,从而指导学习算法对分类边界进行调整,使其尽量通过样本数据布局比较稀疏的区域。例如,Joachims提出的转导支持向量机算法,在训练过程中,算法不断修改分类超平面并交换超平面两侧某些未标记的样本数据的标记,使得分类边界在所有训练数据上最大化间隔,从而能够获得一个通过数据相对稀疏的区域,又尽可能正确划分所有有标记的样本数据的分类超平面。
3)流形假设(Manifold Assumption):将高维数据嵌入到低维流形中,当两个样例位于低维流形中的一个小局部邻域内时,它们具有相似的类标签。
流形假设的主要思想是同一个局部邻域内的样本数据具有相似的性质,因此其标记也应该是相似。这一假设体现了决策函数的局部平滑性。和聚类假设的主要不同是,聚类假设主要关注的是整体特性,流形假设主要考虑的是模型的局部特性。在该假设下,未标记的样本数据就能够让数据空间变得更加密集,从而有利于更加标准地分析局部区域的特征,也使得决策函数能够比较完满地进行数据拟合。流形假设有时候也可以直接应用于半监督学习算法中。例如,Zhu 等人利用高斯随机场和谐波函数进行半监督学习,首先利用训练样本数据建立一个图,图中每个结点就是代表一个样本,然后根据流形假设定义的决策函数的求得最优值,获得未标记样本数据的最优标记;Zhou 等人利用样本数据间的相似性建立图,然后让样本数据的标记信息不断通过图中的边的邻近样本传播,直到图模型达到全局稳定状态为止。
从本质上说,这三类假设是一致的,只是相互关注的重点不同。其中流行假设更具有普遍性。

Ⅷ “日记”ElasticSearch7.x新功能介绍

说明:ElasticSearch7.X很多新功能主要基于lucene8.X新特性,故对于lucene8.X新特性不赘述。

在6.1中已加入这个功能,但是默认是关闭的,在7.0中开始默认开启。若有两个节点,且其中一个节点上有一个索引的主分片,另一个节点上有同一个索引的副本分片,在6.X中关闭此特性时,不管每个节点状态如何,是否在做耗时操作,如GC等,每次请求过来时,都会通过轮询的方式访问两个分片其中之一;而在7.X开启后,ES会统计每次请求耗时,根据每个节点访问响应的耗时长度,对每个节点的访问频次进行自动调整。

Elasticsearch 7.0 中若分片在30秒内无请求访问,则分片进入"search idle"状态。一旦进入此状态且分片所在索引没有明确设置refresh间隔时间的(默认每秒执行),则定时的refresh停止直到下一个访问请求达到才进行下一次的refresh,在此期间相比原来,将明显增强索引数据的吞吐。如果明确设置了refresh间隔时间,则仍按配置中的间隔时间进行调度执行。

Elasticsearch5.3中发布了跨集群搜索(cross-cluster search)功能,供用户跨多个集群进行查询,如本地协调节点去访问多个不同机房的ES集群查询日志信息等。Elasticsearch 7.0中引入ccs_minimize_roundtrips执行模式可以减少一次请求来回的网络开销。

详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/moles-cross-cluster-search.html

Elasticsearch 6.x 及之前的版本使用名为 Zen Discovery 实现,存在一些缺点,如选主时间较慢(秒级)、部分配置存在易于错配等情况。

Elasticsearch 7重新设计了集群协调子系统,移除了minimum master nodes设置,由集群自己选择可以形成法定数量的节点。并且新的子系统可以在很短时间内(亚秒级)完成选主。 

Elasticsearch 7.0新增加了一个熔断器,更好的追踪内存使用量,准确地根据内存用量去拒绝客户端请求,避免节点异常;另外聚合操作返回的bucket限制为10000以内。

在 Elasticsearch 6.5中作为beta功能引入,6.7、7.X中GA,可以用在跨机房、跨地区情况下的集群数据同步。在这个版本中加入了一些监控的特性,解决了一些例如主从同步异常的问题。

详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.6/ccr-getting-started.html

索引生命周期管理(Index Lifecycle Management)作为一个beta特性在6.6发布,在7.0GA。索引生命周期管理现在可以管理frozen indices,他作为其cold阶段的一部分;也可以对其管理的索引使用CCR功能。

frozen indices详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.0/frozen-indices.html

ILM详情: https://www.cnblogs.com/sanzxcvbnm/p/12083735.html ; https://www.jianshu.com/p/94e37a5b0878?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

Elasticsearch SQL可以让用户能够使用SQL进行交互查询Elasticsearch中索引数据。该功能在Elasticsearch 6.3中作为alpha版本引入,目前在Elasticsearch 6.7和7.0中也能够生产使用。 通过 Elasticsearch REST endpoints 、 Elasticsearch SQL command line interface 、  JDBC driver 、 ODBC driver 可以使用es sql。

从Elasticsearch 7.0.0开始,High-level REST Client(HLRC)API的所有功能已经宣布完成。原来TransportClient使用者可以计划将TransportClient迁移到HLRC。

Elasticsearch 7.0.0引入了JDK8原生时间库,可以处理纳秒精度时间戳。

JDK11可以支持TLS1.3,所以如果使用JDK11,那在es中可以选择使用TLS1.3.另外TLS1.0被移除,使用老版本jdk的可以选择使用TLS1.1或者1.2。

内置了OpenJDK,使得上手起来更加快速。

在日志目录下,我们会看到有.json拓展的日志。这便于我们使用类似jq的工具去查看日志,同时也在日志中加入了许多额外结构化信息,例如node.id, cluster.uuid, type。

这是lucene8中的重要版本功能更新。在之前的版本中,查询会计算所有命中的文档,但是用户经常查询 'a' , 'the' 等词汇,这种词汇不会增加多少文档得分,但迫使查询过程为大量的文档进行打分。

因此,如果检索结果只需要返回 TOP-K 的结果,而非范围准确的命中数量,可以对此进行优化,Lucene 8 中引入了 WAND 算法来实现此特性。当检索结果小于指定的结果总数时,该优化不会生效。

在停止计算命中文档总数之后,查询 QPS 得到大幅提升,以下结果来自  lucene 官方基准测试

Bool AND 查询,提升 2.3 倍左右。

Bool OR 查询,提升 2.5 倍左右。

Term 查询,提升 40 倍左右。

在 Elasticsearch 7中,要在查询中返回 TOP-K 的结果,通过 track total hits 参数来指定,默认值为10000,根据自己的需要设置返回前 K 个命中结果,或者设置为 true,返回全部命中结果数量。

计算 TOP-K 的过程中需要评估文档的最大得分,这需要在索引过程中写入一些额外的信息。Lucene 将词典划分一个个的 block,并构建了一个跳跃表,在查询的时候跳过不匹配的文档,现在,索引过程中会为每个块中最高影响(impacts)的摘要添加到该跳表中,可以计算出该块可能产生的最大得分,如果该得分不具有竞争力,则可以跳过它。更多信息可以阅读 此处 。

Elasticsearch 7.0 中新增了两个数据类型: rank_feature  and  rank_features 。他们只作用于数值型数据,且底层实现上可以利用上面top hits的特性。故可以看作是function score简化出的一个功能,利用他们可以对排序打分进行干预且查询效率更快。更多可以看以下详情: https://www.elastic.co/cn/blog/easier-relevance-tuning-elasticsearch-7-0

别名function score2。拓展性更佳,可以支持多种脚本语言及java插件,function score原有功能也都可以支持。详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.0/query-dsl-script-score-query.html

在ElasticSearch7.2+后关闭状态的索引也可以进行分片复制,以便于后面集群异常时可以成为主分片,或者进行数据恢复。

可以作于搜索联想功能,用户输入部分查询词后,返回联想词列表。与Completion suggester和Context Suggester功能大部分重复,但两者有不同的底层实现,search_as_you_type可以利用到最新top hits的特性,而suggester底层使用FST数据结构。之所以重新开发了一个数据字段,原因归结为:新数据字段更有利于占用更少的内存开销;新数据字段功能拓展性更加,可以用在普通的query语句中,结合其他filter等语法。

详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.6/search-as-you-type.html ; https://github.com/elastic/elasticsearch/issues/33160 ; https://stackoverflow.com/questions/42127894/whats-the-difference-between-search-as-you-type-and-context-suggester

只能作用于date, date_nanos, 及 geo_point数据类型的字段。可以放置于query语法中,在查询中过滤不符合范围的时间或者距离,查询语法中需要设置origin(即初始的时间节点或者经纬度)。

一个只能在选举时投票而不能成为主节点的角色被引入了,这有助于高可用,且相对于主节点,这些节点只需要消耗非常少量的CPU和内存开销。

新的  Analyzer reload API  允许去修改运行时的分析器及其相应资源。例如,在之前版本中,重载同义词需要先关闭索引,再打开索引。使用这个api就不需要再关闭索引了。

通过这个字段可以直接索引json数据。仅为整个JSON对象创建一个字段映射,这可以帮助防止由于大量不同的字段映射而导致 映射爆炸 。

详情: https://blog.csdn.net/UbuntuTouch/article/details/103713730

有两种字段类型: sparse_vector  和  dense_vector  ,用于计算和查询向量之间的余弦相似度和点积。

如题。

仅限于设置为只读的别名索引可以同步,write索引不可以同步。

如题。

在ElasticSearch6.X中,使用 Terms Aggregation会占用更多的内存,此版本进行了优化,降低内存消耗压力。

使用无监督的异常检测算法分析索引中每条doc的数值型字段,并在每条doc中记录一个异常值,以比较彼此之间的异常差异。提供 evaluate data frame analytics API ,以获取在算法使用期间的一些指标数据。

它会聚合出在特定字段中很少出现的字段值。计划使用它去替换terms aggregation中的"order" : { "_count" : "asc" }配置项。

提供新接口 pinned query  ,可以指定排在返回结果前列的docs,适用于需要使用引导数据的场景。

支持AdoptOpenJDK 13,并将其打包在ES包中。

如果查询是以_search结尾,那么当对端连接被关闭后,查询也会被中止。

通过这个字段可以在es插入一个几何范围,即每条doc都是通过一串坐标点定义的几何范围,而通过shape query结合relationship配置,可以对每条doc计算是否是包含、相交等等关系,并将符合条件的取出。

详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-shape-query.html ; https://blog.csdn.net/wjzt7322/article/details/103385560 ;

增加了一个新的圆形预处理,把圆形定义的几何图形转化为一个近似的规则几何,便于查询、聚合、索引等操作。图形如下:

详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/ingest-circle-processor.html

现在直方图和日期直方图将支持范围字段,例如用其去计算特定时间段内的电话数等。

如题。

Elasticsearch 5.x版本中引入了Ingest Node的概念(预处理节点),它使得Es在事实上具备了Logstash的部分功能,即对索引数据的预处理。

在7.5增加了一个新的ingest processor,它可以使得新数据索引时从原有其他索引中抽取字段数据丰富正在插入的doc。

详情: https://www.felayman.com/articles/2017/11/24/1511527532643.html ; https://blog.csdn.net/UbuntuTouch/article/details/103400061

新的快照生命周期管理功能,允许用户设置定时策略去删除老的索引。

新增暂停和恢复接口,使用户可以临时暂停自动复制的模式

分类分析是一个有监督的机器学习算法,可以预测离散的分类值。在Es中可以进行二分类的算法执行,即将数据分为两个可能的类别。

详情: https://www.elastic.co/guide/en/machine-learning/7.x/dfa-classification.html

暂略( https://www.elastic.co/guide/en/elasticsearch/reference/7.x/histogram.html )

新版本lucene对这方面进行了重构,重构后也能在排序时过滤在打分上没有竞争力的文档(类似top hits),在查询效率上提升至少10倍。

ElasticSearch 7.2.0中引入,现在GA。 Transforms  and  Transform APIs 提供给我们一个能力,即指定索引中不同字段进行聚合,并将聚合结果索引入一个新建索引中(聚合结果中可以产生出其他新的字段,如同类型字段值的出现数量等),在这个过程中我们可以通过管理接口进行管理,每次聚合结果索引入新索引后,原索引中都会有一个checkpoint,故后面可以继续做批量聚合。

详情: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/transforms.html

参考资料:

https://gitbook.cn/gitchat/column/5ce4ff9a308dd66813d92799/topic/5d47cfa4cb702a087ef8b77b

https://blog.csdn.net/UbuntuTouch/article/list/1

https://www.elastic.co/guide/en/elasticsearch/reference/7.x/release-highlights-7.3.0.html

Ⅸ 异常点检测方法

一、基本概念

异常对象被称作离群点。异常检测也称偏差检测和例外挖掘。

常见的异常成因:数据来源于不同的类(异常对象来自于一个与大多数数据对象源(类)不同的源(类)的思想),自然变异,以及数据测量或收集误差。

异常检测的方法:

(1)基于模型的技术:首先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇的集合,则异常是不显着属于任何簇的对象;在使用回归模型时,异常是相对远离预测值的对象。

(2)基于邻近度的技术:通常可以在对象之间定义邻近性度量,异常对象是那些远离其他对象的对象。

(3)基于密度的技术:仅当一个点的局部密度显着低于它的大部分近邻时才将其分类为离群点。

二、异常点检测的方法

1、统计方法检测离群点

统计学方法是基于模型的方法,即为数据创建一个模型,并且根据对象拟合模型的情况来评估它们。大部分用于离群点检测的统计学方法都是构建一个概率分布模型,并考虑对象有多大可能符合该模型。离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。异常检测的混合模型方法:对于异常检测,数据用两个分布的混合模型建模,一个分布为普通数据,而另一个为离群点。

聚类和异常检测目标都是估计分布的参数,以最大化数据的总似然(概率)。聚类时,使用EM算法估计每个概率分布的参数。然而,这里提供的异常检测技术使用一种更简单的方法。初始时将所有对象放入普通对象集,而异常对象集为空。然后,用一个迭代过程将对象从普通集转移到异常集,只要该转移能提高数据的总似然(其实等价于把在正常对象的分布下具有低概率的对象分类为离群点)。(假设异常对象属于均匀分布)。异常对象由这样一些对象组成,这些对象在均匀分布下比在正常分布下具有显着较高的概率。

优缺点:(1)有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;(2)对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。

2、基于邻近度的离群点检测。

一个对象是异常的,如果它远离大部分点。这种方法比统计学方法更一般、更容易使用,因为确定数据集的有意义的邻近性度量比确定它的统计分布更容易。一个对象的离群点得分由到它的k-最近邻的距离给定。离群点得分对k的取值高度敏感。如果k太小(例如1),则少量的邻近离群点可能导致较低的离群点得分;如果k太大,则点数少于k的簇中所有的对象可能都成了离群点。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

优缺点:(1)简单;(2)缺点:基于邻近度的方法需要O(m^2)时间,大数据集不适用;(3)该方法对参数的选择也是敏感的;(4)不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

3、基于密度的离群点检测。

从基于密度的观点来说,离群点是在低密度区域中的对象。一个对象的离群点得分是该对象周围密度的逆。基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数。如果该距离小,则密度高,反之亦然。另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离d内对象的个数。需要小心的选择d,如果d太小,则许多正常点可能具有低密度,从而具有高离群点得分。如果d太大,则许多离群点可能具有与正常点类似的密度(和离群点得分)。使用任何密度定义检测离群点具有与基于邻近度的离群点方案类似的特点和局限性。特殊地,当数据包含不同密度的区域时,它们不能正确的识别离群点。

为了正确的识别这种数据集中的离群点,我们需要与对象邻域相关的密度概念,也就是定义相对密度。常见的有两种方法:(1)使用基于SNN密度的聚类算法使用的方法;(2)用点x的密度与它的最近邻y的平均密度之比作为相对密度。

使用相对密度的离群点检测(局部离群点要素LOF技术):首先,对于指定的近邻个数(k),基于对象的最近邻计算对象的密度density(x,k) ,由此计算每个对象的离群点得分;然后,计算点的邻近平均密度,并使用它们计算点的平均相对密度。这个量指示x是否在比它的近邻更稠密或更稀疏的邻域内,并取作x的离群点得分(这个是建立在上面的离群点得分基础上的)。

优缺点:

(1)给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;

(2)与基于距离的方法一样,这些方法必然具有O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达到O(mlogm);

(3)参数选择是困难的。虽然LOF算法通过观察不同的k值,然后取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。

4、基于聚类的技术

一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇。这个方法可以和其他任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值。这种方案对簇个数的选择高度敏感。使用这个方案很难将离群点得分附加到对象上。一种更系统的方法,首先聚类所有对象,然后评估对象属于簇的程度(离群点得分)(基于原型的聚类可用离中心点的距离来评估,对具有目标函数的聚类技术该得分反映删除对象后目标函数的改进(这个可能是计算密集的))。基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇。离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。还有一种更复杂的方法:取一组不能很好的拟合任何簇的特殊对象,这组对象代表潜在的离群点。随着聚类过程的进展,簇在变化。不再强属于任何簇的对象被添加到潜在的离群点集合;而当前在该集合中的对象被测试,如果它现在强属于一个簇,就可以将它从潜在的离群点集合中移除。聚类过程结束时还留在该集合中的点被分类为离群点(这种方法也不能保证产生最优解,甚至不比前面的简单算法好,在使用相对距离计算离群点得分时,这个问题特别严重)。

对象是否被认为是离群点可能依赖于簇的个数(如k很大时的噪声簇)。该问题也没有简单的答案。一种策略是对于不同的簇个数重复该分析。另一种方法是找出大量小簇,其想法是(1)较小的簇倾向于更加凝聚,(2)如果存在大量小簇时一个对象是离群点,则它多半是一个真正的离群点。不利的一面是一组离群点可能形成小簇而逃避检测。

优缺点:

(1)基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的;

(2)簇的定义通常是离群点的补,因此可能同时发现簇和离群点;

(3) 产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性;

(4)聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。

新颖性和离群值检测

离群值检测:训练数据包含离群值,即与其他观测值相距甚远的观测值。离群检测估计器会尝试拟合训练数据最集中的区域,忽略异常观察。

新颖性检测:训练数据不受异常值的污染,有兴趣检测新观察值是否是异常值。该情况下离群值也称为新颖性。

离群值检测和新颖性检测均用于异常检测,离群值检测称为无监督异常检测,新颖性检测称为半监督异常检测。离群值检测的情况下,离群值/异常不能形成密集的群集,可假设离群值/异常位于低密度区域;新颖性检测的情况下,只要新颖性/异常位于训练数据的低密度区域,就可以形成密集的簇。

通过对玩具数据集进行异常检测比较异常检测算法

数据集中包含一种或两种模式(高密度区域),以说明算法处理多模式数据的能力。

对于每个数据集,将生成15%的样本作为随机均匀噪声。该比例是OneClassSVM的nu参数和其他异常值检测算法的污染参数提供的值。离群值之间的决策边界以黑色显示,但是LOF除外,因为当采用LOF用于离群值检测时,没有适用于新数据的预测方法。

OneClassSVM对异常值敏感,对异常值检测执行的不好。当训练集不受异常值污染时,此估计器最适合新颖性检测。即不适用在高维中进行离群值检测或者不对基础数据的分布进行任何假设,OneClassSVM在这些情况下可能会根据其超参数给出有用的结果。

covariance EllipticEnvelope(协方差椭圆密度)假定数据是高斯分布并学习一个椭圆。在数据不是单峰时,会退化。此估计器对异常值具有鲁棒性。

IsolationFrorest和LocalOutlierFactor针对多模式数据集效果显着。LOF针对第三种数据集,明显优于其它三种估计器,该数据集中两种模式的密度不同。LOF的局部方面,即它仅将一个样本的异常评分与其邻居评分作比较,从何体现了该方法的优势。

针对最后一个均匀分布在超立方体中的数据集,很难说一个样本比另一个样本异常得多。除了OneClassSVM有些过拟合外,所有估计器都针对该情况提出不错的解决方案。针对这种情况,应该仔细观察样本的异常分数,性能好的估算器应该为所有样本分配相似的分数。

使用局部离群因子(LOF)进行离群值检测

LOF算法是一种无监督的异常检测方法,可计算给定数据点相对于其邻居的局部密度偏差。其中密度远低于其邻居的样本为异常值。

LOF算法的优势在于同时考虑了数据集的局部和全局属性:即使在异常样本具有不同底层密度的数据集中,仍能保持良好性能。问题不在于样本有多孤立,而在于样本相对于周围邻域有多孤立。

通常考虑的邻居数量(1)大于群集必须包含的最小样本数量,以便其他样本可以是相对于该群集的局部离散值;(2)小于可能是局部异常值的最大进距采样数,此类消息通常不可用,采用n_neighbors=20。

具有局部异常值的新颖性检验

LOF是一种无监督的异常检测方法,可计算给定数据点相对于其邻居的局部密度偏差,密度远低于其邻居的样本为异常值。LOF用于新颖性检验时,切勿在训练集上使用预测、决定函数、实例得分,会导致结果错误。只能对新的看不见的数据(不在训练集中)使用这些方法。

通常考虑邻居数量(1)大于群集必须包含的最小样本数,以便其他样本可以是相对于该群集的局部离群值;(2)小于可能是局部异常值的最大进距采样数,此类消息通常不可用,采用n_neighbors=20。

隔离林

在高维数据集中执行异常检测的一种有效方法是使用随机森林,分离的观察通过随机选择一个函数,随机选择所选择的特征的最大值和最小值之间的分割值。递归分区可用树结构表示,隔离样本所需的拆分数量等于从根节点到终止结点的路径长度。随机树的森林中的平均路径长度是对正态性和决策函数的度量。随机分区产生的异常路径明显较短,因此如果随机树森林为特定样本生成的较短路径,则该树代表的值很可能是异常的。

OneClassSVM

无监督的离群值检测,支持高维分布,基于libsvm

不假定数据分布的任何参数形式,可以更好的对数据的复杂形状进行建模,能够捕获真实的数据结构,难点在于调整核函数宽度参数,以便在数据散布矩阵的形状和数据过度拟合的风险间取得折中。

协方差椭圆密度

用于检测高斯分布数据集中的异常值的对象

经验协方差估计(作为非稳健估计)受到观测值异质结构的高度影响;鲁棒协方差估计能够集中于数据分布的主要模式,但是它坚持假设数据是高斯分布,产生了对数据结构的某些估计,在一定程度上是准确的。

HBOS单维效果极佳,但是标准差方法的mask 掩码效应严重。例如 数据通常在100以内,但是有两个异常点,500,1000000。这个算法就不能检出500这个异常点。

对比而言,孤立森林理论上更适合大数据的异常检测,且无掩码效应。孤立森林确定异常时训练只用样本数据。每颗树样本数量默认只有256个,默认只用100颗树。所以理论上25600个样本就能确定海量数据中的异常点了。

Sklearn的 isolation forest 例子默认是读入全量数据再采样。如果配上warm up 选项就能分批放入采样。

异常检测的深度学习研究综述

阅读全文

与半监督if异常检测算法相关的资料

热点内容
群晖nfc共享文件夹 浏览:916
实时影像叠加ar编程培训 浏览:652
程序员吃青春饭规定 浏览:306
南洋建国类的小说 浏览:347
萱萱电视剧影视 浏览:218
泰国腐片免费看 浏览:144
美版狗电影 浏览:865
德军女兵电影大全集 浏览:635
android经典教材 浏览:863
解读程序源码 浏览:949
电影父女大不同免费看 浏览:31
法国毒网剧情介绍 浏览:527
法国love在线观看 浏览:797
建行App哪里有扫一扫 浏览:574
smt程序员招聘 浏览:737
招行app股票在哪里 浏览:250
床上事小说 浏览:382
韩国电影两个女的同性恋 浏览:269
温碧霸任达华惊变 浏览:804
君美电影 浏览:292