rxEnsemble: Ensembles

Melatih ansambel model

Penggunaan

  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"), ...)

Argumen

formula

Rumus seperti yang dijelaskan dalam rxFormula. Istilah interaksi dan F() saat ini tidak didukung di MicrosoftML.

data

Objek sumber data atau string karakter yang menentukan .xdffile atau objek bingkai data. Atau, ini bisa menjadi daftar sumber data yang menunjukkan setiap model harus dilatih menggunakan salah satu sumber data dalam daftar. Dalam hal ini, panjang daftar data harus sama dengan modelCount.

trainers

Daftar pelatih dengan argumen mereka. Pelatih dibuat dengan menggunakan fastTrees, fastForest, fastLinear, logisticRegression atau neuralNet.

type

String karakter yang menentukan jenis ansambel: "binary" untuk Klasifikasi Biner atau "regression" untuk Regresi.

randomSeed

Menentukan nilai awal acak. Nilai defaultnya adalah NULL.

modelCount

Menentukan jumlah model yang akan dilatih. Jika jumlah ini lebih besar dari panjang daftar pelatih, daftar pelatih diduplikasi untuk mencocokkan modelCount.

replace

Nilai logis yang menentukan apakah pengambilan sampel pengamatan harus dilakukan dengan atau tanpa penggantian. Nilai defaultnya adalah /codeFALSE.

sampRate

skalar nilai positif yang menentukan persentase pengamatan yang akan diambil sampelnya untuk setiap pelatih. Defaultnya adalah 1,0 untuk pengambilan sampel dengan penggantian (yaitu, replace=TRUE) dan 0,632 untuk pengambilan sampel tanpa penggantian (yaitu, replace=FALSE). Ketika splitData TRUE, default sampRate adalah 1.0 (tidak ada pengambilan sampel yang dilakukan sebelum memisahkan).

splitData

Nilai logis yang menentukan apakah akan melatih model dasar pada partisi yang tidak tumpang tindih atau tidak. Default adalah FALSE. Ini hanya tersedia untuk RxSpark konteks komputasi dan diabaikan untuk orang lain.

combineMethod

Menentukan metode yang digunakan untuk menggabungkan model:

  • median untuk menghitung median output model individual,
  • average untuk menghitung rata-rata output model individu dan
  • vote untuk menghitung (pos-neg) / jumlah total model, di mana 'pos' adalah jumlah output positif dan 'neg' adalah jumlah output negatif.

maxCalibration

Menentukan jumlah maksimum contoh yang akan digunakan untuk kalibrasi. Argumen ini diabaikan untuk semua tugas selain klasifikasi biner.

mlTransforms

Menentukan daftar transformasi MicrosoftML yang akan dilakukan pada data sebelum pelatihan atau NULL jika tidak ada transformasi yang harus dilakukan. Transformasi yang memerlukan passover tambahan atas data (seperti featurizeText, kategoris) tidak diizinkan. Transformasi ini dilakukan setelah transformasi R yang ditentukan. Nilai defaultnya adalah NULL.

mlTransformVars

Menentukan vektor karakter nama variabel yang akan digunakan di mlTransforms atau NULL jika tidak ada yang akan digunakan. Nilai defaultnya adalah NULL.

rowSelection

Menentukan baris (pengamatan) dari himpunan data yang akan digunakan oleh model dengan nama variabel logis dari himpunan data (dalam tanda kutip) atau dengan ekspresi logis menggunakan variabel dalam himpunan data. Misalnya, rowSelection = "old" hanya akan menggunakan pengamatan di mana nilai variabel old adalah TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) hanya menggunakan pengamatan di mana nilai age variabel adalah antara 20 dan 65 dan nilai logincome variabel lebih besar dari 10. Pemilihan baris dilakukan setelah memproses transformasi data apa pun (lihat argumen transforms atau transformFunc). Seperti semua ekspresi, rowSelection dapat didefinisikan di luar panggilan fungsi menggunakan fungsi ekspresi.

transforms

Ekspresi formulir list(name = expression, ``...) yang mewakili putaran pertama transformasi variabel. Seperti semua ekspresi, transforms (atau rowSelection) dapat ditentukan di luar panggilan fungsi menggunakan fungsi ekspresi. Nilai defaultnya adalah NULL.

transformObjects

Daftar bernama yang berisi objek yang dapat dirujuk oleh transforms, transformsFunc, dan rowSelection. Nilai defaultnya adalah NULL.

transformFunc

Fungsi transformasi variabel. Lihat rxTransform untuk detailnya. Nilai defaultnya adalah NULL.

transformVars

Vektor karakter variabel himpunan data input yang diperlukan untuk fungsi transformasi. Lihat rxTransform untuk detailnya. Nilai defaultnya adalah NULL.

transformPackages

Vektor karakter yang menentukan paket R tambahan (di luar yang ditentukan dalam rxGetOption("transformPackages")) yang akan disediakan dan dimuat sebelumnya untuk digunakan dalam fungsi transformasi variabel. Misalnya, yang secara eksplisit didefinisikan dalam fungsi RevoScaleR melalui argumen dan transformFunc atau transforms yang ditentukan secara implisit melalui argumen atau rowSelection merekaformula. Argumen transformPackages mungkin juga NULL, menunjukkan bahwa tidak ada paket di luar rxGetOption("transformPackages") yang dimuat sebelumnya. Nilai defaultnya adalah NULL.

transformEnvir

Lingkungan yang ditentukan pengguna untuk berfungsi sebagai induk untuk semua lingkungan yang dikembangkan secara internal dan digunakan untuk transformasi data variabel. Jika transformEnvir = NULL, lingkungan "hash" baru dengan induk baseenv() digunakan sebagai gantinya. Nilai defaultnya adalah NULL.

blocksPerRead

Menentukan jumlah blok yang akan dibaca untuk setiap potongan data yang dibaca dari sumber data.

reportProgress

Nilai bilangan bulat yang menentukan tingkat pelaporan pada kemajuan pemrosesan baris:

  • 0: tidak ada kemajuan yang dilaporkan.
  • 1: jumlah baris yang diproses dicetak dan diperbarui.
  • 2: baris yang diproses dan waktu dilaporkan.
  • 3: baris yang diproses dan semua waktu dilaporkan.

verbose

Nilai bilangan bulat yang menentukan jumlah output yang diinginkan. Jika 0, tidak ada output verbose yang dicetak selama perhitungan. Nilai bilangan bulat dari 1 untuk 4 memberikan peningkatan jumlah informasi. Nilai defaultnya adalah 1.

computeContext

Mengatur konteks di mana komputasi dijalankan, ditentukan dengan RxComputeContext yang valid. Saat ini konteks komputasi lokal dan RxSpark didukung. Ketika RxSpark ditentukan, pelatihan model dilakukan dengan cara terdistribusi, dan ansambel dilakukan secara lokal. Perhatikan bahwa konteks komputasi tidak boleh tidak menunggu.

...

Argumen tambahan yang akan diteruskan langsung ke Microsoft Compute Engine.

Detail

/coderxEnsemble adalah fungsi yang melatih sejumlah model dari berbagai jenis untuk mendapatkan performa prediktif yang lebih baik daripada yang dapat diperoleh dari satu model.

Nilai

Objek rxEnsemble dengan model ansambel terlatih.

Contoh


 # 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)