分享方式:


rxOneClassSvm:OneClass SVM

機器學習單一類別支援向量機器

使用方式

  rxOneClassSvm(formula = NULL, data, cacheSize = 100, kernel = rbfKernel(),
    epsilon = 0.001, nu = 0.1, shrink = TRUE, normalize = "auto",
    mlTransforms = NULL, mlTransformVars = NULL, rowSelection = NULL,
    transforms = NULL, transformObjects = NULL, transformFunc = NULL,
    transformVars = NULL, transformPackages = NULL, transformEnvir = NULL,
    blocksPerRead = rxGetOption("blocksPerRead"),
    reportProgress = rxGetOption("reportProgress"), verbose = 1,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

引數

formula

如 rxFormula 中所說明的公式。 MicrosoftML 目前不支援互動字詞和 F()

data

指定 .xdf 檔案或資料框架物件的資料來源物件或字元字串。

cacheSize

儲存定型資料的快取大小上限 (MB)。 若是大型訓練集,請增加此值。 預設值為 100 MB。

kernel

字元字串,表示用於計算內部產品的核心。 如需詳細資訊,請參閱 maKernel。 可用的選項如下:

  • rbfKernel():放射狀基礎函數核心。 其參數代表 exp(-gamma|x-y|^2 字詞中的 gamma。 如果未指定,會預設為 1 除以使用的特徵數目。 例如: rbfKernel(gamma = .1) 。 這是預設值。
  • linearKernel():線性核心。
  • polynomialKernel():包含字詞 (a*<x,y> + bias)^deg 中參數名稱 abiasdeg 的多項式核心。 bias,預設為 0。 度數 deg,預設為 3。 如果未指定 a,則會將其設為 1 除以特徵數目。 例如: maKernelPoynomial(bias = 0, deg = `` 3)
  • sigmoidKernel():包含字詞 tanh(gamma*<x,y> + coef0) 中參數名稱 gammacoef0 的 Sigmoid 核心。 gamma,預設為 1 除以特徵數目。 參數 coef0 預設為 0。 例如: sigmoidKernel(gamma = .1, coef0 = 0)

epsilon

最佳化工具收斂的閾值。 換句話說,如果反覆運算之間的改進少於臨界值,此演算法會停止,並傳回目前的模型。 此值必須大於或等於 .Machine$double.eps。 預設值為 0.001。

nu

極端值的分數與支援的向量數目之間的取捨 (以希臘字母表示)。 必須介於 0 到 1 之間,通常介於 0.1 到 0.5 之間。 預設值為 0.1。

shrink

如果為 TRUE,則會使用壓縮啟發學習法。 在此情況下,某些樣本會在訓練程序中「壓縮」,從而加速訓練。 預設值是 TRUE

normalize

指定所使用的自動正規化類型:

  • "auto":如果需要正規化,會自動執行。 這是預設選項。
  • "no":不執行正規化。
  • "yes":執行正規化。
  • "warn":如果需要正規化,則會顯示警告訊息,但是不會執行正規化。
    正規化會將不同的資料範圍重新調整為標準規模。 特徵擴縮可確保資料點之間的距離成比例,並使各種最佳化方法 (例如梯度下降) 能夠更快收斂。 如果執行正規化,會使用 MaxMin 正規化程式。 其會在間隔 [a, b] 中將數值正規化,其中 -1 <= a <= 00 <= b <= 1 以及 b - a = 1。 此正規化程式會藉由將零對應至零來保留稀疏性。

mlTransforms

指定要在定型之前要在資料上執行的 MicrosoftML 轉換清單,或者未執行任何轉換時為 NULL。 請參閱 featurizeTextcategoricalcategoricalHash 以了解支援的轉換。 這些轉換會在任何指定的 R 轉換之後執行。 預設值是 NULL

mlTransformVars

指定要用於 mlTransforms 的變數名稱字元向量,或者,若不使用則為 NULL。 預設值是 NULL

rowSelection

指定資料集中要供模型使用的資料列 (觀測值),可以是來自資料集的邏輯變數名稱 (以引號括住),或是使用資料集中變數的邏輯運算式。 例如,rowSelection = "old" 將只會使用變數 old 值為 TRUE 的觀測值。 rowSelection = (age > 20) & (age < 65) & (log(income) > 10) 只會使用 age 變數值介於 20 到 65 之間且 income 變數 log 值大於 10 的觀察值。 資料列選取會在處理任何資料轉換之後執行 (請參閱引數 transformstransformFunc)。 如同所有運算式,rowSelection 可以使用運算式函數在函數呼叫之外定義。

transforms

代表第一輪變數轉換形式 list(name = expression, ``...) 的運算式。 如同所有運算式,transforms (或 rowSelection) 可以使用運算式函數在函數呼叫之外定義。

transformObjects

具名清單,其中包含 transformstransformsFuncrowSelection 可以參考的物件。

transformFunc

變數轉換函數。 如需詳細資料,請參閱 rxTransform。

transformVars

轉換函數所需之輸入資料集變數的字元向量。 如需詳細資料,請參閱 rxTransform。

transformPackages

指定其他 R 套件 (rxGetOption("transformPackages") 中指定的套件之外) 以供使用的字元向量,並預先載入以供變數轉換函數使用。 例如,RevoScaleR 函數中透過其 transformstransformFunc 引數明確定義,或透過其 formularowSelection 引數隱含定義的字元向量。 transformPackages 引數也可能是 NULL,表示 rxGetOption("transformPackages") 以外沒有預先載入任何套件。

transformEnvir

使用者定義的環境,作為內部開發之所有環境的父系且用於變數資料轉換。 如果為 transformEnvir = NULL,則會改用具有父代 baseenv() 的新「雜湊」環境。

blocksPerRead

指定要針對從資料來源讀取之每個資料區塊讀取的區塊數目。

reportProgress

指定資料列處理進度報告層級的整數值:

  • 0:未報告進度。
  • 1:已列印和更新處理的資料列數目。
  • 2:報告已處理的資料列數目與時間。
  • 3:已處理資料列且已報告所有時間。

verbose

指定要輸出數量的整數值。 若為 0,則計算期間不會列印任何詳細資訊輸出。 整數值 14 提供越來越多的資訊量。

computeContext

設定執行計算的內容,以有效的 RxComputeContext 指定。 目前支援本機和 RxInSqlServer 計算內容。

ensemble

用於集成的控制參數。

...

直接傳遞至 Microsoft Compute Engine 的額外引數。

詳細資料

目標是識別不屬於某些目標類別的極端值。 這種類型的 SVM 是單一類別,因為定型集只包含來自目標類別的範例。 其會推斷目標類別中物件的正常屬性,而這些屬性會預測哪些範例與一般範例不同。 這對於異常偵測很有用,因為缺少定型範例是異常的決定性特徵:網路入侵、詐騙或其他類型的異常行為通常沒有太多範例。

rxOneClassSvm:具有定型模型的 rxOneClassSvm 物件。

OneClassSvm:適用於 OneClass Svm 定型器的類別 maml 學習模組規格物件。

備註

此演算法為單一執行緒,且一律會嘗試將整個資料集載入記憶體中。

作者

Microsoft Corporation Microsoft Technical Support

參考資料

Anomaly detection

Azure Machine Learning Studio (classic): One-Class Support Vector Machine

Support of a High-Dimensional Distribution

Support Vector Algorithms

for Support Vector Machines

另請參閱

rbfKernellinearKernelpolynomialKernelsigmoidKernelrxFastTreesrxFastForestrxFastLinearrxLogisticRegressionrxNeuralNetfeaturizeTextcategoricalcategoricalHashrxPredict.mlModel

範例


 # Estimate a One-Class SVM model
 trainRows <- c(1:30, 51:80, 101:130)
 testRows = !(1:150 %in% trainRows)
 trainIris <- iris[trainRows,]
 testIris <- iris[testRows,]

 svmModel <- rxOneClassSvm(
     formula = ~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
     data = trainIris)

 # Add additional non-iris data to the test data set
 testIris$isIris <- 1
 notIris <- data.frame(
     Sepal.Length = c(2.5, 2.6),
     Sepal.Width = c(.75, .9),
     Petal.Length = c(2.5, 2.5),
     Petal.Width = c(.8, .7),
     Species = c("not iris", "not iris"),
     isIris = 0)
 testIris <- rbind(testIris, notIris)  

 scoreDF <- rxPredict(svmModel, 
      data = testIris, extraVarsToWrite = "isIris")

 # Look at the last few observations
 tail(scoreDF)
 # Look at average scores conditioned by 'isIris'
 rxCube(Score ~ F(isIris), data = scoreDF)