iforest (isolation forest)是由liu et al. [1] 提出來的基於二叉樹的ensemble異常檢測演算法,具有效果好、訓練快(線性複雜度)等特點。
iforest為聚類演算法,不需要標記資料訓練。首先給出幾個定義:
iforest的基本思想非常簡單:完成異常點的isolation所需的劃分數大於正常樣本點(非異常)。如下圖所示:
\(x_i\)樣本點的isolation需要大概12次劃分,而異常點\(x_0\)指需要4次左右。因此,我們可以根據劃分次數來區分是否為異常點。但是,如何建模呢?我們容易想到:劃分對應於決策樹中節點**,那麼劃分次數即為從決策樹的根節點到葉子節點所經歷的邊數,稱之為路徑長度(path length)。假設樣本集合共有\(n\)個樣本點,對於二叉查詢樹(binary search tree, bst),則查詢失敗的平均路徑長度為
\[ c(n) = 2h(n-1) -(2(n-1)/n) \]
其中,\(h(i)\)為harmonic number,可估計為\(\ln (i) + 0.5772156649\)。那麼,可建模anomaly score:
\[ s(x,n) = 2^} \]
其中,\(h(x)\)為樣本點\(x\)的路徑長度,\(e(h(x))\)為iforest的多棵樹中樣本點\(x\)的路徑長度的期望。特別地,
當\(s\)值越高(接近於1),則表明該點越可能為異常點。若所有的樣本點的\(s\)值都在0.5左右,則說明該樣本集合沒有異常點。
iforest採用二叉決策樹來劃分樣本空間,每一次劃分都是隨機選取乙個屬性值來做,具體流程如下:
停止**條件:
為了避免錯檢(swamping)與漏檢(masking),在訓練每棵樹的時候,為了更好地區分,不會拿全量樣本,而會sub-sampling樣本集合。iforest的訓練流程如下:
sklearn給出了iforest與其他異常檢測演算法的比較。
[1] liu, fei tony, kai ming ting, and zhi-hua zhou. "isolation forest." data mining, 2008. icdm'08. eighth ieee international conference on. ieee, 2008.
異常點檢測演算法
異常點檢測演算法 對於train data 中的資料,對其中重要的特徵 或者每個特徵 x1,x2,xn,計算其高斯分布 對new data,計算 x 每個特徵 在訓練資料分布下的 p 值並相乘,若p x 小於某個臨界值,則判斷其為異常點 什麼時候選擇使用 p x 根據分布概率來判斷異常點,什麼時候使...
機器學習 異常檢測演算法
異常檢測應用在工業檢測 賬戶行為監測等領域。問題特點 異常檢測問題,往往更多使用無監督的演算法建模,再結合標定的驗證集用於切閾值。異常檢測的兩類常用方法 本文案例 資料集 電腦開機引數,包含兩個特徵 訓練集和驗證集的圖示如 演算法教程參見吳恩達 機器學習 異常檢測。基本的假定是 資料中的每個特徵數值...
內部威脅檢測之異常檢測演算法
一般現有的內部威脅檢測演算法都會被轉化為異常檢測來做,我個人認為在內部威脅檢測領域除了異常檢測這一killing part之外,識別攻擊動機以及區分異常和攻擊也是重點 大型立flag現場 另一篇 中了,我就寫這個 首先這篇文章就對現有的異常檢測演算法做乙個綜述。內部威脅檢測主要是基於使用者的網路 檔...