點擊上方藍色字體,關注AI小白入門喲
跟着博主的腳步,每天進步一點點
本文介紹了一種基於樹集成的異常檢測方法,其核心思想是“異常點是容易被孤立的離羣點”。首先介紹了孤立森林算法的設計思路。然後介紹了孤立森林算法的特點和適用場景。最後給出了sklearn中孤立森林算法的幾個重要參數。
作者 | 文傑
編輯 | yuquanle
孤立森林
孤立森林(Isolation Foreset)是基於樹(iTree)集成的快速異常檢測方法,其異常檢測的核心思想是“異常點是容易被孤立的離羣點”。
因此,孤立森林採用隨機特徵隨機閾值劃分生成多個樹,直到樹到達一定的高度或者直到每個葉子節點中只有一個點。
那麼,那些離羣點很容易被提前(即所在葉子節點的深度較淺)被劃分出來。由於每個樹都是由隨機採樣獨立生成的,所以樹之間具有一定的獨立性,多個樹的集成就是最終的孤立森林。
可以看出,按照離羣點大概率爲異常點的話,那麼d最有可能爲異常點。
孤立森林算法流程
1)從訓練集中隨機選擇(有放回和無放回)個樣本點構成子集,在個子集上構建樹;
2)隨機選擇一個特徵,隨機選擇一個閾值(最大值與最小值之間)進行二分裂;
3)遞歸2)建樹,直到樹到達一定的高度或者每個葉子節點中只有一個點;
4)個樹建好,根據個決策樹的平均深度來定義其異常的概率:
a)統計每棵樹的BST路徑長度定義:
b)定義異常的概率爲:
是在給定下的平均值, 其中的可以通過公式 來估計,是歐拉常數,其值爲0.5772156649,爲從根節點到葉子節點的路徑長度。
5)計算異常概率:
a)當,
b)當,
c)當,
從上面建樹的過程,可以看出孤立森林是針對連續值屬性的,二分裂二叉樹,當然離散值屬性我想也是可以的。
孤立森林的特點
每棵樹隨機採樣獨立生成,所以孤立森林具有很好的處理大數據的能力和速度;
通常樹的數量越多,算法越穩定,樹的深度不易過深;
孤立森林不適於特別高維的數據。因爲子樹的構建每次只選一個特徵,容易受噪聲影響。
sklearn中孤立森林的參數設置:
n_estimators :iTree的個數
max_samples :構建子樹的樣本數,整數爲個數,小數爲佔全集的比例
contamination :異常的閾值
max_features :構建每個子樹的特徵數,整數位個數,小數爲佔全特徵的比例
bootstrap :採樣是有放回還是無放回
n_jobs :並行數
random_state :每次訓練的隨機性
verbose :建樹的過程描述輸出
The End
方便交流學習,備註:暱稱-學校or公司-方向,進入DL&NLP交流羣。
記得備註呦
【推薦閱讀】
長按二維碼關注
AI小白入門
ID:StudyForAI
學習AI學習ai(愛)
期待與您的相遇~
你點的每個在看,我都認真當成了喜歡