局部異常因子異常檢測根據資料樣本的局部異常因子值(Local Outlier Factor, LOF)判斷樣本是否異常。本文為您介紹局部異常因子異常檢測的參數配置。
使用限制
支援啟動並執行計算資源為MaxCompute。
組件配置
您可以通過以下任意一種方式,配置局部異常因子異常檢測參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數名稱 | 描述 |
欄位設定 | 特徵列名數組 | 特徵列名的數組。 |
分組列名數組 | 分組列名的數組。 | |
tensor列 | tensor列。 | |
向量列名 | 向量列對應的列名。 | |
參數設定 | 預測結果列名 | 預測結果列的列名。 |
距離度量方式 | 聚類使用的距離類型,預設為EUCLIDEAN。取值如下:
| |
每組最大異常點數目 | 每組最大的異常點數目。 | |
最大異常點比例 | 演算法檢測異常點的最大比例。 | |
每組最大樣本數目 | 每組最大的樣本數目。 | |
相鄰點個數 | 構造近鄰圖使用的相鄰點個數,預設為5。 | |
異常評分閾值 | 當評分大於該閾值時,判定為異常點。 | |
預測詳細資料列名 | 預測詳細資料列的列名。 | |
組件多線程線程個數 | 組件多線程的線程個數,預設為1。 | |
執行調優 | 節點個數 | 節點個數,與參數單個節點記憶體大小配對使用,正整數。範圍[1, 9999]。 |
單個節點記憶體大小,單位M | 單個節點記憶體大小,單位MB,正整數。範圍[1024, 64*1024]。 |
方式二:Python代碼方式
使用PyAlink指令碼組件配置該組件參數。您可以使用PyAlink指令碼組件進行Python代碼調用,詳情請參見PyAlink指令碼。
參數名稱 | 是否必選 | 描述 | 預設值 |
predictionCol | 是 | 預測結果列的列名。 | 無 |
distanceType | 否 | 聚類使用的距離類型,取值如下:
| EUCLIDEAN |
featureCols | 否 | 特徵列名數組。 | 全選 |
groupCols | 否 | 分組列名,支援多列。 | 無 |
maxOutlierNumPerGroup | 否 | 每組最大的異常點數目。 | 無 |
maxOutlierRatio | 否 | 演算法檢測異常點的最大比例。 | 無 |
maxSampleNumPerGroup | 否 | 每組最大的樣本數目。 | 無 |
outlierThreshold | 否 | 當評分大於該閾值時,判定為異常點。 | 無 |
predictionDetailCol | 否 | 預測詳細資料列的列名。 | 無 |
tensorCol | 否 | tensor列。 | 無 |
vectorCol | 否 | 向量列對應的列名。 | 無 |
numNeighbors | 否 | 構造近鄰圖使用的相鄰點個數。 | 5 |
numThreads | 否 | 組件多線程的線程個數。 | 1 |
Python代碼方式的使用樣本如下。
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 = LofOutlierBatchOp()\
.setFeatureCols(["val"])\
.setOutlierThreshold(3.0)\
.setPredictionCol("pred")\
.setPredictionDetailCol("pred_detail")
evalOp = EvalOutlierBatchOp()\
.setLabelCol("label")\
.setPredictionDetailCol("pred_detail")\
.setOutlierValueStrings(["1"])
metrics = dataOp\
.link(outlierOp)\
.link(evalOp)\
.collectMetrics()
print(metrics)