Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 birMaxMinnormalleştirici kullanılır. Değerleri [a, b] aralığında normalleştirir, burada-1 <= a <= 0ve0 <= b <= 1veb - 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
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,]