四種檢測異常值的經常使用技術簡述

摘要: 本文介紹了異常值檢測的常見四種方法,分別爲Numeric Outlier、Z-Score、DBSCAN以及Isolation Forest

在訓練機器學習算法或應用統計技術時,錯誤值或異常值多是一個嚴重的問題,它們一般會形成測量偏差或異常系統條件的結果,所以不具備描述底層系統的特徵。實際上,最佳作法是在進行下一步分析以前,就應該進行異常值去除處理。node

在某些狀況下,異常值能夠提供有關整個系統中局部異常的信息;所以,檢測異常值是一個有價值的過程,由於在這個工程中,能夠提供有關數據集的附加信息。python

目前有許多技術能夠檢測異常值,而且能夠自主選擇是否從數據集中刪除。在這篇博文中,將展現KNIME分析平臺中四種最經常使用的異常值檢測的技術。算法

數據集和異常值檢測問題

本文用於測試和比較建議的離羣值檢測技術的數據集來源於航空公司數據集,該數據集包括2007年至2012年間美國國內航班的信息,例如出發時間、到達時間、起飛機場、目的地機場、播出時間、出發延誤、航班延誤、航班號等。其中一些列可能包含異常值。編程

從原始數據集中,隨機提取了2007年和2008年從芝加哥奧黑爾機場(ORD)出發的1500次航班樣本。antd

爲了展現所選擇的離羣值檢測技術是如何工做的,將專一於找出機場平均到達延誤的異常值,這些異常值是在給定機場降落的全部航班上計算的。咱們正在尋找那些顯示不尋常的平均到達延遲時間的機場。dom

四種異常值檢測技術

數字異常值|Numeric Outlier

數字異常值方法是一維特徵空間中最簡單的非參數異常值檢測方法,異常值是經過IQR(InterQuartile Range)計算得的。機器學習

計算第一和第三四分位數(Q一、Q3),異常值是位於四分位數範圍以外的數據點x i:工具

使用四分位數乘數值k=1.5,範圍限制是典型的上下晶須的盒子圖。這種技術是使用KNIME Analytics Platform內置的工做流程中的Numeric Outliers節點實現的(見圖1)。學習

Z-score

Z-score是一維或低維特徵空間中的參數異常檢測方法。該技術假定數據是高斯分佈,異常值是分佈尾部的數據點,所以遠離數據的平均值。距離的遠近取決於使用公式計算的歸一化數據點z i的設定閾值Zthr:測試

其中xi是一個數據點,μ是全部點xi的平均值,δ是全部點xi的標準誤差。

而後通過標準化處理後,異常值也進行標準化處理,其絕對值大於Zthr:

Zthr值通常設置爲2.五、3.0和3.5。該技術是使用KNIME工做流中的行過濾器節點實現的(見圖1)。

DBSCAN

該技術基於DBSCAN聚類方法,DBSCAN是一維或多維特徵空間中的非參數,基於密度的離羣值檢測方法。

在DBSCAN聚類技術中,全部數據點都被定義爲核心點(Core Points)、邊界點(Border Points)或噪聲點(Noise Points)。

  • 核心點是在距離ℇ內至少具備最小包含點數(minPTs)的數據點;
  • 邊界點是核心點的距離ℇ內鄰近點,但包含的點數小於最小包含點數(minPTs);
  • 全部的其餘數據點都是噪聲點,也被標識爲異常值;

從而,異常檢測取決於所要求的最小包含點數、距離ℇ和所選擇的距離度量,好比歐幾里得或曼哈頓距離。該技術是使用圖1中KNIME工做流中的DBSCAN節點實現的。

孤立森林|Isolation Forest

該方法是一維或多維特徵空間中大數據集的非參數方法,其中的一個重要概念是孤立數。

孤立數是孤立數據點所需的拆分數。經過如下步驟肯定此分割數:

  • 隨機選擇要分離的點「a」;
  • 選擇在最小值和最大值之間的隨機數據點「b」,而且與「a」不一樣;
  • 若是「b」的值低於「a」的值,則「b」的值變爲新的下限;
  • 若是「b」的值大於「a」的值,則「b」的值變爲新的上限;
  • 只要在上限和下限之間存在除「a」以外的數據點,就重複該過程;

與孤立非異常值相比,它須要更少的分裂來孤立異常值,即異常值與非異常點相比具備更低的孤立數。所以,若是數據點的孤立數低於閾值,則將數據點定義爲異常值。

閾值是基於數據中異常值的估計百分比來定義的,這是異常值檢測算法的起點。有關孤立森林技術圖像的解釋,能夠在此找到詳細資料

經過在Python Script中使用幾行Python代碼就能夠實現該技術。

from sklearn.ensemble import IsolationForest
import pandas as pd

clf = IsolationForest(max_samples=100, random_state=42)
table = pd.concat([input_table['Mean(ArrDelay)']], axis=1)
clf.fit(table)
output_table = pd.DataFrame(clf.predict(table))```python

Python Script節點是KNIME Python Integration的一部分,它容許咱們將Python代碼編寫/導入到KNIME工做流程。

在KNIME工做流程中實施

KNIME Analytics Platform是一個用於數據科學的開源軟件,涵蓋從數據攝取和數據混合、數據可視化的全部數據需求,從機器學習算法到數據應用,從報告到部署等等。它基於用於可視化編程的圖形用戶界面,使其很是直觀且易於使用,大大減小了學習時間。

此外,它被設計爲對不一樣的數據格式、數據類型、數據源、數據平臺以及外部工具(例如R和Python)開放,還包括許多用於分析非結構化數據的擴展,如文本、圖像或圖形。

KNIME Analytics Platform中的計算單元是小彩色塊,名爲「節點」。一個接一個地組裝管道中的節點,實現數據處理應用程序。管道也被稱爲「工做流程」。

鑑於全部這些特性,本文選擇它來實現上述的四種異常值檢測技術。圖1中展現了異常值檢測技術的工做流程。工做流程:

  • 1.讀取Read data metanode中的數據樣本;
  • 2.進行數據預處理並計算Preproc元節點內每一個機場的平均到達延遲;
  • 3.在下一個名爲密度延遲的元節點中,對數據進行標準化,並將標準化平均到達延遲的密度與標準正態分佈的密度進行對比;
  • 4.使用四種選定的技術檢測異常值;
  • 5.使用KNIME與Open Street Maps的集成,在MapViz元節點中顯示美國地圖中的異常值機場。

圖1:實施四種離羣值檢測技術的工做流程:數字異常值、Z-score、DBSCAN以及孤立森林

檢測到的異常值

在圖2-5中,能夠看到經過不一樣技術檢測到的異常值機場。其中。藍色圓圈表示沒有異常行爲的機場,而紅色方塊表示具備異常行爲的機場。平均到達延遲時間定義的大小了記。

一些機場一直被四種技術肯定爲異常值:斯波坎國際機場(GEG)、伊利諾伊大學威拉德機場(CMI)和哥倫比亞大都會機場(CAE)。斯波坎國際機場(GEG)具備最大的異常值,平均到達時間很是長(180分鐘)。然而,其餘一些機場僅能經過一些技術來識別、例如路易斯阿姆斯特朗新奧爾良國際機場(MSY)僅被孤立森林和DBSCAN技術所發現。

對於此特定問題,Z-Score技術僅能識別最少數量的異常值,而DBSCAN技術可以識別最大數量的異常值機場。且只有DBSCAN方法(MinPts = 3/ℇ= 1.5,歐幾里德距離測量)和孤立森林技術(異常值的估計百分比爲10%)在早期到達方向發現異常值。

圖2:經過數字異常值技術檢測到的異常值機場

圖3:經過z-score技術檢測到的異常機場

圖4:DBSCAN技術檢測到的異常機場

圖5:孤立森林技術檢測到的異常機場

總結

本文在一維空間中描述並實施了四種不一樣的離羣值檢測技術:2007年至2008年間全部美國機場的平均到達延遲。研究的四種技術分別是Numeric Outlier、Z-Score、DBSCAN和Isolation Forest方法。其中一些用於一維特徵空間、一些用於低維空間、一些用於高維空間、一些技術須要標準化和檢查維度的高斯分佈。而有些須要距離測量,有些須要計算平均值和標準誤差。有三個機場,全部異常值檢測技術都能將其識別爲異常值。可是,只有部分技術(好比,DBSCAN和孤立森林)能夠識別分佈左尾的異常值,即平均航班早於預約到達時間到達的那些機場。所以,應該根據具體問題選擇合適的檢測技術。

參考



本文做者:【方向】

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索