導航:首頁 > 源碼編譯 > 半監督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異常檢測演算法相關的資料

熱點內容
程序員用得到數字區嗎 瀏覽:170
python求商 瀏覽:473
ipad能用c語言編譯器嗎 瀏覽:557
軟泥解壓球最新版 瀏覽:994
4萬程序員辭職創業 瀏覽:755
thinkingphp 瀏覽:593
安卓相冊移動文件夾 瀏覽:2
耳朵清潔解壓聲控99的人都睡得著 瀏覽:201
叉車出租網站源碼 瀏覽:870
共享單車的app是什麼 瀏覽:404
不帶gui的伺服器什麼意思 瀏覽:369
金剛經及PDF 瀏覽:98
php中冒號 瀏覽:354
php5432 瀏覽:348
命令在哪使用 瀏覽:168
php獲取網頁元素 瀏覽:704
為什麼需要硬體驅動編譯 瀏覽:881
pm編程怎樣看導柱孔對不對稱 瀏覽:134
農業大學選課找不到伺服器怎麼辦 瀏覽:645
路由配置網關命令 瀏覽:931