全部產品
Search
文件中心

Platform For AI:One-Class SVM異常檢測

更新時間:Jul 13, 2024

One-Class SVM與傳統SVM不同,是一種非監督的學習演算法。您可以使用One-Class SVM異常檢測通過學習邊界對異常點進行預測。本文為您介紹One-Class SVM異常檢測的參數配置。

使用限制

支援啟動並執行計算資源為MaxCompute。

組件配置

您可以通過以下任意一種方式,配置One-Class SVM異常檢測參數。

方式一:可視化方式

Designer工作流程頁面配置組件參數。

頁簽

參數說明

描述

欄位設定

特徵列名數組

特徵列名的數組。

分組列名數組

分組列名的數組。

tensor列

tensor列。

向量列名

向量列對應的列名。

參數設定

預測結果列名

預測結果列的列名。

Kernel函數的相關參數coef0

核函數的相關參數,預設為0.0。

說明

當核函數類型為POLY和SIGMOID時,該參數才會生效。

多項式階數

多項式的階數。

收斂閾值

迭代方法的終止判斷閾值,預設為1.0E-6。

Kernel函數的相關參數gamma

核函數的相關參數,預設為-1.0。

說明

當核函數類型為RBF、POLY和SIGMOID時,該參數才會生效。如果未設定該參數,預設取值為1/特徵維度。

核函數類型

核函數的類型,取值如下:

  • RBF

  • POLY

  • SIGMOID

  • LINEAR

每組最大異常點數目

每組的最大異常點數目。

最大異常點比例

演算法檢測異常點的最大比例。

每組最大樣本數目

每組最大的樣本數目。

異常點比例上界參數nu

與支援向量的數目正向相關。取值範圍為(0,1),預設為0.01。

異常評分閾值

當評分大於該閾值時,判定為異常點。

預測詳細資料列名

預測詳細資料列的名稱。

組件多線程線程個數

組件多線程的線程個數。

執行調優

節點個數

節點個數,與參數單個節點記憶體大小配對使用,正整數。範圍[1, 9999]。

單個節點記憶體大小,單位M

單個節點記憶體大小,單位MB,正整數。範圍[1024, 64*1024]。

方式二:Python代碼方式

使用PyAlink指令碼組件配置該組件參數。您可以使用PyAlink指令碼組件進行Python代碼調用,詳情請參見PyAlink指令碼。

參數名稱

是否必選

描述

預設值

predictionCol

預測結果列的列名。

degree

多項式的階數。

2

epsilon

迭代方法的終止判斷閾值。

1.0E-6

featureCols

特徵列名數組。

全選

groupCols

分組列名數組。

maxOutlierNumPerGroup

每組的最大異常點數目。

maxOutlierRatio

演算法檢測異常點的最大比例。

maxSampleNumPerGroup

每組最大的樣本數目。

outlierThreshold

當評分大於該閾值時,判定為異常點。

predictionDetailCol

預測詳細資料列的名稱。

tensorCol

tensor列。

vectorCol

向量列對應的列名。

kernelType

核函數的類型,取值如下:

  • RBF

  • POLY

  • SIGMOID

  • LINEAR

RBF

coef0

核函數的相關參數。

說明

當核函數類型為POLY和SIGMOID時,該參數才會生效。

0.0

gamma

核函數的相關參數。

說明

當核函數類型為RBF、POLY和SIGMOID時,該參數才會生效。如果未設定該參數,預設取值為1/特徵維度。

-1.0

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()