Isolation Forest (iForest) は、サブサンプリングアルゴリズムを使用して異常を検出します。 サブサンプリングアルゴリズムはそれほど複雑ではなく、データセット内の異常点を識別するために使用することができる。 iForestは、異常検出の実行に広く使用されています。 このトピックでは、iForestを設定して異常を検出する方法について説明します。
コンポーネントの設定
次のいずれかの方法を使用して、異常検出用のiForestのパラメーターを設定できます。
方法1: Machine Learning Designerでコンポーネントを構成する
Machine Learning Designerのパイプラインページでコンポーネントパラメーターを設定します。
タブ | パラメーター | 説明 |
フィールド設定 | featureCols | vectorColまたはtensorColパラメーターを設定した場合、このパラメーターはグレー表示されます。 トレーニングに使用されるフィーチャ列。 説明 featureCols、tensorCol、およびvectorColパラメーターは相互に排他的です。 そのうちの1つだけを使用して、アルゴリズムの入力フィーチャを記述できます。 |
groupCols | グループ列の配列。The array of the group column. | |
tensorCol | vectorColまたはfeatureColsパラメーターを設定した場合、このパラメーターはグレー表示されます。 テンソル列の名前。 説明 featureCols、tensorCol、およびvectorColパラメーターは相互に排他的です。 そのうちの1つだけを使用して、アルゴリズムの入力フィーチャを記述できます。 | |
vectorCol | tensorColまたはfeatureColsパラメーターを設定した場合、このパラメーターはグレー表示されます。 ベクトル列の名前。 説明 featureCols、tensorCol、およびvectorColパラメーターは相互に排他的です。 そのうちの1つだけを使用して、アルゴリズムの入力フィーチャを記述できます。 | |
パラメーター設定 | predictionCol | 予測結果列の名前。 |
maxOutlierNumPerGroup | グループあたりの外れ値の最大数。 | |
maxOutlierRatio | アルゴリズムによって検出される外れ値の最大比率。 | |
maxSampleNumPerGroup | グループあたりの最大サンプル数。 | |
numTrees | モデル内のツリーの数。 デフォルト値は 100 です。 | |
outlierThreshold | スコアが指定されたしきい値を超える場合、データポイントは異常ポイントと見なされます。 | |
詳細予測情報の列名 | 予測の詳細列の名前。 | |
subsamplingSize | 各ツリーでサンプリングされる行の数。 値は正の整数でなければなりません。 有効な値: 2 ~ 100000 デフォルト値: 256 | |
numThreads | コンポーネントのスレッド数。 デフォルト値は 1 です。 | |
実行チューニング | 数の労働者 | ノードの数を示します。 値は正の整数でなければなりません。 このパラメーターは、Memory per workerパラメーターと共に使用する必要があります。 有効な値: 1 ~ 9999 |
ワーカあたりのメモリ、単位MB | 各ノードのメモリサイズ。 単位:MB。 値は正の整数でなければなりません。 1024から65536までの値を指定する必要があります。 |
方法2: Pythonコードを使用する
PyAlinkスクリプトコンポーネントを使用してコンポーネントパラメータを設定します。 PyAlinkスクリプトコンポーネントを使用してPythonコードを呼び出すことができます。 詳細については、「PyAlinkスクリプト」をご参照ください。
パラメーター | 必須 | 説明 | デフォルト値 |
predictionCol | 可 | 予測結果列の名前。 | N/A |
featureCols | 不可 | フィーチャ列の配列。The array of the feature column. | すべて選択 |
groupCols | 不可 | グループ列の名前。 複数の条件を指定することができます。 | N/A |
maxOutlierNumPerGroup | 不可 | グループあたりの外れ値の最大数。 | N/A |
maxOutlierRatio | 不可 | アルゴリズムによって検出される外れ値の最大比率。 | N/A |
maxSampleNumPerGroup | 不可 | グループあたりの最大サンプル数。 | N/A |
numTrees | 不可 | モデル内のツリーの数。 | 100 |
outlierThreshold | 不可 | スコアが指定されたしきい値を超える場合、データポイントは異常ポイントと見なされます。 | N/A |
predictionDetailCol | 不可 | 予測の詳細列の名前。 | N/A |
tensorCol | 不可 | テンソル列の名前。 | N/A |
vectorCol | 不可 | ベクトル列の名前。 | N/A |
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()