मैं L1 नुकसान फ़ंक्शन का उपयोग करके आर में एक लॉजिस्टिक?) प्रतिगमन को कैसे प्रशिक्षित करूं?


11

मैं में एक रसद प्रतिगमन प्रशिक्षित कर सकते हैं Rका उपयोग कर

glm(y ~ x, family=binomial(logit)))

लेकिन, IIUC, यह लॉग संभावना के लिए अनुकूलन करता है।

क्या रैखिक ( ) हानि फ़ंक्शन (जो इस मामले में कुल भिन्नता के समान है) का उपयोग करके मॉडल को प्रशिक्षित करने का एक तरीका है ?L1

यानी, यह देखते हुए एक अंकीय वेक्टर और थोड़ा (तार्किक) वेक्टर , मैं एक monotonic निर्माण करने के लिए (वास्तव में, बढ़ रही है) समारोह चाहते ऐसी है किकम से कम किया जाता है।xyf∑|f(x)−y|

यह सभी देखें


आप जो चाहते हैं वह मौजूद नहीं है, और कुंद होने के लिए, इसका कोई मतलब नहीं है। हम विकल्पों पर चर्चा कर सकते हैं लेकिन आपको और अधिक अच्छी तरह से बताने की आवश्यकता है कि आप क्या करने की कोशिश कर रहे हैं। आप एक L1 नुकसान के साथ लॉजिस्टिक मॉडल क्यों फिट करना चाहते हैं?
— user603

@ user603: क्योंकि मैं TVD
— 22:59

आपको लगता है कि द्विपदीय रूप से वितरित डेटा के बजाय लॉजिस्टिक वक्र को फिट करने के बारे में बात की जा रही है - जो कि, रिग्रेशन का एक रूप है , लेकिन मानक के बजाय का उपयोग है। वास्तव में, नुकसान समारोहसुझाव देता है कि अधिकतम नहीं है (यदि ऐसा है, तो यह द्विपद जीएलएम को भ्रामक बनाता है)। दूसरी ओर, अगर यह वास्तव में 0-1 से विवश है, तो नुकसान फ़ंक्शन का कोई मतलब नहीं है। क्या आप कृपया अपनी वास्तविक स्थिति का विवरण दे सकते हैं? एल 2 Σ | f ( x ) - y | 1L1L2∑|f(x)−y|1
— Glen_b -Reinstate मोनिका

कृपया ध्यान दें कि मदद चाहते हैं कि आप नहीं कर पार पद से अधिक साइटों पर एक ही सवाल है, लेकिन बजाय एक ही साइट चुनें। यदि आप बाद में अपना मन बदल लेते हैं कि कौन सी साइट सबसे अच्छी है, तो इसे मॉडरेटर के ध्यान में रखें और इसे स्थानांतरित करने के लिए कहें।
— Glen_b -Reinstate मोनिका

@ गलेन_ बी: मुझे लगता है कि "बिट (तार्किक) वेक्टर वाई" 0/1 प्रतिक्रिया करता है।
— एसडीएस

जवाबों:


21

आप जो करना चाहते हैं वह मौजूद नहीं है क्योंकि यह बेहतर शब्द की कमी के लिए गणितीय रूप से त्रुटिपूर्ण है।

लेकिन पहले, मैं इस बात पर जोर दूंगा कि मुझे क्यों लगता है कि आपके सवाल का आधार ध्वनि है। फिर मैं यह समझाने की कोशिश करूंगा कि मुझे क्यों लगता है कि आप जो निष्कर्ष निकालते हैं, वे लॉजिस्टिक मॉडल की गलतफहमी पर आराम करते हैं और अंत में, मैं एक वैकल्पिक दृष्टिकोण सुझाऊंगा।

मैं निरूपित जाएगा अपने टिप्पणियों (बोल्ड अक्षरों निरूपित वैक्टर) में जो झूठ आयामी अंतरिक्ष (की पहली प्रविष्टि 1 है) के साथ , और के एक नीरस कार्य है , जैसे कहते हैं कि रसद वक्र विचारों को ठीक करने के लिए। शीघ्रता के लिए, मैं सिर्फ यह मानूंगा कि , की तुलना में पर्याप्त रूप से बड़ा है । np x{(xxi,yi)}i=1nnp p<n y i ∈[0,1]f( x)xxip<nyi∈[0,1]xf(xxi)=f(xxi′ββ) एन पीxxi′ββnp

आप सही हैं कि यदि आप फिट किए गए मॉडल का मूल्यांकन करने के लिए मानदंड के रूप में टीवीडी का उपयोग करने का इरादा रखते हैं , तो यह आपके डेटा पर सभी संभावित उम्मीदवारों के बीच उसी मानदंड को अनुकूलित करने के लिए आपके फिट की उम्मीद करना उचित है। इसलिये

ββ∗=arg⁡minββ∈Rp||yy−f(xxi′ββ)||1

समस्या त्रुटि शब्द है : और यदि हम (हम केवल एक मॉडल को रूप से निष्पक्ष होना चाहते हैं ), तब, चाहिए होना heteroskedastic । ऐसा इसलिए है क्योंकि केवल दो मानों को ले सकता है, 0 और 1. इसलिए, दिए गए , भी केवल दो मान ले सकते हैं: जब । जो प्रायिकता , और जबई ( εϵi=yi−f(xxi′ββ)ϵ i y i xE(ϵϵ)=0ϵi yiε मैं 1-च( एक्सxxiϵiy i = 1 f ( x)1−f(xxi′ββ)yi=1- एफ ( एक्स)f(xxi′ββ)y मैं = 1 1 - च ( एक्स−f(xxi′ββ)yi=1, जो प्रायिकता ।1−f(xxi′ββ)

ये विचार एक साथ हैं कि:

var(ϵϵ)=E(ϵϵ2)=(1−f(xx′ββ))2f(xx′ββ)+(−f(xx′ββ))2(1−f(xx′ββ))=(1−f(xx′ββ))f(xx′ββ)=E(yy|xx)E(1−yy|xx)

इसलिए स्थिर नहीं है, लेकिन अवतल परवलय के आकार का है और अधिकतम अधिकतम हो जाता है जब ऐसा होता है कि ।xvar(ϵϵ) E ( y | x |xxE(y|xx)≈.5

अवशिष्टों की इस अंतर्निहित हेटेरोसेडासिटी के परिणाम हैं । इसका तात्पर्य अन्य बातों के साथ है कि जब नुकसान के फंक्शन को कम किया है, तो आप अपने नमूने के समान रूप से अधिक भार वाले भाग होते हैं। अर्थात्, फिट किया गया डेटा को बिल्कुल भी फिट नहीं करता है, लेकिन इसका केवल एक भाग उन स्थानों के आसपास है जहां ऐसा है कि । बुद्धि के लिए, ये आपके नमूने में सबसे कम सूचनात्मक डेटा बिंदु हैं : वे उन टिप्पणियों के अनुरूप हैं जिनके लिए शोर घटक सबसे बड़ा है। इसलिए, आपका फिट ओर खींचा गया है , जैसे अप्रासंगिक।βl1एक्सββ∗ ई ( y)xxβE(yy|xx)≈.5ββ∗=ββ:f(xx′ββ)≈.5

एक समाधान, जैसा कि ऊपर के एक्सपोजर से स्पष्ट है, निष्पक्ष-नेस की आवश्यकता को छोड़ना है। अनुमानक को पूर्वाग्रह करने का एक लोकप्रिय तरीका (कुछ बायेसियन व्याख्या के साथ संलग्न) एक संकोचन शब्द शामिल है। यदि हम प्रतिक्रिया को पुनः स्केल करते हैं:

yi+=2(yi−.5),1≤i≤n

और कम्प्यूटेशनल लिए, एक और मोनोटोन फंक्शन द्वारा को - यह रूप में पैरामीटर के वेक्टर के पहले घटक को दर्शाने के लिए अगली कड़ी के लिए सुविधाजनक होगा और शेष वाले - और एक संकोचन शब्द (उदाहरण के लिए एक फॉर्म) ), परिणामी अनुकूलन समस्या बन जाती है:जी ( xf(xx′ββ)g(xx,[c,γγ])=xx′[c,γγ]cp−1γγ||γγ||2

[c∗,γγ∗]=arg⁡min[[c,γγ]∈Rp∑i=1nmax(0,1−yi+xxi′[[c,γγ])+12||γγ||2

नोट इस नए (भी उत्तल) अनुकूलन समस्या, एक सही ढंग से वर्गीकृत टिप्पणियों के लिए जुर्माना 0 और इसके साथ रैखिक बढ़ता है कि में एक मिस-वर्गीकृत एक --as के लिए नुकसान। इस दूसरे अनुकूलन समस्या का समाधान मनाया रैखिक SVM कर रहे हैं (के साथ पूर्ण जुदाई) गुणांक। जैसा कि विरोध किया गया है , यह इन टाइप पेनल्टी ('टाइप') के साथ डेटा से जानने के लिए समझ में आता है (पूर्वाग्रह के कारण 'टाइप') । नतीजतन, इस समाधान को व्यापक रूप से लागू किया गया है। उदाहरण के लिए R पैकेज LiblineaR देखें ।एल 1 [ ग * , γxx′[[c,γ]l1 β[c∗,γγ∗] [ ग * , γββ∗[c∗,γγ∗]


काश मैं आप की तुलना में अधिक 25 अंक :-) दे सकता है
— एसडीएस

@sds; धन्यवाद: यह एक महान सवाल था :) मैं दिन के दौरान वापस आऊंगा और विवरण भरूंगा, कुछ टाइपो को सही करूंगा।
— user603

8

मुझे यकीन नहीं है कि आप 0 और 1 के बीच की किसी चीज़ के लिए L1 के नुकसान का उपयोग क्यों करना चाहते हैं। 1. इस बात पर निर्भर करता है कि आपका लक्ष्य क्या है, आप इसके बजाय काज हानि जैसे कुछ पर विचार करना चाह सकते हैं, जो एक दिशा और फ्लैट में L1 के नुकसान के समान है। अन्य में।

किसी भी स्थिति में, नीचे दिए गए कोड को वही करना चाहिए जो आपने पूछा है। ध्यान दें कि इष्टतम प्रतिक्रिया मूल रूप से एक चरण फ़ंक्शन है।

set.seed(1)

# Fake data
x = seq(-1, 1, length = 100)
y = rbinom(100, plogis(x), size = 1) # plogis is the logistic function

# L1 loss
loss = function(y, yhat){
  sum(abs(y - yhat))
}

# Function to estimate loss associated with a given slope & intercept
fn = function(par){
  a = par[1]
  b = par[2]
  loss(y = y, yhat = plogis(a + b * x))
}

# Find the optimal parameters
par = optim(
  par = c(a = 0, b = 0),
  fn = fn
)$par

# Plot the results
plot(y ~ x)
curve(plogis(par[1] + par[2] * x), add = TRUE, n = 1000)

0

आप L1, L2 मॉडल की फिटिंग के लिए glmnet पैकेज का उपयोग कर सकते हैं। यह लॉजिस्टिक रिग्रेशन तक सीमित नहीं है बल्कि इसमें शामिल है।

यहाँ विगनेट है: http://web.stanford.edu/~hastie/glmnet/glmnet_ppha.html

एक वेबमिनार भी है: https://www.youtube.com/watch?v=BU2gjoLPfDc

लिब्लाइनियर अच्छा है, लेकिन मैंने शुरुआत करने के लिए glmnet को आसान पाया है। Glmnet में एक फ़ंक्शन शामिल होता है, जो क्रॉस-वेलिडेशन करता है और AUC जैसे विभिन्न मेट्रिक्स में स्थित आपके लिए एक नियमितीकरण पैरामीटर का चयन करता है।

सिद्धांत के बारे में, मैं लैस्सो (एल 1 नियमितीकरण) और सांख्यिकीय सीखने के तत्वों में अध्याय के बारे में टिब्शारिनी पेपर पढ़ूंगा। http://statweb.stanford.edu/~tibs/lasso/lasso.pdf

लॉग नुकसान के बारे में, यह सिर्फ मॉडल का मूल्यांकन करने के लिए है। यह मॉडल फिटिंग के लिए एक हानि कार्य नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.