7.20 サポート・ベクター・マシン
ore.odmSVM
関数は、OML4Rのサポート・ベクター・マシン(SVM)モデルを構築します。
SVMは、Vapnik-Chervonenkis理論に基づいた強固な理論的基礎を持つ最新の強力なアルゴリズムです。SVMは、強力な正則化プロパティを持ちます。正則化とは、新しいデータへのモデルの一般化を指します。
SVMモデルは、一般的な機械学習手法であるニューラル・ネットワークおよび動径基底関数に似た関数形式を持ちます。
SVMは、次のような問題の解決に使用できます。
-
分類: SVM分類は、決定境界を定義する決定面の概念に基づいています。決定面は、異なるクラスのメンバーシップを持つオブジェクト・セット間を区別するものです。SVMは、クラスの最も広範な区切りを与えるセパレータを定義するベクター(サポート・ベクター)を検出します。
SVM分類では、2項および多クラスの両ターゲットがサポートされます。
-
回帰: SVMでは、回帰問題を解決するために、イプシロン非感受性損失関数が使用されます。
SVM回帰では、データ・ポイントの最大数がイプシロン幅の非感受性チューブ内に収まるような連続関数の検出が試行されます。真のターゲット値のイプシロン距離内におさまる予測は、誤差として解釈されません。
-
異常検出: 異常検出は、一見同質なデータ内に存在する特異なケースを識別します。異常検出は、重大な意味を持ちながら検出することが難しい、不正行為、ネットワークへの侵入などの発生頻度の低いイベントを検出するための重要なツールです。
異常検出は、1クラスSVM分類として実装されます。異常検出モデルでは、あるデータ・ポイントが特定の分布に対して典型的かどうかを予測します。
ore.odmSVM
関数は、次の3つの異なるタイプのモデルを構築します。一部、分類モデルにのみ適用される引数、回帰モデルにのみ適用される引数、異常検出モデルにのみ適用される引数があります。
ore.odmSVM
関数の引数の詳細は、help(ore.odmSVM)
をコールしてください。
サポート・ベクター・マシン・モデルの設定
次の表に、Support Vector Machineモデルに適用される設定を示します。
表7-22 サポート・ベクター・マシン・モデルの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
新しいデータに対して優れた一般化を実現するための、モデルの堅牢性に対するモデルの複雑性のバランスをとる正則化設定。SVMでは、データ駆動の手法を使用して複雑性要素が検出される。 SVMアルゴリズム(分類と回帰の両方)の複雑度の値。 デフォルト値は、アルゴリズムによってデータから概算されます。 |
|
|
SVMアルゴリズムでの収束許容値。 デフォルトは |
|
|
回帰用の正則化設定(複雑性要素と似ている)。イプシロンによって、データ内で許容される残差(ノイズ)が指定される。 SVM回帰のイプシロン係数の値。 デフォルトは |
|
|
サポート・ベクター・マシンのカーネル。線形またはガウス。 デフォルト値は |
|
|
トレーニング・データでの目標となる外れ値率。1クラスSVMモデル(異常検出)に対してのみ有効です。 デフォルトは |
SVMS_STD_DEV |
|
ガウス・カーネル関数の分布を制御する。SVMでは、データ駆動の手法が使用され、通常のケース間の距離と同じスケールにある標準偏差値が検出される。 SVMアルゴリズムの標準偏差の値。 これは、ガウス・カーネルにのみ適用されます。 デフォルト値は、アルゴリズムによってデータから概算されます。 |
|
正の整数 |
この設定により、SVM反復数の上限が設定されます。これはSVMソルバーに依存するため、デフォルトはシステムによって決定されます。 |
SVMS_NUM_PIVOTS |
[ |
この設定により、不完全なコレスキ分解で使用されるピボット数の上限が設定されます。これは、非線形カーネルにのみ設定できます。デフォルト値は |
|
正の整数 |
この設定は、線形カーネルを使用するSVMモデルに適用されます。この設定により、SGDソルバーのバッチのサイズが設定されます。0を入力すると、データ駆動のバッチ・サイズの推定値がトリガーされます。デフォルトは |
|
|
この設定により、SGD SVMソルバーで使用される正則化のタイプが制御されます。この設定は、線形SVMモデルにのみ使用できます。これは潜在的なモデル・サイズに依存するため、デフォルトはシステムによって決定されます。 |
SVMS_SOLVER |
|
この設定により、ユーザーがSVMソルバーを選択できます。カーネルが非線形である場合、SGDソルバーは選択できません。デフォルト値は、システムによって決定されます。 |
例7-23 ore.odmSVM関数の使用方法および混同マトリクスの生成
この例では、SVM分類の使用方法を示します。この例では、Rのmtcars
データセットからデータベースにmtcars
を作成し、分類モデルを構築し、予測を行い、最終的に、混同マトリクスを生成します。
m <- mtcars m$gear <- as.factor(m$gear) m$cyl <- as.factor(m$cyl) m$vs <- as.factor(m$vs) m$ID <- 1:nrow(m) mtcars_of <- ore.push(m) svm.mod <- ore.odmSVM(gear ~ .-ID, mtcars_of, "classification") summary(svm.mod) svm.res <- predict (svm.mod, mtcars_of,"gear") with(svm.res, table(gear, PREDICTION)) # generate confusion matrix
この例のリスト
R> m <- mtcars
R> m$gear <- as.factor(m$gear)
R> m$cyl <- as.factor(m$cyl)
R> m$vs <- as.factor(m$vs)
R> m$ID <- 1:nrow(m)
R> mtcars_of <- ore.push(m)
R>
R> svm.mod <- ore.odmSVM(gear ~ .-ID, mtcars_of, "classification")
R> summary(svm.mod)
Call:
ore.odmSVM(formula = gear ~ . - ID, data = mtcars_of, type = "classification")
Settings:
value
prep.auto on
active.learning al.enable
complexity.factor 0.385498
conv.tolerance 1e-04
kernel.cache.size 50000000
kernel.function gaussian
std.dev 1.072341
Coefficients:
[1] No coefficients with gaussian kernel
R> svm.res <- predict (svm.mod, mtcars_of,"gear")
R> with(svm.res, table(gear, PREDICTION)) # generate confusion matrix
PREDICTION
gear 3 4
3 12 3
4 0 12
5 2 3
例7-24 ore.odmSVM関数の使用方法および回帰モデルの構築
この例では、SVM回帰を示します。この例では、データ・フレームを作成し、それを表にプッシュしてから、回帰モデルを構築します(ore.odmSVM
では、線形カーネルを指定します)。
x <- seq(0.1, 5, by = 0.02) y <- log(x) + rnorm(x, sd = 0.2) dat <-ore.push(data.frame(x=x, y=y)) # Build model with linear kernel svm.mod <- ore.odmSVM(y~x,dat,"regression", kernel.function="linear") summary(svm.mod) coef(svm.mod) svm.res <- predict(svm.mod,dat, supplemental.cols="x") head(svm.res,6)
この例のリスト
R> x <- seq(0.1, 5, by = 0.02)
R> y <- log(x) + rnorm(x, sd = 0.2)
R> dat <-ore.push(data.frame(x=x, y=y))
R>
R> # Build model with linear kernel
R> svm.mod <- ore.odmSVM(y~x,dat,"regression", kernel.function="linear")
R> summary(svm.mod)
Call:
ore.odmSVM(formula = y ~ x, data = dat, type = "regression",
kernel.function = "linear")
Settings:
value
prep.auto on
active.learning al.enable
complexity.factor 0.620553
conv.tolerance 1e-04
epsilon 0.098558
kernel.function linear
Residuals:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.79130 -0.28210 -0.05592 -0.01420 0.21460 1.58400
Coefficients:
variable value estimate
1 x 0.6637951
2 (Intercept) 0.3802170
R> coef(svm.mod)
variable value estimate
1 x 0.6637951
2 (Intercept) 0.3802170
R> svm.res <- predict(svm.mod,dat, supplemental.cols="x")
R> head(svm.res,6)
x PREDICTION
1 0.10 -0.7384312
2 0.12 -0.7271410
3 0.14 -0.7158507
4 0.16 -0.7045604
5 0.18 -0.6932702
6 0.20 -0.6819799
例7-25 ore.odmSVM関数の使用方法および異常検出モデルの構築
この例では、SVN異常検出を示します。ここでは、分類の例で作成されたmtcars_of
を使用し、異常検出モデルを構築します。
svm.mod <- ore.odmSVM(~ .-ID, mtcars_of, "anomaly.detection") summary(svm.mod) svm.res <- predict (svm.mod, mtcars_of, "ID") head(svm.res) table(svm.res$PREDICTION)
この例のリスト
R> svm.mod <- ore.odmSVM(~ .-ID, mtcars_of, "anomaly.detection")
R> summary(svm.mod)
Call:
ore.odmSVM(formula = ~. - ID, data = mtcars_of, type = "anomaly.detection")
Settings:
value
prep.auto on
active.learning al.enable
conv.tolerance 1e-04
kernel.cache.size 50000000
kernel.function gaussian
outlier.rate .1
std.dev 0.719126
Coefficients:
[1] No coefficients with gaussian kernel
R> svm.res <- predict (svm.mod, mtcars_of, "ID")
R> head(svm.res)
'0' '1' ID PREDICTION
Mazda RX4 0.4999405 0.5000595 1 1
Mazda RX4 Wag 0.4999794 0.5000206 2 1
Datsun 710 0.4999618 0.5000382 3 1
Hornet 4 Drive 0.4999819 0.5000181 4 1
Hornet Sportabout 0.4949872 0.5050128 5 1
Valiant 0.4999415 0.5000585 6 1
R> table(svm.res$PREDICTION)
0 1
5 27