孤立森林(isolation forest,iforest)是一種異常檢測演算法,是西瓜書作者周志華老師的團隊研究開發的演算法,一般用於結構化資料的異常檢測,是一種樹模型。思想和決策樹、隨機森林都極其相似。
iforest對於樣本的假設有兩點,當樣本不符合下面兩點時,不建議使用:
異常點很少,佔樣本中的比例很低
異常點與正常資料點的差異較大,並且彼此間的分布較為稀疏
根據上述第二點假設,說明該演算法模型並不適用於異常點聚集為一小簇的情況。如下圖:
該演算法同樣不考慮時序特徵,樣本間互相獨立。
下面來介紹下該演算法的原理和思想:
和隨機森林中每顆決策樹根據樣本屬性維度切割類似,iforest也有若干棵itree(孤立樹)組成,每棵itree由資料樣本的維度進行劃分,最後將每個樣本劃分到itree的左右葉子節點中,所以itree是一棵二叉樹。
iforest演算法可以分為兩個步驟:
建立itree:根據樣本建立若干棵itree
打分:利用建立的itree對樣本進行打分
資料樣本:假設有\(n\)個資料樣本點,每個樣本的維度是\(p\)維。
建立itree:
設定樹的高度\(h\)和樹的個數\(t\)棵;
從所有\(n\)個樣本資料中隨機選取\(m\)個資料樣本,用於建立一棵itree;
隨機從\(p\)維中選取1個維度,該維度的值\(q\)為隨機選擇位於\(m\)個樣本在該維度下的值,用於分割\(m\)個樣本點;
分割\(m\)個樣本,大於分割值\(q\)的作為左子樹,小於的作為右子樹;
反覆執行3~4兩步,直到到達樹的限制高度\(h\)或將樣本全部劃分到葉子節點中。
打分:
由於劃分維度和維度的值都是隨機的,所以我們需要反覆建立itree,結果取均值來確保結果穩定。
建立完成\(t\)棵樹後,採用打分函式:
\[score(x)=2^\sum_^h_}}
\]其中\(e[h(x)]\)表示樣本x在所有構建的itree中的高度的期望值,\(\frac\sum_^h_\)表示每棵itree的最大高度的均值。
根據上面的打分函式可以很明顯看出,越正常的樣本在itree中的深度越大,對應的\(h(x)\)就越接近itree的高度,score就越接近0.5,而異常點的score越接近1。
總結一下:
使用iforest時需要反覆構建iforest,使隨機性降低,結果收斂。
迭代次數越多,itree構建越多,結果越穩定、準確。
機器學習筆記整理(七) 異常檢測
異常檢測 由於沒有與異常值相關的資訊,因此實際上理想的異常檢測很困難 下面介紹幾種異常檢測方法 對偏離大部分資料的異常資料進行檢測的方法。該方法是無監督的異常檢測演算法,依賴於事先制定的規則 k值 計算過程 在無監督學習的異常檢測中引入學習要素 方法 求出幾乎包含所有訓練樣本的超球,未包含在超球內的...
機器學習(四) 異常檢測
機器學習中的異常檢測分為兩種,一種是無監督的異常檢測,另一種為有監督的異常檢測。無監督的異常檢測即在沒有標籤的情況下,演算法從一堆資料點中,挑選出其認為不正常的資料點。而有監督的異常檢測為在對訓練集提前設定好標籤的前提下,演算法對其進行劃分。異常檢測演算法可以應用於發動機的挑選中,假設乙個廠家生產了...
機器學習之異常檢測
異常檢測 anomaly detection 根據輸入資料,對不符合預期模式的資料進行識別 概率密度 描述隨機變數在某個確定的取值點附近的可能性的函式 當資料維度高於一維時 同理,根據資料點概率,進行判斷,如果p x 該點為異常點 資料分布統計 plt.hist x1,bins 100 計算資料均值...