1. 程式人生 > >樹模型-孤立森林

樹模型-孤立森林

樹模型

1、決策樹 ID3,C4.5,CART
2、隨機森林RF
3、Adaboost
4、GBDT
5、XGboost
6、孤立森林(異常檢測)

六、孤立森林

​ 孤立森林(Isolation Foreset)是基於樹(iTree)整合的快速異常檢測方法,其異常檢測的核心思想是“異常點是容易被孤立的離群點”。因此,孤立森林採用隨機特徵隨機閾值劃分生成多個樹,直到樹到達一定的高度或者直到每個葉子節點中只有一個點。那麼,那些離群點很容易被提前(即所在葉子節點的深度較淺)被劃分出來。由於每個樹都是由隨機取樣獨立生成的,所以樹之間具有一定的獨立性,多個樹的整合就是最終的孤立森林。

這裡寫圖片描述

可以看出,按照離群點大概率為異常點的話,那麼d最有可能為異常點。

下面簡單介紹孤立森林的流程和細節:

​ 1)從訓練集中隨機選擇(有放回和無放回)n個樣本點構成子集Ωi,i1,2..m,在m個子集上構建樹

​ 2)隨機選擇一個特徵,隨機選擇一個閾值(最大值與最小值之間)進行二分裂

​ 3)遞迴2)建樹,直到樹到達一定的高度d或者每個葉子節點中只有一個點。

​ 4)m個樹建好,根據m個決策樹的平均深度來定義其異常的概率

​ a)統計每棵樹的BST路徑長度定義:

c(n)
=2H(n1)(2(n1)/n)
​ b)定義異常的概率為: s(x,n)=2(E(h(x))c(n)) c(n)h(x)在給定n下的平均值, 其中的H(k)可以通過公式 H(k)=ln(k)+ξ來估計,ξ是尤拉常數,其值為0.5772156649,k為從根節點到葉子節點的路徑長度。

​ 5)計算異常概率:

​ a)當E(h(x))=c(n)s(x,n)=12

​ b)當E(h(

x))0s(x,n)=1

​ c)當E(h(x))n1s(x,n)=0

從上面建樹的過程,可以看出孤立森林是針對連續值屬性的,二分裂二叉樹,當然離散值屬性我想也是可以的。

孤立森林的特點:

​ 1)每棵樹隨機取樣獨立生成,所以孤立森林具有很好的處理大資料的能力和速度

​ 2)通常樹的數量越多,演算法越穩定,樹的深度不易過深

​ 3)孤立森林不適於特別高維的資料。因為子樹的構建每次只選一個特徵,容易受噪聲影響

sklearn中孤立森林的引數設定:

n_estimators :iTree的個數m

max_samples :構建子樹的樣本數n,整數為個數,小數為佔全集的比例

contamination :異常的閾值

max_features :構建每個子樹的特徵數,整數位個數,小數為佔全特徵的比例

bootstrap :取樣是有放回還是無放回

n_jobs :並行數

random_state :每次訓練的隨機性

verbose :建樹的過程描述輸出