ニューラル・ネットワーク・モデルを使用すると、入力と出力との間の複雑な非リニアの関係を取得すること、つまりデータのパターンを見つけることができます。ore.neural
関数は、ore.frame
のデータに対して回帰用のフィードフォワードニューラル・ネットワーク・モデルを構築します。これは、ノード数を指定可能な複数の非表示層をサポートします。各層には、複数の活性化関数のいずれかを設定できます。
出力層は、単一の数値カテゴリ・ターゲットまたはバイナリのカテゴリ・ターゲットです。出力層には、任意の活性化関数を設定できます。これには、デフォルトで線形活性化関数があります。
ore.neural
の出力は、タイプore.neural
のオブジェクトになります。
ore.neural
関数に対する引数の詳細は、help(ore.neural)
を呼び出してください。
ore.neural
関数を使用したモデル化は、センサー・データなどのノイズ・データおよび複合データに適しています。そのようなデータに発生する可能性のある問題は次のとおりです。
ピクセル値など、(数値)予測子が多い可能性がある
ターゲットが離散値、実数値またはそのような値のベクターである可能性がある
トレーニング・データに(ノイズに対して堅牢な)エラーが含まれている可能性がある
スコアリングが高速
モデルの透過性が不要なため、モデルの解釈が困難
ニューラル・ネットワーク・モデリングの一般的な手順は次のとおりです。
例4-5 ニューラル・ネットワーク・モデルの構築
この例では、デフォルト値(hidden sizeを1など)でニューラル・ネットワークを構築します。この例では、longley
データセットのサブセットをデータベース・メモリーのore.frame
オブジェクトに、オブジェクトtrainData
としてプッシュします。次に、longley
の別のサブセットをオブジェクトtestData
としてデータベースにプッシュします。この例では、trainData
を使用してニューラル・ネットワーク・モデルを構築し、testData
を使用して結果を予測します。
trainData <- ore.push(longley[1:11, ]) testData <- ore.push(longley[12:16, ]) fit <- ore.neural('Employed ~ GNP + Population + Year', data = trainData) ans <- predict(fit, newdata = testData) ans例4-5のリスト
R> trainData <- ore.push(longley[1:11, ]) R> testData <- ore.push(longley[12:16, ]) R> fit <- ore.neural('Employed ~ GNP + Population + Year', data = trainData) R> ans <- predict(fit, newdata = testData) R> ans pred_Employed 1 67.97452 2 69.50893 3 70.28098 4 70.86127 5 72.31066 Warning message: ORE object has no unique key - using random order
例4-6 ore.neuralの使用方法および活性化の指定
この例では、iris
データセットを一時データベース表にプッシュしますが、これにはプロキシore.frame
オブジェクトのIRIS
が含まれています。この例では、ore.neural
関数を使用してニューラル・ネットワーク・モデルを構築し、層ごとに異なる活性化関数を指定します。
IRIS <- ore.push(iris) fit <- ore.neural(Petal.Length ~ Petal.Width + Sepal.Length, data = IRIS, hiddenSizes = c(20, 5), activations = c("bSigmoid", "tanh", "linear")) ans <- predict(fit, newdata = IRIS, supplemental.cols = c("Petal.Length")) options(ore.warn.order = FALSE) head(ans, 3) summary(ans)例4-6のリスト
R> IRIS <- ore.push(iris) R> fit <- ore.neural(Petal.Length ~ Petal.Width + Sepal.Length, + data = IRIS, + hiddenSizes = c(20, 5), + activations = c("bSigmoid", "tanh", "linear")) R> R> ans <- predict(fit, newdata = IRIS, + supplemental.cols = c("Petal.Length")) R> options(ore.warn.order = FALSE) R> head(ans, 3) Petal.Length pred_Petal.Length 1 1.4 1.416466 2 1.4 1.363385 3 1.3 1.310709 R> summary(ans) Petal.Length pred_Petal.Length Min. :1.000 Min. :1.080 1st Qu.:1.600 1st Qu.:1.568 Median :4.350 Median :4.346 Mean :3.758 Mean :3.742 3rd Qu.:5.100 3rd Qu.:5.224 Max. :6.900 Max. :6.300