局部異常因子異常檢測根據數據樣本的局部異常因子值(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)