rxLogisticRegression: Logistic Regression

Machine Learning Lojistik Regresyonu

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

Argümanlar

formula

rxFormula'da tanımlandığı formül. Etkileşim terimleri mevcut F()olarak MicrosoftML'de desteklenmemektedir.

data

.xdf dosyası veya veri çerçevesi nesnesini belirten bir veri kaynak nesnesi veya karakter dizisi.

type

Lojistik Regresyon türünü belirten karakter dizesi: "binary" varsayılan ikili sınıflandırma lojistik regresyonu veya "multi" çok terimli lojistik regresyon için.

l2Weight

L2 düzenlileştirme ağırlığı. Değeri büyüktür veya değerine eşit 0 olmalıdır ve varsayılan değer olarak 1ayarlanır.

l1Weight

L1 düzenlileştirme ağırlığı. Değeri büyüktür veya değerine eşit 0 olmalıdır ve varsayılan değer olarak 1ayarlanır.

optTol

İyileştirici yakınsama için eşik değeri. Yinelemeler arasındaki iyileştirme eşikten küçükse algoritma durur ve geçerli modeli döndürür. Daha küçük değerler daha yavaştır, ancak daha doğru olur. 1e-07 varsayılan değerdir.

memorySize

L-BFGS için bellek boyutu, sonraki adımın hesaplaması için depolanması gereken geçmiş konumların ve gradyanların sayısını belirtir. Bu iyileştirme parametresi, bir sonraki adımın büyüklüğünü ve yönünü hesaplamak için kullanılan bellek miktarını sınırlar. Daha az bellek belirttiğinizde eğitim daha hızlı ama daha az doğru olur. değerinden büyük veya buna eşit 1 olmalıdır ve varsayılan değer şeklindedir 20.

initWtsScale

İlk ağırlıklar için değerlerin çekildiği aralığı belirten ilk ağırlık çapını ayarlar. Bu ağırlıklar bu aralığın içinden rastgele başlatılır. Örneğin, çap olarak dbelirtilirse ağırlıklar ile -d/2arasında d/2 eşit olarak dağıtılır. Varsayılan değer, 0tüm ağırlıkların olarak 0başlatıldığını belirten değeridir.

maxIterations

En fazla yineleme sayısını ayarlar. Bu sayıda adımdan sonra, yakınsama ölçütünü karşılamamış olsa bile algoritma durdurulur.

showTrainingStats

Eğitim verilerinin ve eğitilen modelin istatistiklerini göstermek için belirtin TRUE ; aksi takdirde , FALSE. FALSE varsayılan değerdir. Model istatistikleri hakkında ek bilgi için summary.mlModel adresine bakınız.

sgdInitTol

İlk parametreleri bulmak için Stokastik Gradyan Azalma (SGD) kullanmak için 0'dan büyük bir sayıya ayarlayın. Sıfır olmayan bir değer kümesi, SGD'nin yakınsama belirlemek için kullandığı toleransı belirtir. Varsayılan değer, 0 SGD'nin kullanılmadığını belirtir.

trainThreads

Modeli eğitmek için kullanılacak iş parçacığı sayısı. Bu, makinedeki çekirdek sayısına ayarlanmalıdır. L-BFGS çoklu iş parçacığı oluşturmanın veri kümesini belleğe yüklemeyi denediğini unutmayın. Yetersiz bellek sorunları söz konusu olduğunda, çoklu iş parçacığını kapatmak için olarak ayarlayın trainThreads1 . Kullanılacak iş parçacığı sayısı dahili olarak belirlenirse NULL . NULL varsayılan değerdir.

denseOptimizer

ise TRUE, iç iyileştirme vektörlerinin reddedilmesini zorlar. ise FALSE, lojistik regresyon iyileştiricisinin uygun bulduğu şekilde seyrek veya yoğun iç durumları kullanmasını sağlar. ayarı denseOptimizerTRUE , iç iyileştiricinin yoğun bir iç durum kullanmasını gerektirir ve bu da bazı büyük sorun türleri için çöp toplayıcı üzerindeki yükü hafifletmeye yardımcı olabilir.

normalize

Kullanılan otomatik normalleştirme türünü belirtir:

  • "auto": normalleştirme gerekiyorsa otomatik olarak gerçekleştirilir. Bu varsayılan seçenektir.
  • "no": normalleştirme yapılmaz.
  • "yes": normalleştirme gerçekleştirilir.
  • "warn": normalleştirme gerekiyorsa, bir uyarı iletisi görüntülenir, ancak normalleştirme gerçekleştirilmez.
    Normalleştirme, farklı veri aralıklarını standart bir ölçeğe yeniden ölçeklendirir. Özellik ölçeklendirme, veri noktaları arasındaki mesafelerin orantılı olmasını sağlar ve gradyan azalma gibi çeşitli iyileştirme yöntemlerinin çok daha hızlı yakınsamasını sağlar. Normalleştirme yapılırsa bir MaxMin normalleştirici kullanılır. Değerleri [a, b] aralığında normalleştirir, burada -1 <= a <= 0ve 0 <= b <= 1 ve b - a = 1. Bu normalleştirici sıfırdan sıfıra eşleyerek sparsity'yi korur.

mlTransforms

Eğitim öncesi veya NULL dönüşüm yapılmayacaksa veri üzerinde yapılacak MicrosoftML dönüşümlerinin listesini belirtir. desteklenen dönüşümler için featurizeText, categorical ve categoricalHash bölümlerine bakınız. Bu dönüşümler, herhangi bir belirtilen R dönüşümünden sonra gerçekleştirilir. NULL varsayılan değerdir.

mlTransformVars

Kullanılacak veya NULL kullanılmayacaksa değişken isimlerinden mlTransforms oluşan bir karakter vektörünü belirtir. NULL varsayılan değerdir.

rowSelection

Model tarafından veri kümesindeki bir mantıksal değişkenin adıyla (tırnak içinde) veya veri kümesindeki değişkenleri kullanan bir mantıksal ifadeyle kullanılacak satırları (gözlemleri) belirtir. Örneğin, rowSelection = "old" yalnızca değişkenin oldTRUEdeğeri olduğu gözlemler kullanılır. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) yalnızca değişkenin değerinin age 20 ile 65 arasında olduğu ve değişkenin değerinin logincome 10'dan büyük olduğu gözlemleri kullanır. Satır seçimi, veri dönüştürmeleri işlendikten sonra gerçekleştirilir (veya bağımsız değişkenlerine transformstransformFuncbakın). Tüm ifadelerde olduğu gibi, rowSelection ifade fonksiyonu kullanılarak fonksiyon çağrısının dışında tanımlanabilir.

transforms

Değişken dönüşümlerinin ilk turunu temsil eden formun list(name = expression, ``...) bir ifadesi. Tüm ifadelerde olduğu gibi, transforms (veya rowSelection) ifade fonksiyonu kullanılarak fonksiyon çağrısının dışında tanımlanabilir.

transformObjects

, transformsve transformsFunctarafından rowSelectionbaşvurulabilen nesneler içeren adlandırılmış liste.

transformFunc

Değişken dönüştürme işlevi. Detaylar için rxTransform'a bakınız.

transformVars

Dönüştürme işlevi için gereken giriş veri kümesi değişkenlerinin karakter vektörleri. Detaylar için rxTransform'a bakınız.

transformPackages

Değişken dönüşüm fonksiyonlarında kullanılmak üzere sunulacak ve önceden yüklenecek ek R paketlerini (içinde rxGetOption("transformPackages")belirtilenlerin dışında) belirten bir karakter vektörüdür. Örneğin, RevoScaleR'de açıkça tanımlananlar, transforms ve transformFunc argümanları aracılığıyla veya örtük olarak onların formula veya argümanları rowSelection ile tanımlananlar. Argüman transformPackages ayrıca , dışarıdaki rxGetOption("transformPackages") hiçbir paketin önceden yüklenmediğini gösteren olabilirNULL.

transformEnvir

Dahili olarak geliştirilen ve değişken veri dönüşümü için kullanılan tüm ortamların üst öğesi olarak görev yapmak için kullanıcı tanımlı bir ortam. Eğer transformEnvir = NULL, bunun yerine ana ile yeni bir "hash" ortamı baseenv() kullanılır.

blocksPerRead

Veri kaynağından okunan her veri öbekleri için okunacak blok sayısını belirtir.

reportProgress

Satır işleme ilerleme durumuyla ilgili raporlama düzeyini belirten bir tamsayı değeri:

  • 0: herhangi bir ilerleme bildirilmemiştir.
  • 1: işlenen satır sayısı yazdırılır ve güncelleştirilir.
  • 2: işlenen satırlar ve zamanlamalar bildirilir.
  • 3: işlenen satırlar ve tüm zamanlamalar bildirilir.

verbose

İstenen çıkış miktarını belirten bir tamsayı değeri. ise 0, hesaplamalar sırasında ayrıntılı çıktı yazdırılmaz. Artan miktarda bilgi sağlamak için 1 olan 4 tamsayı değerleri.

computeContext

Hesaplamaların yürütüleceği bağlamı, geçerli bir RxComputeContext ile belirlenir. Şu anda yerel ve RxInSqlServer hesaplama bağlamları desteklenmektedir.

ensemble

Benzerliği için denetim parametreleri.

...

Ek argümanlar doğrudan Microsoft Compute Engine'e iletilecek.

Ayrıntılar

Lojistik Regresyon, kategorik bağımlı değişkenin bir veya daha fazla bağımsız değişkenle ilişkisinden lojistik dağılıma sahip olduğu varsayılan değeri tahmin etmek için kullanılan bir sınıflandırma yöntemidir. Bağımlı değişkende yalnızca iki olası değer varsa (başarı/başarısızlık), lojistik regresyon ikilidir. Bağımlı değişkenin ikiden fazla olası değeri varsa (tanı testi sonuçları verilen kan grubu), lojistik regresyon çok terimli olur.

için rxLogisticRegression kullanılan iyileştirme tekniği sınırlı bellek Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Hem L-BFGS hem de normal BFGS algoritmaları, Newton'un adımları hesaplamak için kullandığı denklemde hesaplama açısından yoğun Hessian matrisini tahmin etmek için quasi-Newton yöntemlerini kullanır. Ancak L-BFGS yaklaşık değeri, özellikle çok sayıda değişkenle ilgili sorunlar için uygun olması için bir sonraki adım yönünü hesaplamak için yalnızca sınırlı miktarda bellek kullanır. parametresi, memorySize sonraki adımın hesaplamasında kullanılmak üzere depolanması gereken geçmiş konumların ve gradyanların sayısını belirtir.

Bu öğrenci esnek net düzenlileştirmeyi kullanabilir: L1 (kement) ve L2 (sırt) düzenlileştirmelerinin doğrusal bir bileşimi. Normalleştirme, verileri desteklemek için bilgi sağlayan ve aşırı katsayı değerlerine sahip modelleri cezalandırarak fazla uygunluğu önleyen kısıtlamalar getirerek kötü görünen bir sorunu daha çekici hale getirebilen bir yöntemdir. Bu, sapma-varyans dengelenmesinde en uygun karmaşıklığı seçerek öğrenilen modelin genelleştirilmesini iyileştirebilir. Normalleştirme, hipotez hatasına katsayı değerleriyle ilişkili cezayı ekleyerek çalışır. Aşırı katsayı değerlerine sahip doğru bir model daha fazla cezaya neden olur, ancak daha muhafazakar değerlere sahip daha az doğru bir model daha az cezaya neden olur. L1 ve L2 düzenlileştirmenin farklı etkileri ve belirli açılardan tamamlayıcı olan kullanımları vardır.

l1Weight: yüksek boyutlu verilerle çalışırken seyrek modellere uygulanabilir. 0'a yakın nispeten önemsiz olan özelliklere bağlı küçük ağırlıklar çeker.

l2Weight: seyrek olmayan veriler için tercih edilir. Büyük ağırlıkları sıfıra doğru çekiyor.

Düzenlemeye sırt cezası eklendiğinde, lasonun bazı sorunlarını aşıyor
sınırlamalar. Tahmine dayalı doğruluğunu geliştirebilir, örneğin tahmincilerin sayısı örnek boyutundan büyük olduğunda. if x = l1Weight ve y = l2Weightise, ax + by = c normalleştirme terimlerinin doğrusal aralığını tanımlar. Varsayılan x ve y değerleri her ikisi de 1şeklindedir. Agresif bir düzenlileştirme, önemli değişkenleri modelin dışında tutarak tahmine dayalı kapasiteye zarar verebilir. Bu nedenle, normalleştirme parametreleri için en uygun değerlerin seçilmesi lojistik regresyon modelinin performansı için önemlidir.

Değer

rxLogisticRegression: Eğitilmiş modele sahip bir rxLogisticRegression nesne.

LogisticReg: Logistic Reg eğitmeni için sınıfın maml bir öğrenici spesifikasyon nesnesi.

Notlar

Bu algoritma, (çok iş parçacığı) olduğunda trainThreads > 1 veri kümesinin tamamını belleğe yüklemeyi dener.

Yazar(lar)

Microsoft CorporationMicrosoft Technical Support

References

Wikipedia: L-BFGS

regression

Training of L1-Regularized Log-Linear Models

and L2 Regularization for Machine Learning

Ayrıca bakınız

rxFastTrees, rxFastForest, rxFastLinear, rxNeuralNet, rxOneClassSvm, 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,]