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/特徵維度。 | |
核函數類型 | 核函數的類型,取值如下:
| |
每組最大異常點數目 | 每組的最大異常點數目。 | |
最大異常點比例 | 演算法檢測異常點的最大比例。 | |
每組最大樣本數目 | 每組最大的樣本數目。 | |
異常點比例上界參數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 |
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()