rxFastForest: 高速フォレスト
Machine Learning 高速フォレスト
使用方法
rxFastForest(formula = NULL, data, type = c("binary", "regression"),
numTrees = 100, numLeaves = 20, minSplit = 10, exampleFraction = 0.7,
featureFraction = 0.7, splitFraction = 0.7, numBins = 255,
firstUsePenalty = 0, gainConfLevel = 0, trainThreads = 8,
randomSeed = NULL, 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 = 2,
computeContext = rxGetOption("computeContext"),
ensemble = ensembleControl(), ...)
引数
formula
rxFormula で記述されている式。 現在、相互作用項と F()
は MicrosoftML ではサポートされていません。
data
.xdf ファイルまたはデータ フレーム オブジェクトを指定するデータ ソース オブジェクトまたは文字列。
type
高速ツリーの種類を示す文字列。
- 既定の高速ツリー二項分類の場合は
"binary"
。 - 高速ツリー回帰の場合は
"regression"
。
numTrees
アンサンブルに作成するデシジョン ツリーの総数を指定します。 作成するデシジョン ツリーを増やすと、カバレッジが向上する可能性はありますが、トレーニング時間が長くなります。 既定値は 100 です。
numLeaves
ツリーに作成できるリーフ (終端ノード) の最大数。 値を大きくすると、ツリーのサイズが大きくなって精度が向上する可能性がありますが、オーバーフィットが発生し、トレーニング時間が長くなるリスクがあります。 既定値は 20 です。
minSplit
リーフを形成するために必要なトレーニング インスタンスの最小数。 つまり、サブサンプリングされたデータから、回帰ツリーのリーフで許可されるドキュメントの最小数です。 "分割" とは、ツリー (ノード) の各レベルの特徴がランダムに分割されることを意味します。 既定値は 10 です。
exampleFraction
各ツリーに使用するランダムに選択されたインスタンスの割合。 既定値は 0.7 です。
featureFraction
各ツリーに使用するランダムに選択された特徴の割合。 既定値は 0.7 です。
splitFraction
各分割に使用するランダムに選択された特徴の割合。 既定値は 0.7 です。
numBins
特徴ごとの個別の値 (ビン) の最大数。 既定値は 255 です。
firstUsePenalty
特徴の初回使用ペナルティ係数。 既定値は 0 です。
gainConfLevel
ツリー フィット ゲイン信頼度要件 ([0, 1) の範囲内である必要があります)。 既定値は 0 です。
trainThreads
トレーニングで使用するスレッドの数。 NULL
が指定された場合、使用するスレッドの数は内部的に決定されます。 既定値は NULL
です。
randomSeed
ランダム シードを指定します。 既定値は NULL
です。
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 の間で、変数 income
の log
の値が 10 を超える観測値のみを使用します。 行の選択は、データ変換を処理した後に実行されます (引数 transforms
または transformFunc
を参照してください)。 すべての式と同様に、rowSelection
は、expression 関数を使用して関数呼び出しの外部で定義できます。
transforms
変数変換の最初のラウンドを表す、list(name = expression, ``...)
という形式の式。 すべての式と同様に、transforms
(または rowSelection
) は、expression 関数を使用して関数呼び出しの外部で定義できます。
transformObjects
transforms
、transformsFunc
、rowSelection
で参照できるオブジェクトを含む名前付きリスト。
transformFunc
変数変換関数。 詳細については、「rxTransform」を参照してください。
transformVars
変換関数に必要な入力データ セット変数の文字ベクトル。 詳細については、「rxTransform」を参照してください。
transformPackages
変数変換関数で使用するために事前に読み込まれる追加の R パッケージ (rxGetOption("transformPackages")
で指定されているもの以外) を指定する文字ベクトル。 たとえば、transforms
および transformFunc
引数を使用して RevoScaleR 関数で明示的に定義されているものや、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 コンピューティング エンジンに直接渡される追加の引数。
詳細
デシジョン ツリーは、入力に対して一連の単純なテストを実行する
ノンパラメトリック モデルです。 この決定手順では、入力が処理されているインスタンスに似ているトレーニング データセット内の出力にマップされます。 適切なリーフ ノードに到達して出力決定が返されるまで、各インスタンスをツリーの分岐を通じて再帰的にマップする類似性の尺度に基づいて、バイナリ ツリー データ構造の各ノードで決定が行われます。
デシジョン ツリーには、次のようないくつかの利点があります。
トレーニング時と予測時における計算とメモリ使用量の両方の点で効率に優れている。
非線形の決定境界を表すことができる。
統合された特徴選択と分類が行われる。
ノイズの多い特徴が存在する状況での回復性がある。
高速フォレスト回帰は、rxFastTrees の回帰ツリー学習器を使用したランダム フォレストおよび分位点回帰フォレストの実装です。 このモデルは、複数のデシジョン ツリーの集団から成ります。 デシジョン フォレストに含まれる各ツリーからは、予測の手段としてガウス分布が出力されます。 ツリーの集団に対して集計 (アグリゲーション) を行うことによって、モデルに含まれる全ツリーの分布の組み合わせに最も近いガウス分布を見つけ出します。
このデシジョン フォレスト分類器は、デシジョン ツリーのアンサンブルで構成されます。 一般に、アンサンブル モデルは、単一のデシジョン ツリーと比べ、カバレッジと正確性が優れています。 デシジョン フォレストに含まれる各ツリーからは、予測の手段としてガウス分布が出力されます。 ツリーの集団に対して集計 (アグリゲーション) を行うことによって、モデルに含まれる全ツリーの分布の組み合わせに最も近いガウス分布を見つけ出します。
値
rxFastForest
: トレーニング済みモデルを持つ rxFastForest
オブジェクト。
FastForest
: 高速フォレスト トレーナーに対する maml
クラスの学習器仕様オブジェクト。
メモ
このアルゴリズムはマルチスレッドであり、常にデータ セット全体をメモリに読み込もうとします。
作成者
Microsoft Corporation Microsoft Technical Support
リファレンス
From Stumps to Trees to Forests
こちらもご覧ください
rxFastTrees、rxFastLinear、rxLogisticRegression、rxNeuralNet、rxOneClassSvm、featurizeText、categorical、categoricalHash、rxPredict.mlModel。
使用例
# Estimate a binary classification forest
infert1 <- infert
infert1$isCase = (infert1$case == 1)
forestModel <- rxFastForest(formula = isCase ~ age + parity + education + spontaneous + induced,
data = infert1)
# Create text file with per-instance results using rxPredict
txtOutFile <- tempfile(pattern = "scoreOut", fileext = ".txt")
txtOutDS <- RxTextData(file = txtOutFile)
scoreDS <- rxPredict(forestModel, data = infert1,
extraVarsToWrite = c("isCase", "Score"), outData = txtOutDS)
# Print the fist ten rows
rxDataStep(scoreDS, numRows = 10)
# Clean-up
file.remove(txtOutFile)
######################################################################
# Estimate a regression fast forest
# Use the built-in data set 'airquality' to create test and train data
DF <- airquality[!is.na(airquality$Ozone), ]
DF$Ozone <- as.numeric(DF$Ozone)
randomSplit <- rnorm(nrow(DF))
trainAir <- DF[randomSplit >= 0,]
testAir <- DF[randomSplit < 0,]
airFormula <- Ozone ~ Solar.R + Wind + Temp
# Regression Fast Forest for train data
rxFastForestReg <- rxFastForest(airFormula, type = "regression",
data = trainAir)
# Put score and model variables in data frame
rxFastForestScoreDF <- rxPredict(rxFastForestReg, data = testAir,
writeModelVars = TRUE)
# Plot actual versus predicted values with smoothed line
rxLinePlot(Score ~ Ozone, type = c("p", "smooth"), data = rxFastForestScoreDF)