1. 程式人生 > >對異常檢測技術的簡要概述(乾貨)

對異常檢測技術的簡要概述(乾貨)

今天和大家簡單聊聊異常檢測技術的簡要概述。

這裡寫圖片描述

什麼是離群值,如何處理它們?

“Observation which deviates so much from other observations as to arouse suspicion it was generated by a different mechanism” — Hawkins(1980)

這裡寫圖片描述

  異常值是偏離資料其他觀測值的極端值,它們可能表示測量的可變性,實驗誤差或新事物。 換句話說,異常值是偏離整體樣本的觀察值。

離群值的型別

  異常值可以是兩種:單變數多變數。 當檢視單個特徵空間中的值分佈時,可以找到單變數異常值。 多變數異常值可以在n維空間(n個特徵)中找到。 觀察n維空間中的分佈對於人類大腦來說可能非常困難,這就是為什麼我們需要訓練一個模型。
  不同的環境,異常值也可以有不同的風格:點異常值,背景異常值或集體離群值。 點異常值是與分佈的其餘部分相距甚遠的單個數據點。 語境異常值可以是資料中的噪聲,例如在進行語音識別時實現文字分析或背景噪聲訊號時的標點符號。 集體異常值可以是諸如可能指示發現新現象的訊號的資料的新穎性子集(如圖B所示)。

這裡寫圖片描述

資料集中出現異常值的最常見原因:

  • 資料輸入誤差(人為誤差)

  • 測量誤差(儀器錯誤)

  • 實驗誤差(資料提取或實驗計劃/執行誤差)

  • 故意的(測試檢測方法的假異常值)

  • 資料處理錯誤(資料處理或資料設定意外突變)

  • 抽樣錯誤(提取或混合來自錯誤或不同來源的資料)

  • 自然(不是錯誤,資料中的新奇)

  在製作,收集,處理和分析資料的過程中,異常值可以來自許多來源,並在許多方面隱藏起來, 那些不是錯誤的產物被稱為新奇。

  檢測異常值對於幾乎任何定量學科都是至關重要的(即:物理,經濟,金融,機器學習,網路安全)。 在機器學習和任何定量學科中,資料質量與預測或分類的模型一樣重要。

當試圖在資料集中檢測離群值時,記住上下文並嘗試回答這個問題非常重要:“為什麼我要檢測離群值?你的發現的意義將由上下文決定。

  此外,當開始一個離群的檢測任務時,你必須回答關於你的資料集的兩個重要問題:此外,當開始一個離群的檢測任務時,你必須回答關於你的資料集的兩個重要問題:

  • 我要考慮哪些特徵來檢測離群值?(單變數或多變數)我要考慮哪些特徵來檢測離群值?(單變數或多變數)
  • 我可以為我選擇的特性假設一個值的分佈嗎?(引數/非引數)

一些最流行的離群檢測方法是:

  • z分數(Z-Score )或極值分析(引數)

  • 概率和統計建模(引數)

  • 線性迴歸模型(PCA,LMS)

  • 基於鄰近模型(非引數)

  • 資訊理論模型

  • 高維離群檢測方法(高維稀疏資料)

Z-Score

  一個觀測的z分數或標準分數是一個度量,表示一個數據點偏離樣本均值的多少個標準差,假設一個高斯分佈。這使得z分數是一個引數化的方法。非常頻繁的資料點並不是由高斯分佈描述的,這個問題可以通過將轉換應用於資料,比如:縮放它來解決。

  一些Python庫,如Scipy和scikit學習,可以很容易地使用函式和類利用Pandas和Numpy輕鬆實現。在對資料集的選定特徵空間進行適當的轉換之後,任何資料點的z分數都可以用以下表達式計算:

這裡寫圖片描述

當計算資料的每個樣本的z分數時,必須指定一個閾值。一些好的“thumb-rule”閾值可以是:2.5、3、3.5或更高的標準差。
這裡寫圖片描述

通過“標記”或刪除超出給定閾值的資料點,我們將資料分類為異常值,和非異常值。
這裡寫圖片描述

z - score是一種簡單但強大的方法,如果你處理的是一個低維度特徵空間的引數分佈,就可以擺脫資料中的異常值。對於非引數問題,DbscanIsolation Forests是很好的解決方案。

Dbscan

  機器學習和資料分析聚類方法是幫助我們更好地視覺化和理解資料的有用工具。資料集中的特性、趨勢和種群之間的關係可以通過像dbscan這樣的聚類方法來表示,也可以應用於許多維度上的非引數分佈中的異常值。
  Dbscan(Density Based Spatial Clustering of Applications with Noise)是基於密度的聚類演算法,重點是發現鄰居的密度(MinPts)在n維球體的半徑ɛ。
叢集可以被定義為特徵空間中“密度連線點”的最大集合。

Dbscan定義不同型別的點:

  • 核心點:A是一個核心的區域(ɛ所定義的)包含至少比引數MinPts同樣多或更多的點。

  • 邊界點:C是一個位於叢集中的邊界點,它的鄰域並不包含比MinPts更多的點,但它仍然是叢集中其他點的“密度可達”。

  • 離群點:N是一個離群點,在沒有叢集的情況下,它不是“密度可達”或“密度連線”到任何其他點。因此,這一點將有“他自己的叢集”。

  • 這裡寫圖片描述

  如果A是一個核心點,它就會形成一個叢集,所有的點都可以從中得到。通過P可獲得點P如果有一個路徑p1,,pnp1=ppn=q,其中每個pi+1是直接可以從p (所有路徑上的點必須核心點,可能q除外)。

  可達性是一種非對稱的關係,從定義上說,無論距離如何,都不能從非核心點到達任何點(因此,非核心點可能是可到達的,但它達不到任何點)。因此,需要進一步的連線概念來正式定義該演算法所發現的叢集的範圍。

兩個點p和q是密度連線的,如果有一個點o,那麼p和q都是密度可達的。密度-連線度是對稱的。

一個叢集滿足兩個屬性:

  • 叢集中的所有點都是相互關聯的。

  • 如果某個點從叢集的任何一點處都可以到達,那麼它也是叢集的一部分。

  scikit-learn有利用pandas實現的dbscan離群檢測模型。
  第一步是縮放資料,從半徑ɛ隨著MinPts定義鄰域。(提示:對於手邊的問題,一個好的scaler可以是scikit-learn的 Robust Scaler)。

  在擴充套件特性空間之後,是時候選擇dbscan執行叢集的空間度量了。必須根據問題選擇度量,歐幾里得距離在二維或三維空間中工作得很好,在處理高維空間4或更多維度時,曼哈頓度距離也很有用。然後,根據聚類選擇相應的引數eps(ɛ)。如果ɛ太大了許多點密度連線,如果太小聚類將導致許多無意義的叢集。一個好的方法是嘗試從0.25到0.75不等的值。

  Dbscan對MinPts引數也很敏感,它將完全依賴於手動調整的問題。dbscan的複雜度為O(n log n),它是一種具有中等大小的資料集的有效方法。當使用Scikit-learn的實現時,向模型提供資料是很容易的。在將dbscan安裝到資料叢集之後,可以提取並將每個樣本分配給一個叢集。Dbscan自己估計叢集的數量,沒有必要指定所需叢集的數量,它是一個無監督機器學習模型。

異常值(噪聲)將被分配給- 1叢集。在標記這些例項之後,它們可以被刪除或分析。

這裡寫圖片描述
Real world application of DBSCAN in housing prices (red:normal, black: outliers)

Isolation Forests

這裡寫圖片描述

  最後,Isolation Forests是檢測資料中的異常值或新奇事物的有效方法,它基於二叉決策樹。scikit-learn的實現相對簡單易懂。

  Isolation Forests的基本原則是,離群值很少,而且遠離其他觀測值。為了構建樹(訓練),該演算法從特徵空間隨機抽取一個特徵,並在最大值和最小值之間隨機選擇一個分割值。這是為訓練集的所有觀察值而制定的。為了建造森林,一棵樹的集合是使森林裡的所有樹木都平均。然後,對於預測,它將觀察值與“節點”中拆分值對比,該節點將有兩個子節點,然後進行另一個隨機比較。一個例項的演算法所產生的“splittings”的數量被命名為:“路徑長度”。正如預期的那樣,離群值將比其他觀測值的路徑長度更長。
每個觀測值可以計算出一個離群值:

這裡寫圖片描述

  其中h(x)為樣本x的路徑長度,c(n)為二叉樹的“不成功的長度搜索”(從根到外節點的二叉樹的最大路徑長度)n為外部節點數。在給每個觀察值打分(得分從0到1不等)後,1代表更多的“孤立”和“0”意味著更正常。可以指定一個閾值,比如0.55或0.60。

提示:在scikit- learn的庫中,分數移位了0.5和1,所以它返回 - 0.5到0.5的值,越大越正常,越小的越不正常。

總結(Conclusions)

Z-Score 優點

  • 如果你可以用高斯分佈來描述特徵空間中的值,這是一種非常有效的方法。(引數)

  • 使用pandas和scipy等庫可以很容易實現。

Z-Score 缺點

  • 在一個小到中等大小的資料集中,只有在低維的特徵空間中使用。

  • 當分佈不能被假定為引數時,不建議使用。

Dbscan 優點

  • 當特徵空間中的值分佈不是假設的時,這是一種非常有效的方法。

  • 如果搜尋異常值的特徵空間是多維的(比如:3或更多的維度),則可以很好地工作。

  • 用Scikit learn實現簡單,且文件很棒

  • 視覺化結果很簡單,方法本身也很直觀。

Dbscan 缺點

  • 特徵空間中的值需要相應地伸縮。

  • 選擇最優引數eps,MinPts和度規可能很困難,因為它對任何三個引數都非常敏感。

  • 它是一個無監督的模型,需要在每次分析新的資料時重新校準。

  • 它可以預測一次校準,但強烈不推薦。

Isolation Forest 優點

  • 在特性空間中不需要縮放值。

  • 當值分佈不能被假設時,它是一種有效的方法。

  • 它具有很少的引數,這使得該方法相當健壯且易於優化。

  • scikit- learn的實現很容易使用,而且文件非常出色。

Isolation Forest缺點

  • Python實現僅存在於Sklearn的開發版本中。

  • 視覺化的結果是複雜的。

  • 如果沒有正確的優化,訓練時間可以很長,計算費用也很昂貴。

如有不當之處,請留言!

相關推薦

異常檢測技術簡要概述(乾貨)

今天和大家簡單聊聊異常檢測技術的簡要概述。 什麼是離群值,如何處理它們? “Observation which deviates so much from other observations as to arouse suspicion it

Yahoo大規模時列資料異常檢測技術及其高效能可伸縮架構

))不同波動點(Change Points):給定輸入時間序列x,波動點是指在某個時間t,其狀態(行為)在這個時間序列上表現出與t前後的值不同異常時間序列:給定一組時間序列X={xi},異常時間序列xj∈X是在X上與大多數時間序列值不一致的部分在以下部分中,我們給出了EGADS當前用於檢測上述異常型別的方法。

基於深度神經網路的Auto Encoder用於異常檢測的一些思考

一、前言     現實中,大部分資料都是無標籤的,人和動物多數情況下都是通過無監督學習獲取概念,故而無監督學習擁有廣闊的業務場景。舉幾個場景:網路流量是正常流量還是攻擊流量、視訊中的人的行為是否正常、運維中伺服器狀態是否異常等等。有監督學習的做法是給樣本標出label,那麼標

基於圖的異常檢測演算法——概述

正在調研基於圖的異常檢測演算法,先出個概述,後面再慢慢填坑 基於圖的異常檢測給定一個圖資料庫,找到其中罕見不同於其他資料物件的點/邊/子結構 靜態圖的異常檢測 普通靜態圖 基於結構

基於Spark技術實現大規模時間序列異常檢測成功落地

最近一直忙於異常檢測專案的上線,一直沒有時間來更新部落格,該系統已經在大規模時間序列場景穩定執行1個多月,簡單總結一下。 達到的目標,通過Spark對3萬個伺服器進行預測,每個伺服器包括5個指標,每個指標對應一個時間序列,模型全量15萬,全量訓練用21個Core耗時3個小

象識別技術將完美融入AR與VR領域

拍攝 title 虛擬 好處 通道 跨國公司 名稱 電話 效率 原文標題:對象識別技術將完美融入AR與VR領域 隨著三星Bixby這樣的人工智能數字助手的推出,我們可以預計智能手機將不再局限於發信息、打電話、或進行娛樂活動。它們可以幫助我們更快地完成任務。通過語音命令數字助

淺談非法外聯檢測技術的演變

非法外聯 違規外聯 手機外聯 usb共享 無線熱點 電話撥號 針對隔離內網,非法外聯因其危害巨大,一直都是網絡邊界完整性防護的重中之重。早期非法外聯主要是指以電話撥號為主的私自連接互聯網的行為,早期電話撥號還是非常方便的,如163撥號,263撥號等,只要有電話線,就可以隨時撥號上網,缺

java面向象:面向象的思想和概述

行為 習慣 bsp 名稱 clas 兩個 ddr gin tab 1:面向對象思想 面向對象是基於面向過程的編程思想。 面向過程:強調的是每一個功能的步驟 面向對象:強調的是對象,然後由對象去調用功能 2:面向對象的思想特點 A:是一種更符合我們思想習慣的思想

入侵檢測技術考點

工作模式 用途 更改 層次 系統 信息 基於模型 屬性 信貸 第一章、入侵檢測概述 入侵檢測定義:入侵是指在非授權得情況下,試圖存取信息、處理信息或破壞以使系統不可靠、不可用的故意行為。 入侵檢測的基本原理:主要分為四個階段: 1、 數據收集:數據收集是入侵檢測的

《三聯生活周刊》2017年23期:5星。地球年齡與人類進化的檢測技術的簡史。

多人 留下 周口 兩個 入侵 正是 起源 可靠性 第三波 本期主題是人類測量地球年齡與人類進化史的技術的簡史。地球年齡最終依靠同位素測量法確定為45.5億年,人類進化史初期是根據化石推測,後來則根據DNA的變化來推算。 個人感覺這是看過的袁嶽的文章中最精彩的一篇,有靠

虛擬機檢測技術剖析

net 更多 共享 修改配置文件 cal 端口 目標 cmp bfc 作者:riusksk (泉哥)主頁:http://riusksk.blogbus.com 前言在當今信息安全領域,特別是惡意軟件分析中,經常需要利用到虛擬機技術,以提高病毒分析過程的安全性以及硬件資源的

異常及File類概述

異常 error exception file filenamefileter io流 一、異常 1、異常分類: Throwable:Throwable類是 Java 語言中所有錯誤或異常的超類。它只有兩個子類 Error:屬於嚴重問題,只能避免;如內存溢出(OutOfMemor

異常檢測(Anomaly detection): 異常檢測算法(應用高斯分布)

fff ati 高斯分布 不同的 detect 我們 src tro images 估計P(x)的分布--密度估計 我們有m個樣本,每個樣本有n個特征值,每個特征都分別服從不同的高斯分布,上圖中的公式是在假設每個特征都獨立的情況下,實際無論每個特征是否獨立,這個公式的效果

異常檢測: 應用多元高斯分布進行異常檢測

ron 適用於 fff 可能性 方差 評估 估計 變量 strong 多元高斯(正態)分布 多元高斯分布有兩個參數u和Σ,u是一個n維向量,Σ協方差矩陣是一個n*n維矩陣。改變u與Σ的值可以得到不同的高斯分布。 參數估計(參數擬合),估計u和Σ的公式如上圖所示,u為平均值

異常檢測

飛機 -1 width idt es2017 我們 技術分享 png .com 異常檢測: 判斷測試集是否異常。如下例中對飛機引擎的判斷: 我們建立評估模型概率模型p(x)來判斷,如果p(x)<ε異常,反之正常 用處舉例:購物網站用戶異常檢測,計算機集群異

Python-20 異常處理 異常檢測

為什麽 color 出現 運行 test lose logs 方式 aso 方式一:   try     檢測範圍   except Exception[ as reason]:     出現異常(Exception)後的處理代碼 方式二: 方式一: try:

三種分布式象主流技術——COM、Java和COBRA

接口 基本 現在 data 角度 很多 效率 並且 java平臺 既上一遍,看到還有一遍將關於 對象的, 分布式對象, 故摘抄入下: 目前國際上,分布式對象技術有三大流派——COBRA、COM/DCOM和Java。CORBA技術是最早出現的,1991年OMG頒布了COBRA

斯坦福新深度學習系統 NoScope:視頻檢測快1000倍

這樣的 nvidia 備份 stanford feed 角度 靜態圖 普通 acc 以作備份,來源http://jiasuhui.com/archives/178954 本文由“新智元”(微信ID:AI_era)編譯,來源:dawn.cs.stanford.edu,編譯:

Java象池技術的原理及其實現

問題 多種方式 等待 具體實現 tex sin 工作 程序 collect Java對象的生命周期分析  Java對象的生命周期大致包括三個階段:對象的創建,對象的使用,對象的清除。因此,對象的生命周期長度可用如下的表達式表示:T = T1 + T2 +T3。其中T1

基於深度學習的病毒檢測技術無需沙箱環境,直接將樣本文件轉換為二維圖片,進而應用改造後的卷積神經網絡 Inception V4 進行訓練和檢測

進制 思科 開發 主題 需求 做的 病毒 無法 大於 話題 3: 基於深度學習的二進制惡意樣本檢測 分享主題:全球正在經歷一場由科技驅動的數字化轉型,傳統技術已經不能適應病毒數量飛速增長的發展態勢。而基於沙箱的檢測方案無法滿足 APT 攻擊的檢測需求,也受到多種反沙箱技術的