rxOneClassSvm: OneClass SVM

Machine Learning 1 クラス サポート ベクター マシン

使用方法

  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 で記述されている式。 現在、相互作用項と F()MicrosoftML ではサポートされていません。

data

.xdf ファイルまたはデータ フレーム オブジェクトを指定するデータ ソース オブジェクトまたは文字列。

cacheSize

トレーニング データを格納するキャッシュの最大サイズ (MB 単位)。 大規模なトレーニング セットの場合は、これを増やします。 既定値は 100 MB です。

kernel

内積の計算に使用されるカーネルを表す文字列。 詳細については、「maKernel」を参照してください。 次の選択肢があります。

  • rbfKernel(): 放射基底関数カーネル。 パラメーターは項 exp(-gamma|x-y|^2gamma を表します。 指定しない場合、既定値は 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 を使用したシグモイド カーネル。 gamma の既定値は 1 を特徴の数で割った値になります。 パラメーター coef0 の既定値は 0 です。 たとえば、sigmoidKernel(gamma = .1, coef0 = 0) のようにします。

epsilon

オプティマイザーの収束のしきい値。 イテレーション間の改善がしきい値を下回った場合に、アルゴリズムが終了して現在のモデルが返されます。 .Machine$double.eps 以上の値を指定する必要があります。 既定値は 0.001 です。

nu

外れ値の割合とサポート ベクター数の間のトレードオフ (ギリシャ文字 nu で表されます)。 0 ~ 1 (通常は 0.1 から 0.5 の間) である必要があります。 既定値は 0.1 です。

shrink

TRUE の場合、圧縮ヒューリスティックを使用します。 この場合、トレーニング手順中に一部のサンプルが "圧縮" され、トレーニングが高速化される可能性があります。 既定値は TRUE です。

normalize

使用される自動正規化の種類を指定します。

  • "auto": 正規化が必要な場合は、自動的に実行されます。 既定値です。
  • "no": 正規化は実行されません。
  • "yes": 正規化が実行されます。
  • "warn": 正規化が必要な場合は警告メッセージが表示されますが、正規化は実行されません。
    正規化では、異なるデータ範囲が標準スケールに再スケーリングされます。 特徴のスケーリングにより、データ ポイント間の距離が比例し、勾配降下などのさまざまな最適化方法がはるかに高速に収束するようになります。 正規化が実行される場合は、MaxMin ノーマライザーが使用されます。 区間 [a, b] で値を正規化します。ただし、-1 <= a <= 0 かつ 0 <= b <= 1 かつ b - a = 1 です。 このノーマライザーでは、0 から 0 にマッピングすることで、低密度を維持します。

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 の間で、変数 incomelog の値が 10 を超える観測値のみを使用します。 行の選択は、データ変換を処理した後に実行されます (引数 transforms または transformFunc を参照してください)。 すべての式と同様に、rowSelection は、expression 関数を使用して関数呼び出しの外部で定義できます。

transforms

変数変換の最初のラウンドを表す、list(name = expression, ``...) という形式の式。 すべての式と同様に、transforms (または rowSelection) は、expression 関数を使用して関数呼び出しの外部で定義できます。

transformObjects

transformstransformsFuncrowSelection で参照できるオブジェクトを含む名前付きリスト。

transformFunc

変数変換関数。 詳細については、「rxTransform」を参照してください。

transformVars

変換関数に必要な入力データ セット変数の文字ベクトル。 詳細については、「rxTransform」を参照してください。

transformPackages

変数変換関数で使用するために事前に読み込まれる追加の R パッケージ (rxGetOption("transformPackages") で指定されているもの以外) を指定する文字ベクトル。 たとえば、transforms および transformFunc 引数を使用して RevoScaleR 関数で明示的に定義されているものや、formula または rowSelection 引数を使用して暗黙的に定義されているものなどです。 引数 transformPackages には NULL を指定することもできます。これは、rxGetOption("transformPackages") 以外のパッケージを事前に読み込まないことを示します。

transformEnvir

内部で開発され、変数データ変換に使用される、すべての環境の親として機能するユーザー定義環境。 transformEnvir = NULL の場合は、baseenv() を親とする新しい "ハッシュ" 環境が代わりに使用されます。

blocksPerRead

データ ソースから読み取るデータのチャンクごとに、読み取るブロックの数を指定します。

reportProgress

行処理の進行状況に関するレポートのレベルを指定する整数値。

  • 0: 進行状況はレポートされません。
  • 1: 処理された行の数が出力され、更新されます。
  • 2: 処理された行とタイミングがレポートされます。
  • 3: 処理された行とすべてのタイミングがレポートされます。

verbose

必要な出力の量を指定する整数値。 0 の場合、計算中に詳細は出力されません。 1 から 4 の整数値を指定すると、情報の量が増えます。

computeContext

有効な RxComputeContext で指定されている、計算が実行されるコンテキストを設定します。 現在は、ローカルと RxInSqlServer コンピューティング コンテキストがサポートされています。

ensemble

アンサンブルの制御パラメーター。

...

Microsoft コンピューティング エンジンに直接渡される追加の引数。

詳細

検出は、何らかのターゲット クラスに属していない外れ値を特定するためです。 トレーニング セットにはターゲット クラスの例だけが含まれているため、この種類の SVM は 1 クラスです。 ターゲット クラス内のオブジェクトに対してどのプロパティが正常かを予測し、これらのプロパティから、通常の例とは異なる例を予測します。 これは、トレーニング例の不足が異常の定義文字なので、異常検出に役立ちます。通常は、ネットワークへの侵入、不正行為、その他の種類の異常な動作の例はほとんどありません。

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)