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

トレーナーとその引数のリスト。 トレーナーは、fastTreesfastForestfastLinearlogisticRegression、または 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 を指定します。 データを追加で渡す必要がある変換 (featurizeTextcategorical など) は指定できません。 これらの変換は、指定された R 変換の後に実行されます。 既定値は NULL です。

mlTransformVars

mlTransforms で使用する変数名の文字ベクトルを指定します。変数を使用しない場合は NULL を指定します。 既定値は NULL です。

rowSelection

モデルで使用されるデータ セットの行 (観測値) を、データ セットの論理変数の名前 (引用符で囲む) またはデータ セット内の変数を使用する論理式で指定します。 たとえば、rowSelection = "old" の場合は、変数 old の値が TRUE である観測値のみを使用します。 rowSelection = (age > 20) & (age < 65) & (log(income) > 10) の場合は、変数 age の値が 20 から 65 の間で、変数 incomelog の値が 10 を超える観測値のみを使用します。 行の選択は、データ変換を処理した後に実行されます (引数 transforms または transformFunc を参照してください)。 すべての式と同様に、rowSelection は、expression 関数を使用して関数呼び出しの外部で定義できます。

transforms

変数変換の最初のラウンドを表す、list(name = expression, ``...) という形式の式。 すべての式と同様に、transforms (または rowSelection) は、expression 関数を使用して関数呼び出しの外部で定義できます。 既定値は NULL です。

transformObjects

transformstransformsFuncrowSelection で参照できるオブジェクトを含む名前付きリスト。 既定値は 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)