Isolation Forest(以下簡稱iForest)算法是由南京大學的周志華和澳大利亞莫納什大學的Fei Tony Liu, Kai Ming Ting等人共同提出,用於挖掘異常數據【Isolation Forest,Isolation-based Anomaly Detection】。該算法基於異常數據的兩個特征:(1)異常數據只占少量;(2)異常數據特征值和正常數據差別很大。iForest算法由於簡單高效的特點,常用於網絡安全中的攻擊檢測和流量異常等分析【A survey of network anomaly detection techniques】。
iForest算法得益於隨機森林的思想,與隨機森林由大量決策樹組成一樣,iForest森林也由大量的二叉樹組成。iForest中的樹叫isolation tree,簡稱iTree。iTree樹和決策樹不太一樣,其構建過程也比決策樹簡單,是一個完全隨機的過程。
假設數據集有N條數據,構建一顆iTree時,從N條數據中均勻抽樣(一般是無放回抽樣)出ψ個樣本出來,作為這顆樹的訓練樣本。在樣本中,隨機選一個特征,並在這個特征的所有值范圍內(最小值與最大值之間)隨機選一個值,對樣本進行二叉划分,將樣本中小於該值的划分到節點的左邊,大於等於該值的划分到節點的右邊。由此得到一個分裂條件和左、右兩邊的數據集,然后分別在左右兩邊的數據集上重復上面的過程,直到數據集只有一條記錄或者達到了樹的限定高度。
圖1 iForest構建iTree示例,異常數據點(17,17)通常離根節點很近
由於異常數據較小且特征值和正常數據差別很大。因此,構建iTree的時候,異常數據離根更近,而正常數據離根更遠。一棵iTree的結果往往不可信,iForest算法通過多次抽取樣本,構建多棵二叉樹。最后整合所有樹的結果,並取平均深度作為最終的輸出深度,由此計算數據點的異常分值。