আর - লাসো রিগ্রেশন - রেজিস্ট্রার প্রতি আলাদা লাম্বদা


11

আমি নিম্নলিখিতটি করতে চাই:

1) বিটা ওলস রিগ্রেশন (কোনও দণ্ডের শর্ত নেই) ; হ'ল রিগ্রাস করার জন্য ব্যবহৃত ভেরিয়েবলগুলি। আমি এটি দ্বারা জেbj∗j

lm.model = lm(y~ 0 + x)
betas    = coefficients(lm.model)

২) দন্ডের মেয়াদ সহ লাসো রিগ্রেশন, নির্বাচনের মানদণ্ড বায়েশিয়ান ইনফরমেশন মাপদণ্ড (বিআইসি) হইবে, প্রদত্ত

λj=log⁡(T)T|bj∗|

যেখানে হ'ল ভেরিয়েবল / রিগ্রসর নম্বর, পর্যবেক্ষণের সংখ্যার জন্য এবং পদক্ষেপ 1 এ প্রাপ্ত প্রাথমিক বিটাগুলির জন্য)। আমি এই নির্দিষ্ট মানের জন্য রিগ্রেশন ফলাফল পেতে চাই , যা প্রতিটি প্রতিবেদকের জন্য আলাদা। সুতরাং যদি তিনটি ভেরিয়েবল হয় তবে তিনটি পৃথক মান থাকবে ।টি বি ∗ জ λ জ λ জjTbj∗λjλj

এরপরে ওএলএস-লাসো অপ্টিমাইজেশন সমস্যাটি দেওয়া হয়

minbϵRn={∑t=1T(yt−b⊤Xt)2+T∑j=1m(λt|bj|)}

লার্জ বা গ্ল্যামনেট প্যাকেজটি দিয়ে আমি কীভাবে এটি আর করতে পারি? আমি ল্যাম্বদা নির্দিষ্ট করার কোনও উপায় খুঁজে পাচ্ছি না এবং আমি যদি চালাই তবে সঠিক ফলাফল পাওয়া যায় কিনা তা আমি 100% নিশ্চিত নই

lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")

আমি এখানে কোন সাহায্যের প্রশংসা করি।


হালনাগাদ:

আমি এখন নিম্নলিখিত কোড ব্যবহার করেছি:

fits.cv = cv.glmnet(x,y,type="mse",penalty.factor = pnlty)
lmin    = as.numeric(fits.cv[9]) #lambda.min
fits    = glmnet(x,y, alpha=1, intercept=FALSE, penalty.factor = pnlty)
coef    = coef(fits, s = lmin)

লাইন 1 এ আমি আমার নির্দিষ্ট পেনাল্টি ফ্যাক্টর ( λ j = লগ ( টি ) দিয়ে ক্রস বৈধতা ব্যবহার করি), যা প্রতিটি নিবন্ধকের জন্য পৃথক। লাইন 2 ফিটস.সি.ভি. এর "ল্যাম্বদা.মিন" নির্বাচন করে, এটি ল্যাম্বডা যা ন্যূনতম গড় ক্রস-বৈধকরণ ত্রুটি দেয়। লাইন 3ডেটাতেলাসো ফিট ()সম্পাদনকরে। আবার আমি শাস্তি ফ্যাক্টর ব্যবহৃতλ। লাইন 4লাইন 2 এ নির্বাচিত"অনুকূল" - এর সাথে সম্পর্কিতফিটগুলির সহগগুলি বের করে।λj=log⁡(T)T|bj∗|alpha=1λλ

এখন আমার কাছে রেজিস্ট্রারদের জন্য বিটা সহগ রয়েছে যা মিনিমাইজেশন সমস্যার অনুকূল সমাধান চিত্রিত করে

minbϵRn={∑t=1T(yt−b⊤Xt)2+T∑j=1m(λt|bj|)}

পেনাল্টি ফ্যাক্টর সহ । সহগের সর্বোত্তম সেটটি সম্ভবত রেজিস্ট্রারগুলির একটি উপসেট যা আমি প্রাথমিকভাবে ব্যবহার করেছি, এটি লাসো পদ্ধতির একটি পরিণতি যা ব্যবহৃত রেজিস্ট্রারগুলির সংখ্যা হ্রাস করে।λj=log⁡(T)T|bj∗|

আমার বোঝার এবং কোডটি কি সঠিক?


2
আপনি ডলারের চিহ্নগুলিতে আবদ্ধ আপনার পোস্টে ল্যাটেক্স মার্কআপ ব্যবহার করতে পারেন। $\alpha$হয়ে যায় । দয়া করে এটি তৈরি করুন, কারণ এটি আপনার প্রশ্নটি আরও সহজেই মানুষকে বুঝতে সক্ষম করে তুলবে এবং তাই এর উত্তর দিন। α
— সাইকোরাক্স মনিকাকে

উত্তর:


15

থেকে glmnetডকুমেন্টেশন ( ?glmnet), আমরা দেখতে যে এটা ডিফারেনশিয়াল সংকোচন সঞ্চালন করা সম্ভব। এটি আমাদের ওপির প্রশ্নের উত্তর দেওয়ার জন্য অন্ততপক্ষে অংশ দেয়।

penalty.factor: প্রতিটি সহগের জন্য পৃথক পৃথক পেনাল্টি কারণ প্রয়োগ করা যেতে পারে। এটি এমন একটি সংখ্যা যা lambdaডিফারেনশিয়াল সংকোচনের অনুমতি দেয় multip কিছু ভেরিয়েবলের জন্য 0 হতে পারে যা সংকোচনের ইঙ্গিত দেয় না এবং সেই পরিবর্তনশীলটি সর্বদা মডেলটিতে অন্তর্ভুক্ত থাকে। ডিফল্ট সমস্ত ভেরিয়েবলের জন্য 1 (এবং তালিকাভুক্ত ভেরিয়েবলের জন্য স্পষ্টতই অনন্ত exclude)। দ্রষ্টব্য: জরিমানার কারণগুলি সংখ্যার জন্য অভ্যন্তরীণভাবে পুনরুদ্ধার করা হয় nvars, এবং lambdaক্রমটি এই পরিবর্তনটি প্রতিফলিত করবে।

প্রশ্নের পুরো উত্তর দেওয়ার জন্য, তবে আমি মনে করি যে আপনি কী অর্জন করতে চান তার উপর নির্ভর করে আপনার কাছে দুটি পন্থা উপলব্ধ।

  1. glmnetλpenalty.factorλbjϕj=log⁡TT|bj∗|ϕjbjpenalty.factorCϕj=ϕj′m=C∑j=1mlog⁡TT|bj∗|ϕj′ϕjসিφঞ'glmnetλ=1coef(model, s=1, exact=T)

  2. glmnetটλλ=0খλλ

glmnetλλcoef(fits,s=something)λsomethingλ

λcv.glmnetglmnetpenalty.factor

এই পদ্ধতিটি অনুকূলিত করে

সর্বনিম্নখ∈আরমিΣটি=1টি(Yটি-খ⊤এক্সটি)2+ +λΣঞ=1মি(φঞ|খঞ|)

φঞঞটিজpenalty.factorλφঞλφλφλখλ

এটি মূলত glmnetআমি এটি বুঝতে পেরেছি তার প্রেরণা : একটি রিগ্রেশন মডেলটি অনুমান করার জন্য শাস্তিযুক্ত রিগ্রেশন ব্যবহার করা যা এটির নমুনা বহির্ভূত কর্মক্ষমতা সম্পর্কে অতিরিক্ত-আশাবাদী নয়। যদি এটি আপনার লক্ষ্য হয় তবে সম্ভবত এটি আপনার জন্য সর্বোত্তম পদ্ধতি।


+1 এটি সঠিক। আমি আরও যোগ করব যে রিগ্রেশন নিয়মিতকরণকে আগে বেইসিয়ান হিসাবে দেখা যেতে পারে, অর্থাৎ সর্বাধিক একটি পোস্টেরিয়েরি (এমএপি) সর্বাধিক লাইকিনিটি (এমএল) নিয়মিত করা হয়। সেই কাঠামোয় কাজ করা নিয়মিতকরণের প্রয়োজন হওয়ার পরে নিজেকে আরও নমনীয়তা দেয়।
— টিএলজে

যদি আমি রান pnlty = log(24)/(24*betas); fits = glmnet(x,y, alpha=1, intercept=FALSE, penalty.factor = pnlty) করি তবে আমি কীভাবে রেজিস্ট্রার বিটাগুলি বের করব যা আমি উল্লেখ করা ল্যাম্বদার সাথে সামঞ্জস্য করি, কারণ লম্বাটি প্রতিটি ঝুঁকির জন্য আলাদা?
— ডোম

1
@ ডোম এটি আমার উপর খানিকটা দেরিতে ছড়িয়ে পড়েছে যে আপনি কী ব্যবহার করতে চান ঠিক তা পাওয়ার জন্য একটি সুস্পষ্ট উপায় রয়েছে glmnet। আমার সংশোধিত উত্তর দেখুন।
— সাইকোরাক্স বলছেন মনিকা পুনরায় ইনস্টল করুন 6'15

2
প্রতিটি পূর্বাভাসীর জন্য পৃথক করে জরিমানা কাস্টমাইজ করতে সাবধান হন। এটি কিছু ক্ষেত্রে ধাপে ধাপে পরিবর্তনশীল নির্বাচন ছাড়া আর কিছুই নয়। পেনালাইজড রিগ্রেশন হ্রাস হ'ল অর্থ সীমিত সংখ্যক জরিমানার পরামিতি ধরে রেখে এবং ভবিষ্যদ্বাণীকারীদের কাছে তথ্য ধার করে squ
— ফ্রাঙ্ক হ্যারেল

2
@ ফ্র্যাঙ্কহারেল মন্তব্যটির জন্য ধন্যবাদ! দেখে মনে হয় যে প্রতিটি পূর্বাভাসককে বিভিন্ন জরিমানা ব্যবহার করা একটি বায়েশিয়ান মডেলের সমতুল্য যা প্রতিটি প্যারামিটারের জন্য আলাদা আলাদা অনুমান করে। এটি সাধারণত বায়েশিয়ান অনুমানের উপর একটি অনন্য বিপদ হিসাবে বিবেচিত হয় না। এছাড়াও, আপনি কীভাবে দণ্ডিত রিগ্রেশন পূর্বাভাসকগণের কাছে তথ্য ধার করে তা ব্যাখ্যা করতে পারেন? আমি নিশ্চিত নই যে আমি এ জাতীয় দৃশ্যের ক্ষেত্রে কীভাবে পুরোপুরি উপলব্ধি করেছি।
— সাইকোরাক্স মনিকাকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.