আমি cv.glmnet
ভবিষ্যদ্বাণীকারীদের খুঁজতে ব্যবহার করছি । আমি যে সেটআপটি ব্যবহার করি তা নিম্নরূপ:
lassoResults<-cv.glmnet(x=countDiffs,y=responseDiffs,alpha=1,nfolds=cvfold)
bestlambda<-lassoResults$lambda.min
results<-predict(lassoResults,s=bestlambda,type="coefficients")
choicePred<-rownames(results)[which(results !=0)]
নিশ্চিত ফলাফল গঠনকর আমি হয় set.seed(1)
। ফলাফল অত্যন্ত পরিবর্তনশীল। ফলাফলগুলি কতটা পরিবর্তনশীল তা দেখতে আমি একই কোডটি 100 চালিয়েছি। 98/100 রান একটি নির্দিষ্ট ভবিষ্যদ্বাণী সর্বদা নির্বাচিত ছিল (কখনও কখনও কেবল এটি নিজস্ব); অন্যান্য ভবিষ্যদ্বাণীকারী সাধারণত 50/100 বার নির্বাচিত হন (সহ-কার্যক্ষম শূন্য নয়)।
সুতরাং এটি আমাকে বলে যে প্রতিটি সময় ক্রস বৈধকরণ চলমান এটি সম্ভবত একটি ভিন্ন সেরা ল্যাম্বডা নির্বাচন করতে চলেছে, কারণ ভাঁজগুলির প্রাথমিক র্যান্ডমাইজেশন বিষয়টি বিবেচনা করে। অন্যরা এই সমস্যাটি দেখেছেন ( CV.glmnet ফলাফল ) তবে এর প্রস্তাবিত সমাধান নেই।
আমি ভাবছি যে সম্ভবত 98/100 দেখায় এমন একটি সম্ভবত অন্য সকলের সাথে খুব বেশি সংযুক্ত? ফলাফল কি স্থির তাহলে আমি ঠিক চালানো LOOCV ( ), কিন্তু আমি আগ্রহী কেন তারা এত পরিবর্তনশীল যখন হয় ।
set.seed(1)
একবার বোঝাচ্ছেন একবারcv.glmnet()
100 বার চালাবেন ? প্রজননযোগ্যতার জন্য এটি দুর্দান্ত পদ্ধতি নয়;set.seed()
প্রতিটি রান আগে ডান থেকে ভাল , বা অন্যথায় রানগুলি জুড়ে স্থির রাখুন। আপনার প্রতিটি কলকে এন বার কল করাcv.glmnet()
হচ্ছেsample()
। সুতরাং আপনার ডেটার দৈর্ঘ্য যদি কখনও পরিবর্তন হয় তবে পুনরুত্পাদনীয়তা পরিবর্তন হয়।