लॉजिस्टिक लॉस फंक्शन के लिए ग्रेडिएंट


12

मैं इस एक से संबंधित एक प्रश्न पूछूंगा ।

मुझे यहाँ xgboost के लिए कस्टम लॉस फंक्शन लिखने का एक उदाहरण मिला :

loglossobj <- function(preds, dtrain) {
  # dtrain is the internal format of the training data
  # We extract the labels from the training data
  labels <- getinfo(dtrain, "label")
  # We compute the 1st and 2nd gradient, as grad and hess
  preds <- 1/(1 + exp(-preds))
  grad <- preds - labels
  hess <- preds * (1 - preds)
  # Return the result as a list
  return(list(grad = grad, hess = hess))
}

लॉजिस्टिक लॉस फंक्शन है

log(1+eyP)

जहां लॉग-ऑड है और लेबल (0 या 1) है।Py

मेरा सवाल है: हम कैसे ग्रेडिएंट (पहली व्युत्पन्न) प्राप्त कर सकते हैं जो कि सच्चे मूल्यों और अनुमानित संभावनाओं के बीच अंतर के बराबर है (लॉग-ऑड्स से गणना की जाती है preds <- 1/(1 + exp(-preds)))?


आपको इसे प्राप्त करने के लिए चुकता त्रुटि हानि का उपयोग करना चाहिए। आपका अंकन भ्रामक है और इसे पोस्ट में परिभाषित किया जाना चाहिए। यदि को अनुमानित जोखिम है, तो नुकसान वह है जो आप चाहते हैं। मैं उलझन में हूं क्योंकि हम लॉग-ऑड का मतलब करने के लिए कभी भी का उपयोग नहीं करते हैं । p(yp)2p
एडम

p को पूंजी से तय किया गया था । यह लॉग-ऑड है, और यह प्रश्न में स्पष्ट रूप से चिह्नित है। मैं नुकसान समारोह के लिए कि ढाल पता है , लेकिन यह squred हानि, रसद नहीं है। P(yf(x))2f(x)y
ओगुर्त्सोव

जब आप "ग्रेडिएंट" कहते हैं, तो आप किस ग्रेडिएंट का मतलब समझते हैं? नुकसान की ढाल? यह एक सरल गणितीय संबंध है कि यदि किसी अभिव्यक्ति का व्युत्पन्न एक रैखिक अंतर है, तो अभिव्यक्ति एक द्विघात अंतर है, या चुकता त्रुटि हानि है।
एडम

हां, यह सब नुकसान के बारे में है। यह सरल है, जब नुकसान फ़ंक्शन चुकता त्रुटि है। इस मामले में नुकसान फ़ंक्शन लॉजिस्टिक लॉस ( en.wikipedia.org/wiki/LogitBoost ) है, और मुझे इस फ़ंक्शन के ग्रेडिएंट और दिए गए कोड उदाहरण के बीच पत्राचार नहीं मिल सकता है।
ओगुरुत्सोव

जवाबों:


19

मेरे प्रश्न के लिए मेरा जवाब: हां, यह दिखाया जा सकता है कि लॉजिस्टिक लॉस के लिए ढाल सच्चे मूल्यों और अनुमानित संभावनाओं के बीच अंतर के बराबर है। संक्षिप्त विवरण यहाँ पाया गया था ।

सबसे पहले, लॉजिस्टिक लॉस सिर्फ नकारात्मक लॉग-लाइबिलिटी है, इसलिए हम लॉग-लाइबिलिटी ( पृष्ठ 74) के लिए अभिव्यक्ति के साथ शुरू कर सकते हैं - यह एक्सप्रेशन लॉग-लाइबिलिटी है, न कि नेगेटिव लॉग-लाइबिलिटी)।

L=yilog(pi)+(1yi)log(1pi)

pi लॉजिस्टिक फंक्शन है: , जहां की भविष्यवाणी की जाती है लॉजिस्टिक परिवर्तन से पहले (यानी, लॉग-ऑड्स):pi=11+ey^iy^i

L=yilog(11+ey^i)+(1yi)log(ey^i1+ey^i)

वुल्फराम अल्फा का उपयोग करके प्राप्त किया गया पहला व्युत्पन्न:

L=yi(1yi)ey^i1+ey^i

द्वारा गुणा करने के बाद :ey^iey^i

L=yiey^i+yi11+ey^i=yi(1+ey^i)1+ey^i11+ey^i=yipi

साइन बदलने के बाद हमारे पास लॉजिस्टिक लॉस फ़ंक्शन के ग्रेडिएंट के लिए अभिव्यक्ति है:

piyi

2
क्या आप कॉल कर रहे यहाँ है नहीं की भविष्यवाणी , लेकिन भविष्यवक्ताओं की एक रैखिक संयोजन। सामान्यीकृत रैखिक मॉडलिंग में हम नोटेशन उपयोग करते हैं और इस शब्द को "रैखिक भविष्यवक्ता" कहते हैं। Loglikelihood (स्कोर) का आपका व्युत्पन्न गलत है, हर में एक चुकता शब्द होना चाहिए, क्योंकि बर्नौली एक घातीय संभावना बनाता है। स्कोर फॉर्मy^yν1pi(1pi)(yipi)
AdamO
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.