ore.randomForest
関数は、ore.frame
オブジェクト内のデータを分類するためのアンサンブル学習手法を提供します。
関数ore.randomForest
は、データベース・サーバーで並行してツリーを成長させることにより、ランダム・フォレスト・モデルを構築します。これは、多数のディシジョン・ツリーを構築し、個々のツリーのクラスのモードであるクラスを出力します。この関数では、ディシジョン・ツリーの一般的な問題であるオーバーフィットが回避されます。
Leo BreimanとAdele Cutlerによって開発されたランダム・フォレスト・アルゴリズムでは、バギングの概念と変数のランダムな選択を組み合せることにより、分散が制御されたディシジョン・ツリーの集合が生成されます。ランダム・フォレスト・アルゴリズムは高い精度を備えていますが、大規模なデータセットについては、パフォーマンスとスケーラビリティが問題になることがあります。
関数ore.randomForest
は、モデルの構築およびスコアリングのために並行して実行されます。パラレル実行は、Oracle R Distribution (ORD)のrandomForest
パッケージを使用している場合にも、オープン・ソースのrandomForest
パッケージ4.6-10を使用している場合にも、発生することがあります。ore.randomForest
およびORDを使用すると、オープン・ソースのパッケージとともにore.randomForest
を使用するよりも、必要なメモリーが少なくなる可能性があります。オープン・ソースのrandomForest
パッケージを使用すると、Oracle R Enterpriseでは警告が発行されます。
関数ore.randomForest
は、グローバル・オプションore.parallel
を使用して、採用する並列度を決定します。この関数は、ore.randomForest
オブジェクトを返します。
ore.randomForest
オブジェクトに対するスコアリング・メソッドpredict
の呼出しも、データベース・サーバーで並行して実行されます。cache.model
引数では、予測中にランダム・フォレスト・モデル全体をメモリーにキャッシュするかどうかを指定します。使用可能なメモリーが十分ある場合は、パフォーマンスを向上させるために、cache.model
のデフォルト値であるTRUE
を使用してください。
grabTree
メソッドは、指定されたツリーに関する情報を格納するore.frame
オブジェクトを返します。ore.frame
の各行は、ツリーの1つのノードを表します。
注意:
関数ore.randomForest
は、並行して実行されている各埋込みRセッションのトレーニング・データのコピーをロードします。大規模なデータセットの場合、これは、使用可能なメモリーの量を超えることがあります。パラレル・プロセスの数および使用可能なメモリーの量を適宜調整することをお薦めします。グローバル・オプションore.parallel
で、パラレル・プロセスの数を指定します。埋込みRの実行プロセスで使用されるメモリーの量を制御する方法の詳細は、『Oracle R Enterpriseインストレーションおよび管理ガイド』を参照してください。
例4-7 ore.randomForestの使用方法
# Using the iris dataset IRIS <- ore.push(iris) mod <- ore.randomForest(Species~., IRIS) tree10 <- grabTree(mod, k = 10, labelVar = TRUE) ans <- predict(mod, IRIS, type="all", supplemental.cols="Species") table(ans$Species, ans$prediction) # Using the infert dataset INFERT <- ore.push(infert) formula <- case ~ age + parity + education + spontaneous + induced rfMod <- ore.randomForest(formula, INFERT, ntree=1000, nodesize = 2) tree <- grabTree(rfMod, k = 500) rfPred <- predict(rfMod, INFERT, supplemental.cols = "case") confusion.matrix <- with(rfPred, table(case, prediction)) confusion.matrix
例4-7のリスト
R> # Using the iris dataset R> IRIS <- ore.push(iris) R> mod <- ore.randomForest(Species~., IRIS) R> tree10 <- grabTree(mod, k = 10, labelVar = TRUE) R> ans <- predict(mod, IRIS, type="all", supplemental.cols="Species") R> table(ans$Species, ans$prediction) setosa versicolor virginica setosa 50 0 0 versicolor 0 50 0 virginica 0 0 50 # Using the infert dataset R> INFERT <- ore.push(infert) R> formula <- case ~ age + parity + education + spontaneous + induced R> R> rfMod <- ore.randomForest(formula, INFERT, ntree=1000, nodesize = 2) R> tree <- grabTree(rfMod, k = 500) R> R> rfPred <- predict(rfMod, INFERT, supplemental.cols = "case") R> R> confusion.matrix <- with(rfPred, table(case, prediction)) R> confusion.matrix prediction case 0 1 0 154 11 1 27 56