1クラスのサポートベクターマシン (SVM) は、従来のSVMアルゴリズムとは異なる教師なし機械学習アルゴリズムです。 1クラスSVM外れ値コンポーネントを使用して、決定境界を学習することで外れ値を検出できます。 このトピックでは、Platform for AI (PAI) でOne-Class SVM Outlierコンポーネントを設定する方法について説明します。
制限事項
MaxComputeのコンピューティングリソースのみに基づいて、One-Class SVM Outlierコンポーネントを使用できます。
コンポーネントの設定
次のいずれかの方法を使用して、one-Class SVM Outlierコンポーネントのパラメーターを設定できます。
方法1: PAIコンソールでコンポーネントを設定する
Machine Learning Designerのパイプラインページでコンポーネントを設定します。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | featureCols | フィーチャ列の名前の配列。 |
groupCols | グループ列の名前の配列。 | |
tensorCol | テンソル列。 | |
vectorCol | ベクトル列の名前。 | |
パラメーター設定 | 予測結果列 | 予測結果列の名前。 |
coef0 | カーネル関数のcoef0パラメーター。 デフォルト値: 0.0 説明 このパラメーターは、カーネル関数の型が多項式またはシグモイドの場合にのみ有効です。 | |
程度 | 多項式の次数。 | |
イプシロン | イテレーションが停止する前にトレーニング結果から取得する値。 デフォルト値: 1.0E-6。 | |
ガンマ | カーネル関数のガンマパラメーター。 デフォルト値: -1.0 説明 このパラメーターは、カーネル関数の型がRBF、多項式、またはシグモイドの場合にのみ有効です。 このパラメーターを設定しない場合、デフォルト値の1/dataディメンションが使用されます。 | |
kernelType | カーネル関数の型。 有効な値:
| |
maxOutlierNumPerGroup | グループあたりの外れ値の最大数。 | |
maxOutlierRatio | アルゴリズムによって検出される外れ値の最大比率。 | |
maxSampleNumPerGroup | グループあたりの最大サンプル数。 | |
nu | カーネル関数のnuパラメーター。 このパラメータは、サポートベクトルの数と正の相関がある。 有効な値: (0,1) 。 デフォルト値: 0.01 | |
outlierThreshold | スコアが指定されたしきい値を超える場合、データポイントは異常ポイントと見なされます。 | |
詳細予測情報の列名 | 予測の詳細列の名前。 | |
numThreads | コンポーネントのスレッド数。 | |
チューニングの実行 | 数の労働者 | ワーカーノードの数。 値は正の整数でなければなりません。 このパラメーターは、Memory per workerパラメーターと共に使用する必要があります。 有効な値: 1 ~ 9999 |
workerあたりのメモリ | 各ワーカーノードのメモリサイズ。 単位:MB。 値は正の整数でなければなりません。 1024から65536までの値を指定する必要があります。 |
方法2: Pythonコードを使用してコンポーネントを構成する
PyAlinkスクリプトコンポーネントを使用してPythonコードを呼び出すことにより、One-Class SVM Outlierコンポーネントを構成できます。 詳しくは、「PyAlinkスクリプト」をご参照ください。
パラメーター | 必須 | 説明 | デフォルト値 |
predictionCol | 可 | 予測結果列の名前。 | N/A |
程度 | 不可 | 多項式の次数。 | 2 |
イプシロン | 不可 | イテレーションが停止する前にトレーニング結果から取得する値。 | 1.0E-6 |
featureCols | 不可 | フィーチャ列の名前の配列。 | すべて選択 |
groupCols | 不可 | グループ列の名前の配列。 | N/A |
maxOutlierNumPerGroup | 不可 | グループあたりの外れ値の最大数。 | N/A |
maxOutlierRatio | 不可 | アルゴリズムによって検出される外れ値の最大比率。 | N/A |
maxSampleNumPerGroup | 不可 | グループあたりの最大サンプル数。 | N/A |
outlierThreshold | 不可 | スコアが指定されたしきい値を超える場合、データポイントは異常ポイントと見なされます。 | N/A |
predictionDetailCol | 不可 | 予測の詳細列の名前。 | N/A |
tensorCol | 不可 | テンソル列の名前。 | N/A |
vectorCol | 不可 | ベクトル列の名前。 | N/A |
kernelType | 不可 | カーネル関数の型。 有効な値:
| RBF |
coef0 | 不可 | カーネル関数のcoef0パラメーター。 説明 このパラメーターは、カーネル関数の型が多項式またはシグモイドの場合にのみ有効です。 | 0.0 |
ガンマ | 不可 | カーネル関数のガンマパラメーター。 説明 このパラメーターは、カーネル関数の型がRBF、多項式、またはシグモイドの場合にのみ有効です。 このパラメーターを設定しない場合、デフォルト値の1/dataディメンションが使用されます。 | -1.0 |
nu | 不可 | カーネル関数のnuパラメーター。 このパラメータは、サポートベクトルの数と正の相関がある。 有効な値: (0,1) 。 | 0.01 |
numThreads | 不可 | コンポーネントのスレッド数。 | 1 |
サンプルPythonコード:
df = pd.DataFrame([
[0.730967787376657,0.24053641567148587,0.6374174253501083,0.5504370051176339],
[0.7308781907032909,0.41008081149220166,0.20771484130971707,0.3327170559595112],
[0.7311469360199058,0.9014476240300544,0.49682259343089075,0.9858769332362016],
[0.731057369148862,0.07099203475193139,0.06712000939049956,0.768156984078079],
[0.7306094602878371,0.9187140138555101,0.9186071189908658,0.6795571637816596],
[0.730519863614471,0.08825840967622589,0.4889045498516358,0.461837214623537],
[0.7307886238322471,0.5796252073129174,0.7780122870716483,0.11499709190022733],
[0.7306990420600421,0.7491696031336331,0.34830970303125697,0.8972771427421047]])
# load data
data = BatchOperator.fromDataframe(df, schemaStr="x1 double, x2 double, x3 double, x4 double")
OcsvmOutlierBatchOp() \
.setFeatureCols(["x1", "x2", "x3", "x4"]) \
.setGamma(0.5) \
.setNu(0.1) \
.setKernelType("RBF") \
.setPredictionCol("pred").linkFrom(data).print()