Machine Learning One クラスサポート ベクター マシン
使用方法
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()
:放射状基底関数カーネル。 そのパラメーターは、gamma
という用語のexp(-gamma|x-y|^2
を表します。 指定しない場合、既定では1
使用するフィーチャの数で除算されます。 たとえば、rbfKernel(gamma = .1)
のようにします。 これが既定値です。 -
linearKernel()
: 線形カーネル。 -
polynomialKernel()
:a
という用語でパラメーター名bias
、deg
、および(a*<x,y> + bias)^deg
を持つ多項式カーネル。bias
は、既定で0
に設定されます。 度 (deg
) は、既定で3
に設定されます。a
が指定されていない場合は、1
フィーチャの数で割った値に設定されます。 たとえば、maKernelPoynomial(bias = 0, deg = `` 3)
のようにします。 -
sigmoidKernel()
: パラメーター名がgamma
され、coef0
という用語でtanh(gamma*<x,y> + coef0)
されている Sigmoid カーネル。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
。 このノーマライザーは、ゼロをゼロにマッピングすることで、スパーリティを維持します。
mlTransforms
トレーニングの前にデータに対して実行する MicrosoftML 変換の一覧を指定します。変換を実行しない場合は NULL
します。 サポートされている変換については、 featurizeText、 categorical、 および categoricalHash を参照してください。 これらの変換は、指定された R 変換の後に実行されます。 既定値は NULL
です。
mlTransformVars
mlTransforms
で使用する変数名の文字ベクトルを指定します。使用しない場合はNULL
します。 既定値は NULL
です。
rowSelection
モデルで使用されるデータ セットの行 (観測値) を、データ セットの論理変数の名前 (引用符で囲む) またはデータ セット内の変数を使用する論理式で指定します。 たとえば、 rowSelection = "old"
では、変数 old
の値が TRUE
された観測値のみが使用されます。
rowSelection = (age > 20) & (age < 65) & (log(income) > 10)
は、age
変数の値が 20 から 65 の範囲で、log
変数のincome
の値が 10 より大きい観測値のみを使用します。 行の選択は、データ変換を処理した後に実行されます (引数 transforms
または transformFunc
を参照)。 すべての式と同様に、 rowSelection
は式関数を使用して関数呼び出しの外部で定義できます。
transforms
変数変換の最初のラウンドを表すフォーム list(name = expression, ``...)
の式。 すべての式と同様に、 transforms
(または rowSelection
) は、式関数を使用して関数呼び出しの外部で定義できます。
transformObjects
transforms
、transformsFunc
、およびrowSelection
で参照できるオブジェクトを含む名前付きリスト。
transformFunc
変数変換関数。 詳細については、rxTransform を参照してください。
transformVars
変換関数に必要な入力データ セット変数の文字ベクトル。 詳細については、rxTransform を参照してください。
transformPackages
変数変換関数で使用するために使用可能にしてプリロードする追加の R パッケージ ( rxGetOption("transformPackages")
で指定されているものの外部) を指定する文字ベクトル。 たとえば、 RevoScaleR 関数で明示的に定義されている引数は、 transforms
引数と transformFunc
引数を使用して定義され、 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
リファレンス
Azure Machine Learning Studio (classic): One-Class Support Vector Machine
Support of a High-Dimensional Distribution
こちらも参照ください
rbfKernel、 linearKernel、 polynomialKernel、 sigmoidKernelrxFastTrees、 rxFastForest、 rxFastLinear、 rxLogisticRegression、 rxNeuralNet、 featurizeText、 categorical、 categoricalHash、 rxPredict.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)