rxFastTrees: Pohon Cepat
Pohon Cepat Pembelajaran Mesin
Penggunaan
rxFastTrees(formula = NULL, data, type = c("binary", "regression"),
numTrees = 100, numLeaves = 20, learningRate = 0.2, minSplit = 10,
exampleFraction = 0.7, featureFraction = 1, splitFraction = 1,
numBins = 255, firstUsePenalty = 0, gainConfLevel = 0,
unbalancedSets = FALSE, 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(), ...)
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 file .xdf atau objek bingkai data.
type
String karakter yang menentukan jenis Pohon Cepat: "binary"
untuk Klasifikasi Biner Pohon Cepat default atau "regression"
untuk Regresi Pohon Cepat.
numTrees
Menentukan jumlah total pohon keputusan yang akan dibuat dalam ansambel. Dengan membuat lebih banyak pohon keputusan, Anda berpotensi mendapatkan cakupan yang lebih baik, tetapi waktu pelatihan meningkat. Nilai defaultnya adalah 100.
numLeaves
Jumlah maksimum daun (simpul terminal) yang dapat dibuat di pohon apa pun. Nilai yang lebih tinggi berpotensi meningkatkan ukuran pohon dan mendapatkan presisi yang lebih baik, tetapi berisiko overfitting dan membutuhkan waktu pelatihan yang lebih lama. Nilai default adalah 20.
learningRate
Menentukan ukuran langkah yang diambil ke arah gradien di setiap langkah proses pembelajaran. Ini menentukan seberapa cepat atau lambat pelajar berkonversi pada solusi optimal. Jika ukuran langkah terlalu besar, Anda mungkin melampaui solusi optimal. Jika ukuran langkah terlalu kecil, pelatihan membutuhkan waktu lebih lama untuk bertemu dengan solusi terbaik.
minSplit
Jumlah minimum instans pelatihan yang diperlukan untuk membentuk daun. Artinya, jumlah minimal dokumen yang diizinkan dalam daun pohon regresi, dari data sub-sampel. 'Pemisahan' berarti bahwa fitur di setiap tingkat pohon (simpul) dibagi secara acak. Nilai defaultnya adalah 10. Hanya jumlah instans yang dihitung bahkan jika instans ditimbang.
exampleFraction
Pecahan instans yang dipilih secara acak untuk digunakan untuk setiap pohon. Nilai defaultnya adalah 0,7.
featureFraction
Pecahan fitur yang dipilih secara acak untuk digunakan untuk setiap pohon. Nilai default adalah 1.
splitFraction
Pecahan fitur yang dipilih secara acak untuk digunakan pada setiap pemisahan. Nilai default adalah 1.
numBins
Jumlah maksimum nilai (bin) yang berbeda per fitur. Jika fitur memiliki nilai yang lebih sedikit dari angka yang ditunjukkan, setiap nilai ditempatkan di bin sendiri. Jika ada lebih banyak nilai, algoritma membuat numBins
bin.
firstUsePenalty
Fitur ini pertama-tama menggunakan koefisien penalti. Ini adalah bentuk regularisasi yang dikenakan penalti karena menggunakan fitur baru saat membuat pohon. Tingkatkan nilai ini untuk membuat pohon yang tidak menggunakan banyak fitur. Nilai default adalah 0.
gainConfLevel
Kecocokan pohon mendapatkan persyaratan keyakinan (harus dalam kisaran [0,1)). Nilai default adalah 0.
unbalancedSets
Jika TRUE
, turunan yang dioptimalkan untuk set yang tidak seimbang digunakan. Hanya berlaku jika type
sama dengan "binary"
. Nilai defaultnya adalah FALSE
.
trainThreads
Jumlah utas yang akan digunakan dalam pelatihan. Nilai default adalah 8.
randomSeed
Menentukan benih acak. Nilai defaultnya adalah NULL
.
mlTransforms
Menentukan daftar transformasi MicrosoftML yang akan dilakukan pada data sebelum pelatihan atau NULL
jika tidak ada transformasi yang akan dilakukan. Lihat featurizeText, categorical, dan categoricalHash, untuk transformasi yang didukung. 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 log
income
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 didefinisikan di luar panggilan fungsi menggunakan fungsi ekspresi.
transformObjects
Daftar bernama yang berisi objek yang dapat dirujuk oleh transforms
, transformsFunc
, dan rowSelection
.
transformFunc
Fungsi transformasi variabel. Lihat rxTransform untuk detailnya.
transformVars
Vektor karakter variabel himpunan data input yang diperlukan untuk fungsi transformasi. Lihat rxTransform untuk detailnya.
transformPackages
Vektor karakter yang menentukan paket R tambahan (di luar yang ditentukan dalam rxGetOption("transformPackages")
) agar tersedia dan dimuat sebelumnya untuk digunakan dalam fungsi transformasi variabel. Misalnya, yang secara eksplisit didefinisikan dalam fungsi RevoScaleR melalui argumen dan transformFunc
mereka transforms
atau yang didefinisikan secara implisit melalui argumen atau rowSelection
merekaformula
. Argumen transformPackages
mungkin juga NULL
, menunjukkan bahwa tidak ada paket di luar rxGetOption("transformPackages")
yang dimuat sebelumnya.
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.
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 jumlah informasi yang meningkat.
computeContext
Mengatur konteks di mana komputasi dijalankan, ditentukan dengan RxComputeContext yang valid. Saat ini konteks komputasi lokal dan RxInSqlServer didukung.
ensemble
Parameter kontrol untuk ansambel.
...
Argumen tambahan yang akan diteruskan langsung ke Microsoft Compute Engine.
Detail
rxFastTrees adalah implementasi dari FastRank. FastRank adalah implementasi algoritma peningkatan gradien MART yang efisien. Peningkatan gradien adalah teknik pembelajaran mesin untuk masalah regresi. Ini membangun setiap pohon regresi dengan cara yang bijaksana, menggunakan fungsi kerugian yang telah ditentukan sebelumnya untuk mengukur kesalahan untuk setiap langkah dan memperbaikinya di langkah berikutnya. Jadi model prediksi ini sebenarnya merupakan ansambel model prediksi yang lebih lemah. Dalam masalah regresi, meningkatkan membangun serangkaian pohon seperti itu dengan cara yang bijaksana dan kemudian memilih pohon optimal menggunakan fungsi kehilangan yang dapat diferensial secara arbitrer.
MART mempelajari ansambel pohon regresi, yang merupakan pohon keputusan dengan nilai skalar di daunnya. Pohon keputusan (atau regresi) adalah bagan alur seperti pohon biner, di mana pada setiap simpul interior satu memutuskan simpul mana dari dua simpul anak yang akan terus didasarkan pada salah satu nilai fitur dari input. Pada setiap simpul daun, nilai dikembalikan. Dalam node interior, keputusan didasarkan pada pengujian "x <= v"
, di mana x
adalah nilai fitur dalam sampel input dan v
merupakan salah satu nilai yang mungkin dari fitur ini. Fungsi yang dapat diproduksi oleh pohon regresi adalah semua fungsi konstanta sepotong bijaksana.
Ansambel pohon diproduksi dengan komputasi, di setiap langkah, pohon regresi yang memperkirakan gradien fungsi kerugian, dan menambahkannya ke pohon sebelumnya dengan koefisien yang meminimalkan hilangnya pohon baru. Output ansambel yang dihasilkan oleh MART pada instans tertentu adalah jumlah output pohon.
Dalam kasus masalah klasifikasi biner, output dikonversi menjadi probabilitas dengan menggunakan beberapa bentuk kalibrasi.
Dalam kasus masalah regresi, output adalah nilai fungsi yang diprediksi.
Jika terjadi masalah peringkat, instans diurutkan berdasarkan nilai output ansambel.
Jika type
diatur ke "regression"
, versi regresi FastTree digunakan. Jika diatur ke "ranking"
, versi peringkat FastTree digunakan. Dalam kasus peringkat, instans harus diurutkan berdasarkan output ansambel pohon. Satu-satunya perbedaan dalam pengaturan versi ini adalah dalam pengaturan kalibrasi, yang hanya diperlukan untuk klasifikasi.
Nilai
rxFastTrees
: Objek rxFastTrees
dengan model terlatih.
FastTree
: Objek spesifikasi pelajar kelas maml
untuk pelatih Pohon Cepat.
Catatan
Algoritma ini multi-utas dan akan selalu mencoba memuat seluruh himpunan data ke dalam memori.
Penulis
Microsoft Corporation Microsoft Technical Support
Referensi
Wikipedia: Gradient boosting (Gradient tree boosting)
Greedy function approximation: A gradient boosting machine.
Lihat juga
rxFastForest, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.
Contoh
# Estimate a binary classification tree
infert1 <- infert
infert1$isCase = (infert1$case == 1)
treeModel <- rxFastTrees(formula = isCase ~ age + parity + education + spontaneous + induced,
data = infert1)
# Create xdf file with per-instance results using rxPredict
xdfOut <- tempfile(pattern = "scoreOut", fileext = ".xdf")
scoreDS <- rxPredict(treeModel, data = infert1,
extraVarsToWrite = c("isCase", "Score"),
outData = xdfOut)
rxDataStep(scoreDS, numRows = 10)
# Clean-up
file.remove(xdfOut)
######################################################################
# Estimate a regression fast tree
# 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 Tree for train data
fastTreeReg <- rxFastTrees(airFormula, type = "regression",
data = trainAir)
# Put score and model variables in data frame
fastTreeScoreDF <- rxPredict(fastTreeReg, data = testAir,
writeModelVars = TRUE)
# Plot actual versus predicted values with smoothed line
rxLinePlot(Score ~ Ozone, type = c("p", "smooth"), data = fastTreeScoreDF)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk