rxLogisticRegression: Regresi Logistik
Regresi Logistik Pembelajaran Mesin
Penggunaan
rxLogisticRegression(formula = NULL, data, type = c("binary", "multiClass"),
l2Weight = 1, l1Weight = 1, optTol = 1e-07, memorySize = 20,
initWtsScale = 0, maxIterations = 2147483647, showTrainingStats = FALSE,
sgdInitTol = 0, trainThreads = NULL, denseOptimizer = FALSE,
normalize = "auto", 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"),
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 Regresi Logistik: "binary"
untuk regresi logistik klasifikasi biner default atau "multi"
untuk regresi logistik multinomial.
l2Weight
Berat regularisasi L2. Nilainya harus lebih besar dari atau sama dengan 0
dan nilai default diatur ke 1
.
l1Weight
Berat regularisasi L1. Nilainya harus lebih besar dari atau sama dengan 0
dan nilai default diatur ke 1
.
optTol
Nilai ambang batas untuk konvergensi pengoptimal. Jika perbaikan antara perulangan kurang dari ambang batas, algoritma akan berhenti dan mengembalikan model saat ini. Nilai yang lebih kecil lebih lambat, tetapi lebih akurat. Nilai defaultnya adalah 1e-07
.
memorySize
Ukuran memori untuk L-BFGS, menentukan jumlah posisi dan gradien sebelumnya yang akan disimpan untuk komputasi langkah berikutnya. Parameter pengoptimalan ini membatasi jumlah memori yang digunakan untuk menghitung besaran dan arah langkah berikutnya. Saat Anda menentukan lebih sedikit memori, pelatihan berjalan lebih cepat tetapi kurang akurat. Harus lebih besar dari atau sama dengan 1
dan nilai defaultnya adalah 20
.
initWtsScale
Mengatur diameter bobot awal yang menentukan rentang dari mana nilai digambar untuk bobot awal. Bobot ini diinisialisasi secara acak dari dalam rentang ini. Misalnya, jika diameter ditentukan menjadi d
, maka bobot didistribusikan secara seragam antara -d/2
dan d/2
. Nilai defaultnya adalah 0
, yang menentukan bahwa semua bobot diinisialisasi ke 0
.
maxIterations
Mengatur jumlah maksimum perulangan. Setelah jumlah langkah ini, algoritma berhenti bahkan jika belum memenuhi kriteria konvergensi.
showTrainingStats
Tentukan TRUE
untuk memperlihatkan statistik data pelatihan dan model terlatih; jika tidak, FALSE
. Nilai defaultnya adalah FALSE
. Untuk informasi tambahan tentang statistik model, lihat summary.mlModel.
sgdInitTol
Atur ke angka yang lebih besar dari 0 untuk menggunakan Stochastic Gradient Descent (SGD) untuk menemukan parameter awal. Set nilai bukan nol menentukan toleransi yang digunakan SGD untuk menentukan konvergensi. Nilai default menentukan 0
bahwa SGD tidak digunakan.
trainThreads
Jumlah utas yang akan digunakan dalam melatih model. Ini harus diatur ke jumlah inti pada komputer. Perhatikan bahwa multi-utas L-BFGS mencoba memuat himpunan data ke dalam memori. Jika terjadi masalah kehabisan memori, atur trainThreads
ke 1
untuk menonaktifkan multi-utas. Jika NULL
jumlah utas yang akan digunakan ditentukan secara internal. Nilai defaultnya adalah NULL
.
denseOptimizer
Jika TRUE
, memaksa kepadatan vektor pengoptimalan internal. Jika FALSE
, memungkinkan pengoptimal regresi logistik menggunakan status internal yang jarang atau padat karena menurutnya sesuai. Pengaturan denseOptimizer
untuk TRUE
mengharuskan pengoptimal internal menggunakan keadaan internal yang padat, yang dapat membantu meringankan beban pada pengumpul sampah untuk beberapa varietas masalah yang lebih besar.
normalize
Menentukan jenis normalisasi otomatis yang digunakan:
"auto"
: jika normalisasi diperlukan, itu dilakukan secara otomatis. Ini adalah pilihan default."no"
: tidak ada normalisasi yang dilakukan."yes"
: normalisasi dilakukan."warn"
: jika normalisasi diperlukan, pesan peringatan ditampilkan, tetapi normalisasi tidak dilakukan.
Normalisasi menskalakan ulang rentang data yang berbeda dengan skala standar. Penskalaan fitur memastikan jarak antara titik data proporsional dan memungkinkan berbagai metode pengoptimalan seperti penurunan gradien untuk berkonversi jauh lebih cepat. Jika normalisasi dilakukan,MaxMin
normalizer digunakan. Ini menormalkan nilai dalam interval [a, b] di mana-1 <= a <= 0
danb - a = 1
0 <= b <= 1
. Normalizer ini mempertahankan sparsitas dengan memetakan nol ke nol.
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
Regresi Logistik adalah metode klasifikasi yang digunakan untuk memprediksi nilai variabel dependen kategoris dari hubungannya ke satu atau beberapa variabel independen yang diasumsikan memiliki distribusi logistik. Jika variabel dependen hanya memiliki dua nilai yang mungkin (berhasil/gagal), maka regresi logistik adalah biner. Jika variabel dependen memiliki lebih dari dua nilai yang mungkin (jenis darah yang diberikan hasil tes diagnostik), regresi logistik adalah multinomial.
Teknik pengoptimalan yang digunakan untuk rxLogisticRegression
adalah memori terbatas Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Algoritma L-BFGS dan BFGS reguler menggunakan metode kuasi-Newtonian untuk memperkirakan matriks Hessian yang intensif secara komputasi dalam persamaan yang digunakan oleh metode Newton untuk menghitung langkah-langkah. Tetapi perkiraan L-BFGS hanya menggunakan jumlah memori terbatas untuk menghitung arah langkah berikutnya, sehingga sangat cocok untuk masalah dengan sejumlah besar variabel. Parameter memorySize
menentukan jumlah posisi dan gradien sebelumnya untuk disimpan untuk digunakan dalam komputasi langkah berikutnya.
Pelajar ini dapat menggunakan regularisasi bersih elastis: kombinasi linier regularisasi L1 (lasso) dan L2 (ridge). Regularisasi adalah metode yang dapat membuat masalah yang tidak dapat ditelusuri lebih dapat ditelusuri dengan memberlakukan batasan yang memberikan informasi untuk melengkapi data dan yang mencegah overfitting dengan menghukus model dengan nilai koefisien ekstrem. Ini dapat meningkatkan generalisasi model yang dipelajari dengan memilih kompleksitas optimal dalam tradeoff varians bias. Regularisasi bekerja dengan menambahkan penalti yang terkait dengan nilai koefisien ke kesalahan hipotesis. Model yang akurat dengan nilai koefisien ekstrem akan dikenakan sanksi lebih banyak, tetapi model yang kurang akurat dengan nilai yang lebih konservatif akan dikenakan sanksi lebih sedikit. Regularisasi L1 dan L2 memiliki efek dan penggunaan yang berbeda yang saling melengkapi dalam hal-hal tertentu.
l1Weight
: dapat diterapkan ke model jarang, saat bekerja dengan data dimensi tinggi. Ini menarik bobot kecil terkait fitur yang relatif tidak penting terhadap 0.
l2Weight
: lebih disukai untuk data yang tidak jarang. Ini menarik bobot besar menuju nol.
Menambahkan penalti ridge ke regularisasi mengatasi beberapa lasso
Keterbatasan. Ini dapat meningkatkan akurasi prediktifnya, misalnya, ketika jumlah prediktor lebih besar dari ukuran sampel.
Jika x = l1Weight
dan y = l2Weight
, ax + by = c
mendefinisikan rentang linier dari istilah regularisasi. Nilai default x dan y keduanya 1
adalah . Regularisasi agresif dapat membahayakan kapasitas prediktif dengan mengecualikan variabel penting dari model. Jadi memilih nilai optimal untuk parameter regularisasi penting untuk performa model regresi logistik.
Nilai
rxLogisticRegression
: Objek rxLogisticRegression
dengan model terlatih.
LogisticReg
: Objek spesifikasi pelajar kelas maml
untuk pelatih Reg Logistik.
Catatan
Algoritma ini akan mencoba memuat seluruh himpunan data ke dalam memori saat trainThreads > 1
(multi-utas).
Penulis
Microsoft Corporation Microsoft Technical Support
Referensi
Training of L1-Regularized Log-Linear Models
and L2 Regularization for Machine Learning
Lihat juga
rxFastTrees, rxFastForest, rxFastLinear, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.
Contoh
# Estimate a logistic regression model
logitModel <- rxLogisticRegression(isCase ~ age + parity + education + spontaneous + induced,
transforms = list(isCase = case == 1),
data = infert)
# Print a summary of the model
summary(logitModel)
# Score to a data frame
scoreDF <- rxPredict(logitModel, data = infert,
extraVarsToWrite = "isCase")
# Compute and plot the Radio Operator Curve and AUC
roc1 <- rxRoc(actualVarName = "isCase", predVarNames = "Probability", data = scoreDF)
plot(roc1)
rxAuc(roc1)
#######################################################################################
# Multi-class logistic regression
testObs <- rnorm(nrow(iris)) > 0
testIris <- iris[testObs,]
trainIris <- iris[!testObs,]
multiLogit <- rxLogisticRegression(
formula = Species~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
type = "multiClass", data = trainIris)
# Score the model
scoreMultiDF <- rxPredict(multiLogit, data = testIris,
extraVarsToWrite = "Species")
# Print the first rows of the data frame with scores
head(scoreMultiDF)
# Look at confusion matrix
table(scoreMultiDF$Species, scoreMultiDF$PredictedLabel)
# Look at the observations with incorrect predictions
badPrediction = scoreMultiDF$Species != scoreMultiDF$PredictedLabel
scoreMultiDF[badPrediction,]