মিথাইলেশন ডেটাতে গ্ল্যামনেট সহ বৈশিষ্ট্য নির্বাচন এবং মডেল (পি >> এন)


29

আমি প্রাসঙ্গিক বৈশিষ্ট্যগুলি নির্বাচন করতে জিএলএম এবং ইলাস্টিক নেট ব্যবহার করতে চাই + একটি লিনিয়ার রিগ্রেশন মডেল তৈরি করুন (অর্থাত্, ভবিষ্যদ্বাণী এবং বোঝার উভয়ই তাই তুলনামূলকভাবে কয়েকটি পরামিতি রেখে যাওয়া ভাল)। আউটপুট অবিচ্ছিন্ন হয়। এটি প্রতি ক্ষেত্রে জিন । আমি প্যাকেজটি সম্পর্কে পড়ছি , তবে অনুসরণের পদক্ষেপগুলি সম্পর্কে আমি 100% নিশ্চিত নই:2000050glmnet

  1. ল্যাম্বদা চয়ন করতে সিভি সঞ্চালন করুন:
    cv <- cv.glmnet(x,y,alpha=0.5)
    (কিউ 1) ইনপুট ডেটা দেওয়া হলে আপনি কি আলাদা আলফা মান চয়ন করবেন?
    (প্র 2) মডেলটি তৈরি করার আগে আমার কি অন্য কিছু করা দরকার?

  2. মডেলটিকে ফিট করুন:
    model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
    (কিউ 3) "কোভেরিয়েন্স" এর চেয়ে ভাল কিছু?
    (প্র 4) লাম্বদা যদি সিভি দ্বারা বেছে নেওয়া হয়, তবে এই পদক্ষেপের প্রয়োজন কেন nlambda=?
    (প্র 5) এটি ব্যবহার করা ভাল lambda.minবা lambda.1se?

  3. কোন পরামিতিগুলি ("।") পড়েছে তা দেখতে, সহগের সংগ্রহ করুন:
    predict(model, type="coefficients")

    সহায়তা পৃষ্ঠা সেখানে অনেক predictপদ্ধতি (যেমন, predict.fishnet, predict.glmnet, predict.lognet, ইত্যাদি)। তবে কোনও "সরল" ভবিষ্যদ্বাণী হিসাবে আমি উদাহরণে দেখেছি।
    (Q6) উচিত আমি ব্যবহার predictবা predict.glmnetবা অন্যান্য?

নিয়মিতকরণ পদ্ধতি সম্পর্কে আমি যা পড়েছি তা সত্ত্বেও আমি আর এবং এই পরিসংখ্যান প্যাকেজগুলিতে বেশ নতুন, তাই আমি আমার সমস্যাটি কোডের সাথে মানিয়ে নিচ্ছি কিনা তা নিশ্চিত হওয়া শক্ত difficult কোন পরামর্শ স্বাগত জানানো হবে।

আপডেটের
উপর ভিত্তি করে "পূর্বে উল্লিখিত হিসাবে, ক্লাস ট্রেনের কোনও অবজেক্টে একটি উপাদান বলা হয় finalModelযা পুনর্নির্মাণের মাধ্যমে নির্বাচিত টিউনিং প্যারামিটার মানগুলির সাথে লাগানো মডেল। মডেল এর পূর্বাভাস ফাংশন। "

caretআলফা এবং ল্যাম্বডা উভয়কেই টিউন করতে ব্যবহার করে:

  trc = trainControl(method=cv, number=10)  
  fitM = train(x, y, trControl = trC, method="glmnet")  

না fitMপূর্ববর্তী ধাপে 2 প্রতিস্থাপন করবেন? যদি তা হয় তবে কীভাবে type.gaussian="naive",lambda=cv$lambda.min/1seএখন গ্ল্যামনেট বিকল্পগুলি ( ) নির্দিষ্ট করবেন ?
এবং নিম্নলিখিত predictপদক্ষেপ, আমি প্রতিস্থাপন করতে পারেন modelকরতে fitM?

যদি আমি করি

  trc = trainControl(method=cv, number=10)  
  fitM = train(x, y, trControl = trC, method="glmnet")  
  predict(fitM$finalModel, type="coefficients")

এটি কি আদৌ অর্থবহ হয় বা আমি উভয় প্যাকেজ ভোকাবুলারি ভুলভাবে মিশ্রিত করছি?

উত্তর:


42

অংশ 1

ইলাস্টিক নেট এ পরামিতিগুলিতে দুই ধরণের সীমাবদ্ধতা নিযুক্ত করা হয়

  1. লাসোর সীমাবদ্ধতা ( এর পরম মানের )βj
  2. রিজ সীমাবদ্ধতা (যেমন এর স্কোয়ার্ড মানের আকার )βj

α দুটি ধরণের আপেক্ষিক ওজন নিয়ন্ত্রণ করে। লাসোর সীমাবদ্ধতাগুলি মডেলটিতে ভেরিয়েবল নির্বাচন / অপসারণের অনুমতি দেয়। রিজ সীমাবদ্ধতা কলিনারি ভেরিয়েবলের সাথে মানিয়ে নিতে পারে। আপনি যার উপর বেশি ওজন রেখেছেন তা ডেটা বৈশিষ্ট্যের উপর নির্ভর করবে; প্রচুর সম্পর্কযুক্ত ভেরিয়েবলের উভয় সীমাবদ্ধতার প্রয়োজন হতে পারে, কয়েকটি পারস্পরিক সম্পর্কযুক্ত ভেরিয়েবলগুলি রিজের সীমাবদ্ধতার উপর আরও জোর দেওয়ার পরামর্শ দিতে পারে।

এই সমস্যা সমাধানের একটি উপায় চিকিত্সা হয় একটি টিউনিং প্যারামিটার পাশাপাশি যেমন এবং একই ভাবে যে তোমাদের উপর টিউনিং করছি মান যে সর্বনিম্ন সিভি ত্রুটি দিতে, ব্যবহার সঙ্গে মুহূর্তে ।αλλcv.glmnet

আর প্যাকেজ ক্যারেট গ্ল্যামনেট প্যাকেজ ব্যবহার করে মডেল তৈরি করতে পারে এবং এবং উভয় পরামিতিগুলির জন্য টিউন করা উচিত ।αλ

অংশ ২

চতুর্থাংশ 3

হ্যাঁ, এই ক্ষেত্রে যেখানে (ভেরিয়েবলের সংখ্যা পর্যবেক্ষণের সংখ্যা), ব্যবহারের পরামর্শের জন্য সহায়তা পৃষ্ঠাmn?glmnet

type.gaussian = "naive"

সমস্ত অভ্যন্তরীণ পণ্যগুলি সেইভাবে গণনা করা পরিবর্তে, যা প্রচুর পরিমাণে ভেরিয়েবলের সাথে অকার্যকর হতে পারে বা যখন , প্রতিটি সময় কম্পিউটারের অভ্যন্তরীণ পণ্যগুলির জন্য প্রয়োজনীয় বিকল্পটি লুপ হয়ে যায় ।nmn"naive"n

আপনি যদি এই যুক্তিটি নির্দিষ্ট না করে থাকেন glmnetতবে"naive" হিসাবে যে কোনও উপায়ে বেছে নিতে পারতেন , তবে প্যাকেজের পরে এই ডিফল্টগুলি এবং বিকল্পগুলি পরিবর্তনের জন্য স্পষ্টভাবে নির্দিষ্ট করে দেওয়া ভাল এবং আপনি ভবিষ্যতের তারিখে কোড চালাচ্ছেন।m>500

Q4 ই

সংক্ষিপ্ত উত্তর, আপনার nlambdaআপাতত একটি উচ্চ মানের নির্দিষ্ট করার দরকার নেই যে আপনি একটি অনুকূল মান বেছে নিয়েছেন, তে শর্তযুক্ত । তবে, আপনি যদি সহগামী পাথগুলি ইত্যাদি প্লট করতে চান তবে ব্যবধানের পরে মানের একটি পরিমিত বিন্যাস রাখার ফলে পাথগুলি আরও ভাল সেট হয়ে যায়। একটি নির্দিষ্ট সম্পর্কিত পুরো পথটি করার গণনার ভার এত বড় নয়, এই কাজটি সঠিকভাবে করার জন্য অ্যালগরিদমগুলি বিকাশের প্রচুর প্রচেষ্টার ফলাফল। আমি কেবল ডিফল্টে চলে যাব , যদি না এটি গণনার সময়টিতে প্রশংসনীয় পার্থক্য না করে।λ λα=0.5λλnlambda

Q5

এটি পার্সিমনি সম্পর্কে একটি প্রশ্ন। lambda.minবিকল্পের মান বোঝায় সর্বনিম্ন সিভি ত্রুটি হয়েছে। এই ত্রুটিটি ফোল্ডগুলির উপরের ত্রুটির গড় এবং তাই ত্রুটির এই অনুমানটি অনিশ্চিত। মান প্রতিনিধিত্ব করে সন্ধান যা শ্রেষ্ঠ মডেল (তুলনায় সহজ ছিল ), কিন্তু যার মধ্যে ত্রুটি আছে 1 শ্রেষ্ঠ মডেল মান ত্রুটি। অন্য কথায়, জন্য নির্বাচিত মান হিসাবে মানটি ব্যবহার করেλ λ λ λλklambda.1seλlambda.minlambda.1seλএকটি মডেলের ফলাফল যা সেরা মডেলের চেয়ে কিছুটা সহজ তবে সেরা মডেলের ত্রুটির ফোল্ড সিভি অনুমানের অনিশ্চয়তার কারণে ত্রুটির দিক দিয়ে যা সেরা মডেল থেকে আলাদা করা যায় না ।k

সিদ্ধান্ত আপনার:

  1. সেরা মডেল যা সামান্য অতিরিক্ত সুবিধার চেয়েও জটিল হতে পারে: lambda.min
  2. অনিশ্চয়তা প্রদত্ত সেরা মডেলের তুলনায় ত্রুটিযুক্ত সবচেয়ে সহজ মডেল: lambda.1se

পার্ট 3

এটি একটি সহজ এবং এটি এমন কিছু যা আপনি আর এর সাথে প্রচুর পরিমাণে আসবেন You আপনি predict()সময়টির 99.9% ফাংশনটি ব্যবহার করেন । আর প্রথম যুক্তি হিসাবে সরবরাহিত বস্তুর জন্য সঠিক ফাংশনটি ব্যবহারের ব্যবস্থা করবে।

আরও প্রযুক্তিগতভাবে, predictএকটি জেনেরিক ফাংশন, যার বিভিন্ন ধরণের (প্রযুক্তিগতভাবে ক্লাস হিসাবে পরিচিত) অবজেক্টগুলির জন্য পদ্ধতি (ফাংশনের সংস্করণ ) রয়েছে। তৈরি করা অবজেক্টটিতে কোন ধরণের মডেলটি আসলে ফিট করা হয় তার উপর নির্ভর করে একটি নির্দিষ্ট শ্রেণি (বা ক্লাস) থাকে। glmnet (প্যাকেজ) এই বিভিন্ন ধরণের অবজেক্টের জন্য ফাংশনটির জন্য পদ্ধতি সরবরাহ করে। আর এই পদ্ধতিগুলি সম্পর্কে জানে এবং সরবরাহিত বস্তুর শ্রেণির উপর ভিত্তি করে উপযুক্তটি বেছে নেবে।glmnetpredict


2
গ্রেট আনওয়ার! আমি এখন কেরেট সম্পর্কে পড়েছি। ক্যারেট এবং গ্ল্যামনেট প্যাকেজের মধ্যে সম্পর্কের বিষয়ে 100% নিশ্চিত নয়, তাই প্যাকেজের সাথে এইগুলির 'মার্জ' বা গ্ল্যামনেট থেকে ক্যারেটে স্যুইচ করার জন্য আমি আমার প্রশ্নের একটি আপডেট করেছি।
পিগ্রাইন

1
@ পিগ্রিন: caretএটি একটি আর র‍্যাপার প্যাকেজ যা 100+ এমএল প্যাকেজগুলি থেকে আরও সামঞ্জস্যপূর্ণ হওয়ার জন্য ফাংশন ইন্টারফেসগুলিকে আবৃত করে এবং সিভি, গ্রিডসার্ক যোগ করে, পাগল পরামিতি ডিফল্টগুলি সংশোধন করে। ইত্যাদি এটি কিরক ছাড়াই নয় তবে এটি বেশ ভাল এবং ব্যাপকভাবে ব্যবহৃত হয় used
smci

আমি কেবল এটি যুক্ত করতে চাই আলফা সুরের জন্য আপনি একইসাথে আলফা এবং ল্যাম্বদা টিউন cva.glmnet(..)পরিবর্তে ব্যবহার করতে পারেন cv.glmnet(...)। তারপরে আপনি minlossplot(cva.fit)কোন আলফা সবচেয়ে ভাল ফলাফল দেয় তা দেখতে দৌড়াতে পারেন । এটি উভয়ই গ্ল্যামনেট ইউটিলের
এস্পেন রিস্কডাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.