लॉजिस्टिक रिग्रेशन ऑप्टिमाइज़ेशन के लिए न्यूटन की विधि का उपयोग करना पुनरावृत्त पुन: भारित वर्गों को क्यों कहा जाता है?
यह मुझे स्पष्ट नहीं लगता क्योंकि लॉजिस्टिक लॉस और कम से कम स्क्वायर लॉस पूरी तरह से अलग चीजें हैं।
लॉजिस्टिक रिग्रेशन ऑप्टिमाइज़ेशन के लिए न्यूटन की विधि का उपयोग करना पुनरावृत्त पुन: भारित वर्गों को क्यों कहा जाता है?
यह मुझे स्पष्ट नहीं लगता क्योंकि लॉजिस्टिक लॉस और कम से कम स्क्वायर लॉस पूरी तरह से अलग चीजें हैं।
जवाबों:
सारांश: GLMs फिशर स्कोरिंग के माध्यम से फिट होते हैं , जो कि दिमित्री वी। मास्टरोव नोट्स के रूप में, न्यूटन-राफसन के साथ अपेक्षित हेस्सियन के बजाय है (यानी हम मनाया जानकारी के बजाय फिशर जानकारी के एक अनुमान का उपयोग करते हैं)। यदि हम विहित लिंक फ़ंक्शन का उपयोग कर रहे हैं, तो यह पता चला है कि मनाया गया हेसियन अपेक्षित हेसियन के बराबर है, इसलिए NR और फिशर स्कोरिंग उस मामले में समान हैं। किसी भी तरह से, हम देखेंगे कि फिशर स्कोरिंग वास्तव में एक भारित कम से कम वर्ग रैखिक मॉडल फिट कर रहा है, और इस से गुणांक का अनुमान है * अधिकतम लॉजिस्टिक प्रतिगमन संभावना की ओर। पहले से ही हल की गई समस्या के लिए लॉजिस्टिक रिग्रेशन को फिट करने के अलावा, हमें अपने लॉजिस्टिक रिग्रेशन के बारे में जानने के लिए अंतिम डब्ल्यूएलएस फिट पर रैखिक रिग्रेशन डायग्नोस्टिक्स का उपयोग करने में सक्षम होने का भी लाभ मिलता है।
मैं इसे लॉजिस्टिक रिग्रेशन पर केंद्रित रखने जा रहा हूं, लेकिन GLM में अधिकतम संभावना पर अधिक सामान्य परिप्रेक्ष्य के लिए, मैं इस अध्याय की धारा 15.3 की सिफारिश करता हूं, जो इसके माध्यम से जाता है और एक अधिक सामान्य सेटिंग में IRLS प्राप्त करता है (मुझे लगता है कि यह जॉन फॉक्स के एप्लाइड से है। प्रतिगमन विश्लेषण और सामान्यीकृत रैखिक मॉडल )।
अंत में टिप्पणियाँ देखें
हम फॉर्म कुछ पुनरावृति करके अपनी GLM फिटिंग करेंगे जहां लॉग संभावना है और लॉग संभावना की या तो देखी गई या अपेक्षित हेसियन होगी।
हमारा लिंक फ़ंक्शन एक फ़ंक्शन जो हमारे रैखिक भविष्यवक्ता के लिए सशर्त माध्य को , इसलिए माध्य के लिए हमारा मॉडल । चलो उलटा लिंक मतलब करने के लिए रेखीय भविष्यवक्ता मानचित्रण समारोह हो।
एक लॉजिस्टिक रिग्रेशन के लिए हमारे पास स्वतंत्र टिप्पणियों के साथ एक बर्नौली संभावना है इसलिए व्युत्पन्न,
अब मान लेते हैं कि हम विहित लिंक फ़ंक्शन का उपयोग कर रहे हैं । फिर इसलिए का अर्थ है कि यह सरल करता है so इसके अलावा, अभी भी , ∇ℓ(ख;y)=एक्सटी(y - y )। जग∂2ℓ
चलो तब हमारे पास और ध्यान दें कि इसमें अब कोई नहीं है, इसलिए (हम इसे एक फंक्शन के रूप में देख रहे हैं, इसलिए केवल रैंडम चीज़ ही है) । इस प्रकार हमने दिखाया है कि जब हम लॉजिस्टिक रिग्रेशन में विहित लिंक का उपयोग करते हैं तो फिशर स्कोरिंग न्यूटन-राफसन के बराबर होता है। इसके अलावा, आधार पर हमेशा सख्ती से नकारात्मक निश्चित होगा, हालाँकि संख्यात्मक रूप से अगर बहुत करीब हो जाता है
अब कार्य प्रतिक्रिया बनाएं और ध्यान दें कि
एक साथ इसका अर्थ है कि हम पुनरावृति करके लॉग संभावना को अनुकूलित कर सकते हैं। और बिल्कुल पर भारित कम से कम वर्ग प्रतिगमन के लिए ।
इसमें जाँच R
:
set.seed(123)
p <- 5
n <- 500
x <- matrix(rnorm(n * p), n, p)
betas <- runif(p, -2, 2)
hc <- function(x) 1 /(1 + exp(-x)) # inverse canonical link
p.true <- hc(x %*% betas)
y <- rbinom(n, 1, p.true)
# fitting with our procedure
my_IRLS_canonical <- function(x, y, b.init, hc, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- hc(eta)
h.prime_eta <- y.hat * (1 - y.hat)
z <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z ~ x - 1, weights = h.prime_eta)$coef # WLS regression
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
my_IRLS_canonical(x, y, rep(1,p), hc)
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
glm(y ~ x - 1, family=binomial())$coef
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
और वे सहमत हैं।
अब यदि हम विहित लिंक का उपयोग नहीं कर रहे हैं, तो हमें का का सरलीकरण नहीं मिलता है, इसलिए बहुत अधिक जटिल हो जाता है, और इसलिए हम देखते हैं हमारे फिशर स्कोरिंग में का उपयोग करके एक ध्यान देने योग्य अंतर ।
यहाँ बताया गया है कि यह कैसे होगा: हमने पहले से ही सामान्य काम किया है, इसलिए हेस्सियन मुख्य कठिनाई होगी। हमें
अपेक्षा की रैखिकता के माध्यम से हम सभी को प्राप्त करने की आवश्यकता होती है, अपने मॉडल के तहत की प्रत्येक घटना को प्रतिस्थापित करता है जो कि । सारांश में प्रत्येक शब्द में फॉर्म एक कारक होगा। लेकिन वास्तव में हमारे अनुकूलन को करने के लिए हमें प्रत्येक का अनुमान लगाना होगा , और चरण हमारे पास सबसे अच्छा अनुमान है। इसका मतलब है कि यह कम हो जाएगा
अब और ध्यान दें कि कैसे विहित लिंक के पिछले अनुभाग से से को कम करता है । यह हमें लिखने देता है को छोड़कर यह अब है के बजाय जरूरी किया जा रहा है , जो अपने आप तो यह न्यूटन- Raphson से अलग कर सकते हैं। सभी के लिए तो संख्यात्मक मुद्दों से अलग निश्चित नकारात्मक होगा।
हमारे पास इसलिए हमारी नई कार्य प्रतिक्रिया को साथ , हमारे पास ।
हम सभी मिलकर तो यह अभी भी WLS regressions का एक क्रम है सिवाय इसके कि अब जरूरी नहीं कि न्यूटन-राफसन हो।
मैंने इसे न्यूटन-रफसन के संबंध पर जोर देने के लिए इस तरह लिखा है, लेकिन अक्सर लोग अपडेट को कारक बनाएंगे ताकि प्रत्येक नया बिंदु स्वयं WLS समाधान हो, बजाय एक WLS समाधान जोड़े वर्तमान बिंदु । यदि हम ऐसा करना चाहते हैं, तो हम निम्नलिखित कर सकते हैं: इसलिए यदि हम इस तरह से जा रहे हैं तो आप कार्य प्रतिक्रिया देखेंगे फॉर्म , लेकिन यह एक ही बात है।
आइए पुष्टि करते हैं कि यह उसी सिम्युलेटेड डेटा पर पहले की तरह एक प्रोबेट रिग्रेशन करने के लिए इसका उपयोग करके काम करता है (और यह कैनोनिकल लिंक नहीं है, इसलिए हमें IRLS के इस सामान्य रूप की आवश्यकता है)।
my_IRLS_general <- function(x, y, b.init, h, h.prime, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- h(eta)
h.prime_eta <- h.prime(eta)
w_star <- h.prime_eta^2 / (y.hat * (1 - y.hat))
z_star <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z_star ~ x - 1, weights = w_star)$coef # WLS
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
# probit inverse link and derivative
h_probit <- function(x) pnorm(x, 0, 1)
h.prime_probit <- function(x) dnorm(x, 0, 1)
my_IRLS_general(x, y, rep(0,p), h_probit, h.prime_probit)
# x1 x2 x3 x4 x5
# -0.6456508 1.2520266 0.5820856 0.4982678 -0.6768585
glm(y~x-1, family=binomial(link="probit"))$coef
# x1 x2 x3 x4 x5
# -0.6456490 1.2520241 0.5820835 0.4982663 -0.6768581
और फिर से दोनों सहमत हैं।
अंत में, अभिसरण पर कुछ त्वरित टिप्पणियां (मैं इसे संक्षिप्त रखूंगा क्योंकि यह वास्तव में लंबा हो रहा है और मैं अनुकूलन में कोई विशेषज्ञ नहीं हूं)। भले ही सैद्धांतिक रूप से प्रत्येक नकारात्मक निश्चित है, खराब प्रारंभिक परिस्थितियां अभी भी इस एल्गोरिदम को परिवर्तित करने से रोक सकती हैं। ऊपर दिए गए प्रोबिट उदाहरण में, इस में परिणाम के लिए प्रारंभिक स्थितियों को बदलना , और यह भी एक संदिग्ध प्रारंभिक स्थिति की तरह नहीं दिखता है। यदि आप उस आरंभ और इन सिम्युलेटेड डेटा के साथ IRLS प्रक्रिया के माध्यम से कदम बढ़ाते हैं, तो दूसरी बार लूप के माध्यम से कुछ जो कि ठीक तक गोल होते हैं और इसलिए वजन अपरिभाषित हो जाते हैं। यदि हम एल्गोरिथ्म में विहित लिंक का उपयोग कर रहे हैं, तो मैंने दिया कि हम कभी भी विभाजित नहीं होंगेb.init=rep(1,p)
अपरिभाषित भार प्राप्त करने के लिए, लेकिन अगर हमें ऐसी स्थिति मिली है, जहां कुछ या करीब पहुंच रहे हैं , जैसे कि पूर्ण पृथक्करण के मामले में, तो हम अभी भी गैर-अभिसरण प्राप्त करेंगे क्योंकि ग्रेडिएंट मर जाता है हमारे बिना कुछ भी पहुंचे ।