Platform for AI (PAI) のLOF外れ値コンポーネントは、ローカル外れ値要因 (LOF) アルゴリズムに基づいてサンプルを外れ値として識別します。 このトピックでは、LOF Outlierコンポーネントを設定する方法について説明します。
制限事項
MaxComputeのコンピューティングリソースのみに基づいて、LOF Outlierコンポーネントを使用できます。
コンポーネントの設定
次のいずれかの方法を使用して、LOF Outlierコンポーネントを設定できます。
方法1: PAIコンソールでコンポーネントを設定する
Machine Learning Designerのパイプラインページでコンポーネントを設定します。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | featureCols | フィーチャ列の名前の配列。 |
groupCols | グループ列の名前の配列。 | |
tensorCol | テンソル列。 | |
vectorCol | ベクトル列の名前。 | |
パラメーター設定 | 予測結果列 | 予測結果列の名前。 |
距離測定方法 | クラスタリングに使用される距離測定。 デフォルト値: EUCLIDEAN。 有効な値:
| |
maxOutlierNumPerGroup | グループあたりの外れ値の最大数。 | |
maxOutlierRatio | LOFアルゴリズムによって検出される外れ値の最大比率。 | |
maxSampleNumPerGroup | グループあたりの最大サンプル数。 | |
numNeighbors | LOFダイアグラムで使用される隣接するデータポイントの数。 既定値:5 | |
outlierThreshold | スコアが指定されたしきい値を超えると、外れ値が検出されます。 | |
詳細予測情報の列名 | 予測の詳細列の名前。 | |
numThreads | LOF Outlierコンポーネントのスレッド数。 デフォルト値は 1 です。 | |
チューニングの実行 | 数の労働者 | ワーカーノードの数。 値は正の整数でなければなりません。 このパラメーターは、Memory per workerパラメーターと一緒に使用する必要があります。 有効な値: 1 ~ 9999 |
workerあたりのメモリ | 各ワーカーノードのメモリサイズ。 単位:MB。 値は正の整数でなければなりません。 1024から65536までの値を指定する必要があります。 |
方法2: Pythonコードを使用してコンポーネントを構成する
PyAlinkスクリプトコンポーネントを使用してPythonコードを呼び出し、LOF Outlierコンポーネントパラメーターを設定します。 詳細については、PyAlinkスクリプトのドキュメントを参照してください。
パラメーター | 必須 | 説明 | デフォルト値 |
predictionCol | 可 | 予測結果列の名前。 | N/A |
distanceType | 不可 | クラスタリングに使用される距離測定。 有効な値:
| EUCLIDEAN |
featureCols | 不可 | フィーチャ列の名前の配列。 | すべて選択 |
groupCols | 不可 | グループ列の名前。 複数の条件を指定することができます。 | N/A |
maxOutlierNumPerGroup | 不可 | グループあたりの外れ値の最大数。 | N/A |
maxOutlierRatio | 不可 | LOFアルゴリズムによって検出される外れ値の最大比率。 | N/A |
maxSampleNumPerGroup | 不可 | グループあたりの最大サンプル数。 | N/A |
outlierThreshold | 不可 | スコアが指定されたしきい値を超える場合、データポイントは異常ポイントと見なされます。 | N/A |
predictionDetailCol | 不可 | 予測の詳細列の名前。 | N/A |
tensorCol | 不可 | テンソル列の名前。 | N/A |
vectorCol | 不可 | ベクトル列の名前。 | N/A |
numNeighbors | 不可 | LOFダイアグラムで使用される隣接するデータポイントの数。 | 5 |
numThreads | 不可 | LOF Outlierコンポーネントのスレッド数。 | 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)