rxEnsemble: アンサンブル
モデルのアンサンブルをトレーニングします
使用方法
rxEnsemble(formula = NULL, data, trainers, type = c("binary", "regression",
"multiClass", "anomaly"), randomSeed = NULL,
modelCount = length(trainers), replace = FALSE, sampRate = NULL,
splitData = FALSE, combineMethod = c("median", "average", "vote"),
maxCalibration = 1e+05, 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 = 1,
computeContext = rxGetOption("computeContext"), ...)
引数
formula
rxFormula で記述されている式。 現在、相互作用項と F()
は MicrosoftML ではサポートされていません。
data
.xdf ファイルまたはデータ フレーム オブジェクトを指定するデータ ソース オブジェクトまたは文字列。 または、リスト内のデータ ソースのどれかを使用して各モデルをトレーニングする必要があることを示す、データ ソースのリストにすることができます。 この場合、データ リストの長さは modelCount
と同じ長さであることが必要です。
trainers
トレーナーとその引数のリスト。 トレーナーは、fastTrees、fastForest、fastLinear、logisticRegression、または neuralNet を使用して作成されます。
type
アンサンブルの種類を指定する文字列: 二項分類の場合は "binary"
、回帰の場合は "regression"
。
randomSeed
ランダム シードを指定します。 既定値は NULL
です。
modelCount
トレーニングするモデルの数を指定します。 この数がトレーナー リストの長さを超える場合、トレーナー リストは modelCount
と一致するように複製されます。
replace
観測値のサンプリングを置換ありとなしのどちらで行う必要があるかを指定する論理値。 既定値は /codeFALSE です。
sampRate
トレーナーごとにサンプリングする観測値の割合を指定する正の値のスカラー。 既定値は、置換を使用したサンプリング (つまり replace=TRUE) の場合は 1.0、置換なしのサンプリング (つまり replace=FALSE) の場合は 0.632 です。 splitData が TRUE の場合、sampRate の既定値は 1.0 (分割前にサンプリングを行わない) です。
splitData
重複しないパーティションで基本モデルをトレーニングするかどうかを指定する論理値。 既定値は、FALSE
です。 これは RxSpark
コンピューティング コンテキストでのみ使用でき、それ以外の場合は無視されます。
combineMethod
モデルを結合するために使用するメソッドを指定します。
median
: 個々のモデル出力の中央値を計算する場合average
: 個々のモデル出力の平均値を計算する場合vote
: "(pos - neg)/モデルの総数" を計算する場合。"pos" は正の出力の数、"neg" は負の出力の数です。
maxCalibration
調整に使用する例の最大数を指定します。 この引数は、二項分類以外のすべてのタスクでは無視されます。
mlTransforms
トレーニング前にデータに対して実行する MicrosoftML 変換のリストを指定します。変換を実行しない場合は NULL
を指定します。 データを追加で渡す必要がある変換 (featurizeText、categorical など) は指定できません。 これらの変換は、指定された 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 関数を使用して関数呼び出しの外部で定義できます。 既定値は NULL
です。
transformObjects
transforms
、transformsFunc
、rowSelection
で参照できるオブジェクトを含む名前付きリスト。 既定値は NULL
です。
transformFunc
変数変換関数。 詳細については、「rxTransform」を参照してください。 既定値は NULL
です。
transformVars
変換関数に必要な入力データ セット変数の文字ベクトル。 詳細については、「rxTransform」を参照してください。 既定値は NULL
です。
transformPackages
変数変換関数で使用するために事前に読み込まれる追加の R パッケージ (rxGetOption("transformPackages")
で指定されているもの以外) を指定する文字ベクトル。 たとえば、transforms
および transformFunc
引数を使用して RevoScaleR 関数で明示的に定義されているものや、formula
または rowSelection
引数を使用して暗黙的に定義されているものなどです。 引数 transformPackages
には NULL
を指定することもできます。これは、rxGetOption("transformPackages")
以外のパッケージを事前に読み込まないことを示します。 既定値は NULL
です。
transformEnvir
内部で開発され、変数データ変換に使用される、すべての環境の親として機能するユーザー定義環境。 transformEnvir = NULL
の場合は、baseenv()
を親とする新しい "ハッシュ" 環境が代わりに使用されます。 既定値は NULL
です。
blocksPerRead
データ ソースから読み取るデータのチャンクごとに、読み取るブロックの数を指定します。
reportProgress
行処理の進行状況に関するレポートのレベルを指定する整数値。
0
: 進行状況はレポートされません。1
: 処理された行の数が出力され、更新されます。2
: 処理された行とタイミングがレポートされます。3
: 処理された行とすべてのタイミングがレポートされます。
verbose
必要な出力の量を指定する整数値。 0
の場合、計算中に詳細は出力されません。 1
から 4
の整数値を指定すると、情報の量が増えます。 既定値は 1
です。
computeContext
有効な RxComputeContext で指定されている、計算が実行されるコンテキストを設定します。 現在はローカルと RxSpark コンピューティング コンテキストがサポートされています。 RxSpark が指定された場合、モデルのトレーニングは分散された方法で行われ、アンサンブルはローカルで行われます。 コンピューティング コンテキストは待機なしにできないことに注意してください。
...
Microsoft コンピューティング エンジンに直接渡される追加の引数。
詳細
/coderxEnsemble は、1 つのモデルから得られるよりも優れた予測パフォーマンスを得るために、さまざまな種類のモデルをトレーニングする関数です。
値
トレーニング済みアンサンブル モデルを持つ rxEnsemble
オブジェクト。
使用例
# Create an ensemble of regression rxFastTrees models
# use xdf data source
dataFile <- file.path(rxGetOption("sampleDataDir"), "claims4blocks.xdf")
rxGetInfo(dataFile, getVarInfo = TRUE, getBlockSizes = TRUE)
form <- cost ~ age + type + number
rxSetComputeContext("localpar")
rxGetComputeContext()
# build an ensemble model that contains three 'rxFastTrees' models with different parameters
ensemble <- rxEnsemble(
formula = form,
data = dataFile,
type = "regression",
trainers = list(fastTrees(), fastTrees(numTrees = 60), fastTrees(learningRate = 0.1)), #a list of trainers with their arguments.
replace = TRUE # Indicates using a bootstrap sample for each trainer
)
# use text data source
colInfo <- list(DayOfWeek = list(type = "factor", levels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")))
source <- system.file("SampleData/AirlineDemoSmall.csv", package = "RevoScaleR")
data <- RxTextData(source, missingValueString = "M", colInfo = colInfo)
# When 'distributed' is TRUE distributed data source is created
distributed <- FALSE
if (distributed) {
bigDataDirRoot <- "/share"
inputDir <- file.path(bigDataDirRoot, "AirlineDemoSmall")
rxHadoopMakeDir(inputDir)
rxHadoopCopyFromLocal(source, inputDir)
hdfsFS <- RxHdfsFileSystem()
data <- RxTextData(file = inputDir, missingValueString = "M", colInfo = colInfo, fileSystem = hdfsFS)
}
# When 'distributed' is TRUE training is distributed
if (distributed) {
cc <- rxSetComputeContext(RxSpark())
} else {
cc <- rxGetComputeContext()
}
ensemble <- rxEnsemble(
formula = ArrDelay ~ DayOfWeek,
data = data,
type = "regression",
trainers = list(fastTrees(), fastTrees(numTrees = 60), fastTrees(learningRate = 0.1)), # The ensemble will contain three 'rxFastTrees' models
replace = TRUE # Indicates using a bootstrap sample for each trainer
)
# Change the compute context back to previous for scoring
rxSetComputeContext(cc)
# Put score and model variables in data frame
scores <- rxPredict(ensemble, data = data, writeModelVars = TRUE)
# Plot actual versus predicted values with smoothed line
rxLinePlot(Score ~ ArrDelay, type = c("p", "smooth"), data = scores)