IForest異常檢測使用sub-sampling演算法,降低了演算法的計算複雜度,可以識別資料中的異常點,在異常檢測領域有顯著的應用效果。本文為您介紹IForest異常檢測的參數配置。
組件配置
您可以通過以下任意一種方式,配置IForest異常檢測參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數名稱 | 描述 |
欄位設定 | 特徵列名數組 | 如果您已經配置了向量列名或tensor列,則該參數不允許配置。 用於訓練的特徵列名。 說明 特徵列名數組、tensor列和向量列名是三個互斥參數,您只能使用其中一個參數來描述演算法的輸入特徵。 |
分組列名數組 | 分組列名。 | |
tensor列 | 如果您已經配置了向量列名或特徵列名數組,則該參數不允許配置。 tensor列名。 說明 特徵列名數組、tensor列和向量列名是三個互斥參數,您只能使用其中一個參數來描述演算法的輸入特徵。 | |
向量列名 | 如果您已經配置了tensor列或特徵列名數組,則該參數不允許配置。 向量列對應的列名。 說明 特徵列名數組、tensor列和向量列名是三個互斥參數,您只能使用其中一個參數來描述演算法的輸入特徵。 | |
參數設定 | 預測結果列名 | 預測結果列的列名。 |
每組最大異常點數目 | 每組最大的異常點數目。 | |
最大異常點比例 | 演算法檢測異常點的最大比例。 | |
每組最大樣本數目 | 每組最大的樣本數目。 | |
模型中樹的棵數 | 模型中樹的棵樹,預設為100。 | |
異常評分閾值 | 當評分大於該閾值時,判定為異常點。 | |
預測詳細資料列名 | 預測詳細資料列的列名。 | |
每棵樹的樣本採樣行數 | 每棵樹的樣本採樣行數,正整數。範圍[2,100000],預設為256。 | |
組件多線程線程個數 | 組件多線程的線程個數,預設為1。 | |
執行調優 | 節點個數 | 節點個數,與參數單個節點記憶體大小配對使用,正整數。範圍[1, 9999]。 |
單個節點記憶體大小,單位M | 單個節點記憶體大小,單位MB,正整數。範圍[1024, 64*1024]。 |
方式二:Python代碼方式
使用PyAlink指令碼組件,配置該組件參數。您可以使用PyAlink指令碼組件進行Python代碼調用,詳情請參見PyAlink指令碼。
參數名稱 | 是否必選 | 描述 | 預設值 |
predictionCol | 是 | 預測結果列的列名。 | 無 |
featureCols | 否 | 特徵列名數組。 | 全選 |
groupCols | 否 | 分組列名,支援多列。 | 無 |
maxOutlierNumPerGroup | 否 | 每組最大的異常點數目。 | 無 |
maxOutlierRatio | 否 | 演算法檢測異常點的最大比例。 | 無 |
maxSampleNumPerGroup | 否 | 每組最大的樣本數目。 | 無 |
numTrees | 否 | 模型中樹的棵數。 | 100 |
outlierThreshold | 否 | 當評分大於該閾值時,判定為異常點。 | 無 |
predictionDetailCol | 是 | 預測詳細資料列的列名。 | 無 |
tensorCol | 否 | tensor列。 | 無 |
vectorCol | 否 | 向量列對應的列名。 | 無 |
subsamplingSize | 否 | 每棵樹的樣本採樣行數,正整數。範圍[2,100000]。 | 256 |
numThreads | 否 | 組件多線程的線程個數。 | 1 |
Python代碼方式的使用樣本如下。
from pyalink.alink import *
import pandas as pd
df = pd.DataFrame([
[0.73, 0],
[0.24, 0],
[0.63, 0],
[0.55, 0],
[0.73, 0],
[0.41, 0]
])
dataOp = BatchOperator.fromDataframe(df, schemaStr='val double, label int')
outlierOp = IForestOutlierBatchOp()\
.setFeatureCols(["val"])\
.setOutlierThreshold(3.0)\
.setPredictionCol("pred")\
.setPredictionDetailCol("pred_detail")
outlierOp.print()