rxRegresiLogistik: Regresi Logistik

Regresi Logistik Pembelajaran Mesin

Usage

  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 data frame.

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 peningkatan antar iterasi 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. Ketika Anda menentukan lebih sedikit memori, pelatihan 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 iterasi. Setelah jumlah langkah ini, algoritma berhenti bahkan jika belum memenuhi kriteria konvergensi.

showTrainingStats

Tentukan TRUE untuk menampilkan 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 di luar memori, atur trainThreads ke 1 untuk menonaktifkan multi-utas. Jika NULL jumlah thread yang digunakan ditentukan secara internal. Nilai defaultnya adalah NULL.

denseOptimizer

Jika TRUE, memaksa densifikasi 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 menormalisasi nilai dalam interval [a, b] di mana -1 <= a <= 0dan 0 <= b <= 1 dan b - a = 1. Normalizer ini mempertahankan sparitas dengan memetakan nol hingga nol.

mlTransforms

Menentukan daftar transformasi MicrosoftML yang akan dilakukan pada data sebelum pelatihan atau NULL jika tidak ada transformasi yang akan dilakukan. Lihat fitur featurizeText, categorical, dan categoricalHash, untuk transformasi yang didukung. Transformasi ini dilakukan setelah transformasi R yang ditentukan. Nilai defaultnya adalah NULL.

mlTransformVars

Menentukan vektor karakter dari nama variabel yang akan digunakan dalam mlTransforms atau NULL jika tidak ada yang 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 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 dari bentuk list(name = expression, ``...) yang mewakili putaran pertama transformasi variabel. Seperti halnya 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, , transformsFuncdan 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 di rxGetOption("transformPackages")) yang akan tersedia dan dimuat sebelumnya untuk digunakan dalam fungsi transformasi variabel. Misalnya, yang secara eksplisit didefinisikan dalam fungsi RevoScaleR melalui argumen their transforms and transformFunc atau yang didefinisikan secara implisit melalui argumen their formula or rowSelection . Argumen transformPackages tersebut juga dapat berupa NULL, yang menunjukkan bahwa tidak ada paket di luar yang rxGetOption("transformPackages") sudah 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 waktunya 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.

computeContext

Mengatur konteks di mana komputasi dieksekusi, yang ditentukan dengan RxComputeContext yang valid. Saat ini konteks komputasi lokal dan RxInSqlServer didukung.

ensemble

Parameter kontrol untuk ansambel.

...

Argumen tambahan yang harus langsung diteruskan ke Microsoft Compute Engine.

Rincian

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), maka 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 intensif 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 yang akan disimpan untuk digunakan dalam komputasi langkah berikutnya.

Pelajar ini dapat menggunakan regularisasi jaring elastis: kombinasi linear dari regularisasi L1 (lasso) dan L2 (punggung bukit). Regularisasi adalah metode yang dapat merender masalah yang tidak mungkin lebih dapat dilacak 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 dihukum lebih banyak, tetapi model yang kurang akurat dengan nilai yang lebih konservatif akan dihukum lebih sedikit. Regularisasi L1 dan L2 memiliki efek dan penggunaan yang berbeda yang saling melengkapi dalam hal tertentu.

l1Weight: dapat diterapkan ke model jarang, saat bekerja dengan data dimensi tinggi. Fitur ini menarik perhatian kecil pada fitur yang relatif tidak penting terhadap 0.

l2Weight: lebih disukai untuk data yang tidak jarang. Itu menarik beban 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 adalah 1. 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 peserta didik untuk pelatih maml Logistic Reg.

Notes

Algoritma ini akan mencoba memuat seluruh himpunan data ke dalam memori saat trainThreads > 1 (multi-utas).

Penulis

Microsoft CorporationMicrosoft Technical Support

References

Wikipedia: L-BFGS

regression

Training of L1-Regularized Log-Linear Models

and L2 Regularization for Machine Learning

Baca juga

rxFastTrees, rxFastForest, rxFastLinear, rxNeuralNet, rxOneClassSvm, fitur featurizeText, categorical, categoricalHash, rxPredict.mlModel.

Examples


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