Bagikan melalui


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 <= 0dan b - a = 10 <= 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 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 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 1adalah . 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

Wikipedia: L-BFGS

regression

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,]