7.14 ニューラル・ネットワーク・モデル
ore.odmNNクラスは、分類および回帰用のニューラル・ネットワーク(NN)モデルを作成します。ニューラル・ネットワーク・モデルを使用すると、入力と出力との間の複雑な非リニアの関係を取得すること、つまりデータのパターンを見つけることができます。
               
ore.odmNNクラス・メソッドは、OML4Rプロキシ・データ・フレームに対して回帰および分類のためのフィードフォワード・ニューラル・ネットワークを構築します。複数の非表示レイヤーをサポートし、それぞれに独自のノード数とアクティブ化機能があります。
                  
各層には、次の活性化関数のいずれかを設定できます。
- NNET_ACTIVATIONS_ARCTAN
- NNET_ACTIVATIONS_BIPOLAR_SIG
- NNET_ACTIVATIONS_LINEAR
- NNET_ACTIVATIONS_LOG_SIG
- NNET_ACTIVATIONS_RELU
- NNET_ACTIVATIONS_TANH
出力層は、単一の数値カテゴリ・ターゲットまたはバイナリのカテゴリ・ターゲットです。出力層には、任意の活性化関数を設定できます。これには、デフォルトで線形活性化関数があります。
ore.odmNNクラスを使用したモデリングは、センサー・データなどのノイズ・データおよび複合データに適しています。そのようなデータに発生する可能性のある問題は次のとおりです。
- 
                        ピクセル値など、(数値)予測子が多い可能性がある 
- 
                        ターゲットが離散値、実数値またはそのような値のベクターである可能性がある 
- 
                        トレーニング・データに(ノイズに対して堅牢な)エラーが含まれている可能性がある 
- 
                        スコアリングが高速 
- 
                        モデルの透過性が不要なため、モデルの解釈が困難 
ニューラル・ネットワーク・モデリングの一般的なステップは次のとおりです。
- 
                        アーキテクチャの指定 
- 
                        データの準備 
- 
                        モデルの構築 
- 
                        停止条件(反復、許容範囲内の検証セットでのエラー)の指定 
- 
                        モデルの統計結果の表示 
- 
                        モデルの改善 
ニューラル・ネットワーク・モデルの設定
次の表は、NNモデルの設定のリストです。
表7-13 ニューラル・ネットワーク・モデルの設定
| 設定名 | 設定値 | 説明 | 
|---|---|---|
| NNET_HIDDEN_LAYERS | 負でない整数 | 非表示レイヤーの数によってトポロジを定義します。 デフォルト値は | 
| 
 | 正の整数のリスト | レイヤー当たりのノード数によってトポロジを定義します。様々なレイヤーに様々な数のノードを含めることができます。 この値は負数ではない整数にして、カンマで区切る必要があります。たとえば、'10, 20, 5'です。設定値は、 | 
| 
 | 次の文字列のリスト: 
 | 非表示層の活性化関数を定義します。たとえば、''' NNET_ACTIVATIONS_BIPOLAR_SIG'', ''NNET_ACTIVATIONS_TANH'''のようにします。層ごとに異なる活性化関数を用意できます。 デフォルト値は 活性化関数の数は、 ノート:すべての引用符は一重引用符です。2つの一重引用符は、SQL文の一重引用符エスケープするために使用します。 | 
| 
 | 
 | この設定により、重みがランダムに初期化されるリージョンの下限が指定されます。 
 
 | 
| 
 | 
 | この設定により、重みが初期化されるリージョンの上限が指定されます。 デフォルト値は | 
| 
 | 正の整数 | この設定により、ニューラル・ネットワーク・アルゴリズムにおける最大反復数が指定されます。 デフォルト値は | 
| 
 | 
 | ニューラル・ネットワーク・アルゴリズムの収束許容値の設定を定義します。 デフォルト値は | 
| NNET_REGULARIZER  | 
 
 
 | ニューラル・ネットワーク・アルゴリズムの正則化設定です。トレーニング行の合計数が50000より大きい場合、デフォルトは  トレーニング行の合計数が50000以下の場合、デフォルトは | 
| 
 | 
 | 取り分けておいたメソッドの保持率を定義します。 デフォルト値は | 
| 
 | 値は正整数である必要があります。 | 
 デフォルト値は | 
| NNET_REG_LAMBDA | TO_CHAR(numeric_expr >=0) | L2正則化パラメータ・ラムダを定義します。これは、 NNET_REGULARIZER_HELDASIDEと一緒に設定することはできません。デフォルト値は | 
例7-16 ニューラル・ネットワーク・モデルの構築
この例では、NNモデルを作成し、ore.odmNNクラスのメソッドの一部を使用します。 
                  
# Turn off row ordering warnings
options(ore.warn.order=FALSE)
# Data setup
set.seed(7654)
x <- seq(0.1, 5, by = 0.02)
weights <- round(rnorm(length(x),10,3))
y <- log(x) + rnorm(x, sd = 0.2)
# Create a temporary OML4R proxy object DAT.
DAT <- ore.push(data.frame(x=x, y=y, weights=weights))
# Create an NN regression model object. Fit the NN model according to the data and setting parameters.
mod.nn <- ore.odmNN(y~x, DAT,"regression",
                          odm.settings = list(nnet_hidden_layers = 1))
weight(mod.nn)
summary(mod.nn)
# Use the model to make predictions on the input data.
pred.nn <- predict(mod.nn, DAT, "y")
head(pred.nn, 10)この例のリスト
表7-14 data.frame: 4 x 6
| LAYER | IDX_FROM | IDX_TO | ATTRIBUTE_NAME | ATTRIBUTE_VALUE | WEIGHT | 
|---|---|---|---|---|---|
| <dbl> | <dbl> | <dbl> | <chr> | <chr> | <dbl> | 
| 0 | 0 | 0 | x | NA | -1.0663866 | 
| 0 | NA | 0 | NA | NA | -7.4897304 | 
| 1 | 0 | 0 | NA | NA | -1068.0117188 | 
| 1 | NA | 0 | NA | NA | 0.9961451 | 
表7-15 data.frame: 10 x 2
| y | PREDICTION | 
|---|---|
| <dbl> | <dbl> | 
| -2.376195 | -1.648826 | 
| -1.906485 | -1.601597 | 
| -2.027240 | -1.555065 | 
| -1.541951 | -1.509221 | 
| -1.654645 | -1.464055 | 
| -1.742211 | -1.419556 | 
| -1.320646 | -1.375714 | 
| -1.357442 | -1.332520 | 
| -1.442755 | -1.289965 | 
| -1.192586 | -1.248039 | 
例7-17 ore.odmNN分類
                  
この例では、NNモデルを作成し、ore.odmNN分類クラスのメソッドの一部を使用します。 
                  
# Turn off row ordering warnings
options(ore.warn.order=FALSE)
# Data setup
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)
# Create a temporary OML4R proxy object for the MTCARS table.
MTCARS <- ore.push(m)
row.names(MTCARS) <- MTCARS$ID
# Create an NN classification model object. Fit the NN model according to the data and setting parameters.
mod.nn  <- ore.odmNN(gear ~ ., MTCARS,"classification",
                         odm.settings = list(nnet_hidden_layers = 2,
                                             nnet_activations = c("'NNET_ACTIVATIONS_LOG_SIG'", "'NNET_ACTIVATIONS_TANH'"),
                                             nnet_nodes_per_layer = c(5, 2)))
head(weight(mod.nn), 10)
# Use the model to make predictions on the input data.
pred.nn <- predict(mod.nn, MTCARS, "gear")
# Generate a confusion matrix.
with(pred.nn, table(gear, PREDICTION))この例のリスト
表7-16 data.frame: 10 x 6
| LAYER | IDX_FROM | IDX_TO | ATTRIBUTE_NAME | ATTRIBUTE_VALUE | WEIGHT | 
|---|---|---|---|---|---|
| <dbl> | <dbl> | <dbl> | <chr> | <chr> | <dbl> | 
| 0 | 0 | 0 | ID | NA | 12.424586 | 
| 0 | 0 | 1 | ID | NA | -9.953163 | 
| 0 | 0 | 2 | ID | NA | -7.516252 | 
| 0 | 0 | 3 | ID | NA | -1.100170 | 
| 0 | 0 | 4 | ID | NA | -15.955383 | 
| 0 | 1 | 0 | am | NA | 21.585514 | 
| 0 | 1 | 1 | am | NA | -3.228476 | 
| 0 | 1 | 2 | am | NA | -22.794853 | 
| 0 | 1 | 3 | am | NA | 15.349457 | 
| 0 | 1 | 4 | am | NA | -19.099138 | 
 PREDICTION 
     gear  3  4    
        3 14  1    
        4  0 12    
        5  2  3