আর-তে লাসো রিগ্রেশন বৈধকরণের ক্রস


10

আর ফাংশন সিভি.glm (গ্রন্থাগার: বুট) সাধারণ রৈখিক মডেল এবং রিটার্ন ডেল্টার জন্য অনুমান করা কে-ফোল্ড ক্রস-বৈধকরণ পূর্বাভাস ত্রুটি গণনা করে। লাসো রিগ্রেশন (গ্রন্থাগার: গ্ল্যামনেট) এর জন্য এই ফাংশনটি ব্যবহার করা কি বোধগম্য এবং যদি তাই হয় তবে কীভাবে এটি সম্পাদন করা যায়? সেরা টার্নিং প্যারামিটার পেতে গ্ল্যামনেট লাইব্রেরি ক্রস-বৈধতা ব্যবহার করে, তবে আমি চূড়ান্ত গ্ল্যামনেট সমীকরণকে ক্রস-বৈধ করে এমন কোনও উদাহরণ পাইনি।


2
এটি অবশ্যই বোধগম্য, এবং যদিও লাসো কেবলমাত্র একটি (হাইপার-) প্যারামিটারের উপর নির্ভর করে তবে যদি আপনি সর্বাধিক প্রাক্কলন পেতে চান তবে নমুনা ছাড়াই আপনার পার্শ্ব-বৈধকরণ লুপের প্রয়োজন। দেখুন আপনি সিভি / বুটস্ট্র্যাপ ব্যবহার করে মেশিন লার্নিং অ্যালগরিদম প্রশিক্ষণ দিয়ে অতিরিক্ত সাজাতে পারেন? এবং উদ্ধৃত কাগজপত্র
স্কর্চচি - মনিকা পুনরায় ইনস্টল করুন

এটি গ্ল্যামনেট ব্যবহারের পরিবর্তে গ্ল্যামেট ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। আপনি যদি সিভি করছেন যদি আমি মনে করি, গ্ল্যাম প্যাকেজটি ব্যবহারে বেদনাদায়ক হয়ে ওঠে। এছাড়াও, cv.glmnet cv.glm এর চেয়ে বেশি পরামিতি প্রকাশ করে।
smci

উত্তর:


9

কীভাবে Lasso জন্য ভ্যানিলা প্লেইন ক্রস বৈধতা করতে হবে সেই বিষয়ে একটি উদাহরণ glmnetউপর mtcars ডেটা সেট।

  1. লোড ডেটা সেট।

  2. বৈশিষ্ট্য প্রস্তুত করুন (স্বতন্ত্র ভেরিয়েবল)। তারা matrixক্লাসের হওয়া উচিত । সবচেয়ে সহজ উপায় রূপান্তর করতে dfমধ্যে শ্রেণীগত ভেরিয়েবল ধারণকারী matrixমারফত model.matrix। আপনি মনে রাখবেন, ডিফল্টরূপে glmnetইন্টারসেপ্ট ফিট করে, তাই আপনি মডেল ম্যাট্রিক্স থেকে আরও ভাল স্ট্রিপ চাই।

  3. প্রতিক্রিয়া প্রস্তুত করুন (নির্ভরশীল পরিবর্তনশীল)। উপরের গড়ের mpgসাথে দক্ষ ('1') এবং বাকিগুলি অদক্ষ ('0') হিসাবে কোড করুন। এই পরিবর্তনশীলটিকে ফ্যাক্টারে রূপান্তর করুন।

  4. এর মাধ্যমে ক্রস-বৈধকরণ চালান cv.glmnet। এটি alpha=1ডিফল্ট glmnetপ্যারামিটারগুলি থেকে পিকআপ নেবে, যা আপনি যা চেয়েছিলেন: লাসো রিগ্রেশন।

  5. ক্রস-বৈধতার আউটপুট পরীক্ষা করে আপনি কমপক্ষে 2 টি টুকরো তথ্যে আগ্রহী হতে পারেন:

    • লাম্বদা, এটি ক্রস-বৈধতাযুক্ত ত্রুটি হ্রাস করে। glmnetআসলে 2 ল্যাম্বডাস সরবরাহ করে: lambda.minএবং lambda.1se। এটি ব্যবহারের জন্য অনুশীলনকারী পরিসংখ্যানবিদ হিসাবে আপনার রায় কল।

    • ফলস নিয়মিত সহগ।

উপরের নির্দেশাবলী অনুযায়ী দয়া করে আর কোড দেখুন:

# Load data set
data("mtcars")

# Prepare data set 
x   <- model.matrix(~.-1, data= mtcars[,-1])
mpg <- ifelse( mtcars$mpg < mean(mtcars$mpg), 0, 1)
y   <- factor(mpg, labels = c('notEfficient', 'efficient'))

library(glmnet)

# Run cross-validation
mod_cv <- cv.glmnet(x=x, y=y, family='binomial')

mod_cv$lambda.1se
[1] 0.108442

coef(mod_cv, mod_cv$lambda.1se)
                     1
(Intercept)  5.6971598
cyl         -0.9822704
disp         .        
hp           .        
drat         .        
wt           .        
qsec         .        
vs           .        
am           .        
gear         .        
carb         .  

mod_cv$lambda.min
[1] 0.01537137

coef(mod_cv, mod_cv$lambda.min)
                      1
(Intercept)  6.04249733
cyl         -0.95867199
disp         .         
hp          -0.01962924
drat         0.83578090
wt           .         
qsec         .         
vs           .         
am           2.65798203
gear         .         
carb        -0.67974620

চূড়ান্ত মন্তব্য:

  • দ্রষ্টব্য, মডেলের আউটপুট সহগের পরিসংখ্যানগত তাত্পর্য সম্পর্কে কিছুই বলে না, কেবলমাত্র মান।

  • l1 পেনালাইজার (লাসো), যা আপনি চেয়েছিলেন তা এই ব্লগ পোস্ট এবং এই স্ট্যাকেক্সচেঞ্জ প্রশ্নের প্রমাণ হিসাবে অস্থিরতার জন্য কুখ্যাত । এর চেয়ে আরও ভাল উপায় হ'ল ক্রস-বৈধতা দেওয়া alpha, যা আপনাকে এল 1 এবং এল 2 পেনালাইজারগুলির সঠিক মিশ্রণের বিষয়ে সিদ্ধান্ত নিতে দেয়।

  • ক্রস-বৈধকরণের একটি বিকল্প উপায় হ'ল ক্যারেটের দিকে ফিরে যাওয়া train( ... method='glmnet')

  • এবং পরিশেষে, এর সম্পর্কে আরও জানার সর্বোত্তম উপায় cv.glmnetএবং এটির ডিফল্টগুলি glmnetঅবশ্যই আসছে ?glmnetআর এর কনসোলে)))


চমৎকার উত্তর. .. এটি একাধিকবার সিভি চালানো এবং ত্রুটি বক্ররেখা (দেখুন? cv.glmnet) স্যাম্পলিংয়ের জন্য অ্যাকাউন্টে দাঁড় করানোও মূল্যবান
ব্যবহারকারী 20650

@ সের্গে বুশমানভ খুব কার্যকর!

হাই, আমি জানি যে এটি একটি পুরানো পোস্ট, তবে আমি আপনাকে একটি প্রশ্ন জিজ্ঞাসা করতে চেয়েছিলাম। আপনি উল্লেখ করেছেন যে মডেলের আউটপুট সহগের পরিসংখ্যানগত তাত্পর্য সম্পর্কে কিছুই বলে না, তাই আপনি কীভাবে নির্ধারণ করবেন যে তারা তাৎপর্যপূর্ণ বা না?
জুন

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