sklearn.ensemble.IsolationForest?

class sklearn.ensemble.IsolationForest(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, n_jobs=None, behaviour='deprecated', random_state=None, verbose=0, warm_start=False)

[源碼]

獨立森林算法。

使用IsolationForest算法返回每個樣本的異常分數

IsolationForest通過隨機選擇一個特征,然后在所選特征的最大值和最小值之間隨機選擇一個分割值來“隔離”觀察結果。

由于遞歸分區可以用樹結構來表示,因此分離一個樣本所需的分裂次數等于從根節點到終止節點的路徑長度。

這條路徑的長度,在這些隨機樹的森林上的平均值,是一種正態性的度量,也是我們的決策函數。

隨機分區為異常生成明顯更短的路徑。因此,當一個隨機樹的森林集合為特定樣本產生更短的路徑長度時,它們很可能是異常的。

用戶指南中閱讀更多內容。

0.18版本新功能

參數 說明
n_estimators int, default=100
在集合中基估計器的數目。
max_samples “auto”, int or float, default=”auto”
從X中抽取樣本來訓練每個基估計量的數目。
- 如果是int,則繪制max_samples樣本。
- 如果是float,則繪制max_samples * X.shape[0]樣本。
- 如果是auto, 則繪制max_samples=min(256, n_samples)
如果max_samples大于所提供的樣本數量,則將對所有樹使用所有樣本(不采樣)。
contamination ‘auto’ or float, default=’auto’
數據集的污染量,即數據集中離群值的比例。在擬合時用于確定樣本得分的閾值。
- 如果是 auto,閾值的確定與原始集合中一樣。
- 如果是float,污染應在[0,0.5]范圍內。
在版本0.22中更改:污染的默認值從0.1更改為auto
max_features int or float, default=1.0
為了訓練每個基本估計器,從X中提取的特征的數量。
如果是int,則繪制max_features特征。
如果是float,則繪制max_features * X.shape[1] 特征。
bootstrap bool, default=False
如果為True,那么每棵樹都會對來自有放回采樣的訓練數據中獲得的隨機子集進行擬合。如果為False,則不進行有放回抽樣。
n_jobs int, default=None
fit和 并行運行的作業數predict。除非用于joblib.parallel_backend上下文中,否則None表示1 。-1表示使用所有處理器。有關更多詳細信息,請參見Glossary
behaviour str, default=’deprecated’
此參數無效,不建議使用,并將被刪除。
- 0.20版本中的新特性:0.20添加behaviour是為了向后兼容。
自版本0.22以來已棄用:behaviour參數在0.22中已棄用,在0.24中已刪除。
random_state int or RandomState, default=None
控制每個分支步驟和森林中每棵樹的特征和分割值選擇的偽隨機性。
在多個函數調用中傳遞可重復的結果,見Glossary
verbose int, default=0
控制樹構建過程的冗長程度。
warm_start bool, default=False
當設置為True時,重用前面調用的解決方案來適應并向集成添加更多的評估器,否則,只擬合整個森林。見Glossary
0.21版本新功能。
屬性 說明
estimators_ list of DecisionTreeClassifier
擬合的子估計器的集合。
estimators_samples_ list of arrays
為每個基本估計量繪制的樣本的子集。
max_samples_ int
實際樣本數。
offset_ float
用于從原始分數定義決策函數的偏移量。我們有這樣的關系:decision_function = score_samples - offset_offset_的定義如下。當污染參數設置為“auto”時,當非離群值的分數接近0,而離群值的分數接近-1時,偏移量等于-0.5。當提供了一個不同于“auto”的污染參數時,偏移量以這樣的方式定義,我們在訓練中獲得了期望的離群值(決策函數< 0的樣本)。
0.20版本新功能。
estimators_features_ list of arrays
每個基本估計器的繪制特征的子集。

另見

sklearn.covariance.EllipticEnvelope

用于檢測高斯分布數據集中異常值的對象。

sklearn.svm.OneClassSVM

無監督異常值檢測。估計高維分布的支持度。該實現基于libsvm

sklearn.neighbors.LocalOutlierFactor

使用局部離群因子(LOF)的無監督離群值檢測。

注意

這個實現是基于一個ExtraTreeRegressor的集合。每棵樹的最大深度設置為ceil(log_2(n)),其中是用于構建樹的樣本數量(詳見(Liu et al., 2008))。

參考文獻

  1. Liu, Fei Tony, Ting, Kai Ming and Zhou, Zhi-Hua. “Isolation forest.” Data Mining, 2008. ICDM’08. Eighth IEEE International Conference on.

  2. Liu, Fei Tony, Ting, Kai Ming and Zhou, Zhi-Hua. “Isolation-based anomaly detection.” ACM Transactions on Knowledge Discovery from Data (TKDD) 6.1 (2012): 3.

實例

>>> from sklearn.ensemble import IsolationForest
>>> X = [[-1.1], [0.3], [0.5], [100]]
>>> clf = IsolationForest(random_state=0).fit(X)
>>> clf.predict([[0.1], [0], [90]])
array([ 1,  1-1])

方法

方法 說明
decision_function(X) 基本分類器的X的平均異常分數。
fit(X[, y, sample_weight]) 擬合估計器。
fit_predict(X[, y]) 對X執行fit并返回X的標簽。
get_params([deep]) 獲取這個估計器的參數。
predict(X) 預測一個特定樣本是否是一個離群值。
score_samples(X) 與原集合中定義的異常分數相反。
set_params(**params) 設置這個估計器的參數。
__init__(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, n_jobs=None, behaviour='deprecated', random_state=None, verbose=0, warm_start=False)

[源碼]

初始化的self。請參閱幫助(type(self))以獲得準確的簽名。

decision_function(X)

[源碼]

基本分類器的X的平均異常分數。

將一個輸入樣本的異常值計算為該森林中樹的平均異常值。

給定一棵樹的觀測值的正態性度量,包含該觀測值的葉的深度,它等價于分離這個點所需的分裂數。如果葉節點中有幾個n_left觀察值,則添加n_left樣本隔離樹的平均路徑長度。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,它將被轉換為dtype=np.float32。以及是否將稀疏矩陣提供給稀疏csr_matrix
返回值 說明
scores ndarray of shape (n_samples,)
輸入樣本的異常分數。越低,越不正常。負分數代表離群值,正分數代表非離群值。
fit(X, y=None, sample_weight=None)

[源碼]

擬合估計器。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,它將被轉換為dtype=np.float32。以及是否將稀疏矩陣提供給稀疏csr_matrix
y Ignored
未使用,按照約定呈現API一致性。
sample_weight array-like of shape (n_samples,), default=None
樣本權重。如果沒有,那么樣本的權重相等。
返回值 說明
self object
擬合后的估計器。
fit_predict(X, y=None)

[源碼]

X執行fit并返回X的標簽。

離群值返回-1,非離群值值返回1

參數 說明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
輸入樣本。在內部,它將被轉換為dtype=np.float32。以及是否將稀疏矩陣提供給稀疏csr_matrix
y Ignored
未使用,按照約定呈現API一致性。
get_params(deep=True)

[源碼]

獲取這個估計器的參數。

參數 說明
deep bool, default=True
如果為True,則將返回此估算器和作為估算器的所包含子對象的參數。
返回值 說明
params mapping of string to any
參數名稱與其值相對應。
predict(X)

[源碼]

預測一個特定樣本是否是一個離群值。

參數 返回值
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,它將被轉換為dtype=np.float32。以及是否將稀疏矩陣提供給稀疏csr_matrix
返回值 說明
is_inlier ndarray of shape (n_samples,)
對于每一次觀察,根據擬合模型,告訴它是否(+1或-1)應該被視為一個非離群值。
score_samples(X)

[源碼]

與原集合中定義的異常分數相反。

將一個輸入樣本的異常值計算為該森林中樹的平均異常值。

給定一棵樹的觀測值的正態性度量是包含該觀測值的葉的深度,它等價于分離這個點所需的分裂數。如果葉節點中有幾個n_left觀察值,則添加n_left樣本隔離樹的平均路徑長度。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。
返回值 說明
scores ndarray of shape (n_samples,)
輸入樣本的異常分數。越低,越不正常。
score float
self.predict(X) 關于y的平均準確率。
set_params(self, params)

[源碼]

設置該估計器的參數。

該方法適用于簡單估計器和嵌套對象(如pipline)。后者具有形式為<component>_<parameter>的參數,這樣就可以更新嵌套對象的每個組件。

參數 說明
**params dict 估計器參數
返回值 說明
self object 估計實例。