মডেল নির্বাচন এবং ক্রস-বৈধকরণ: সঠিক উপায়


34

মডেল নির্বাচন এবং ক্রস বৈধকরণের বিষয়টিতে ক্রসভিলেটেডে অসংখ্য থ্রেড রয়েছে। এখানে কয়েকটি দেওয়া হল:

তবে, এই থ্রেডগুলির উত্তরগুলি মোটামুটি জেনেরিক এবং বেশিরভাগ ক্ষেত্রে বৈধতা এবং মডেল নির্বাচনের ক্রস করার জন্য বিশেষ পদ্ধতির সাথে বিষয়গুলি হাইলাইট করে।

জিনিসগুলিকে যথাসম্ভব কংক্রিট করার জন্য , উদাহরণস্বরূপ বলুন যে আমরা একটি আরবিএফ কার্নেল দিয়ে একটি এসভিএম নিয়ে কাজ করছি: , এবং আমার কাছেএক্সএবং লেবেলyবৈশিষ্ট্যগুলির একটি ডেটাসেট রয়েছেএবং আমি এটি করতে চাইK(x,x)=(γ|xx|)2

  1. আমার মডেলের সর্বোত্তম সম্ভাব্য মানগুলি ( এবং সিγC ) সন্ধান করুন
  2. আমার ডেটাসেট দিয়ে এসভিএমকে প্রশিক্ষণ দিন (চূড়ান্ত স্থাপনার জন্য)
  3. সাধারণীকরণ ত্রুটি এবং এই ত্রুটির চারপাশে অনিশ্চয়তা (বৈকল্পিক) অনুমান করুন

এটা করার জন্য, আমি ব্যক্তিগতভাবে, একটি গ্রিড অনুসন্ধান উদাঃ আমি সম্ভব সমন্বয় চেষ্টা করবে এবং γ । সরলতার জন্য, আমরা নিম্নলিখিত রেঞ্জগুলি ধরে নিতে পারি:Cγ

  • C{10,100,1000}
  • γ{0.1,0.2,0.5,1.0}

আরও নির্দিষ্টভাবে, আমার সম্পূর্ণ ডেটাসেট ব্যবহার করে আমি নিম্নলিখিতটি করি:

  1. প্রত্যেক (জন্য , γ ) যুগল, আমি পুনরাবৃত্তি না পুনরাবৃত্তিও (যেমন 100 র্যান্ডম পুনরাবৃত্তির) কে ক্রস বৈধতা ধা (যেমন কে = 10 ), আমার ডেটা সেটটি, অর্থাত্ আমি আমার SVM ট্রেনে কে - 1 ভাঁজ এবং ত্রুটি নির্ণয় সমস্ত কে ভাঁজ দিয়ে পুনরাবৃত্তি করে বামদিকে on সামগ্রিকভাবে, আমি 100 x 10 = 1000 পরীক্ষার ত্রুটিগুলি সংগ্রহ করি।CγKK=10K1K
  2. এই জাতীয় প্রতিটি ( , γ ) জুটির জন্য, আমি সেই 1000 টি পরীক্ষার ত্রুটির μ এম , σ এম এর গড় এবং তারতম্যটি গণনা করি ।CγμM,σM

এখন আমি সেরা মডেল (সেরা কর্নেল প্যারামিটার) বেছে নিতে চাই যা আমি আমার চূড়ান্ত এসভিএমকে পুরো ডেটাसेटে প্রশিক্ষণ দিতে ব্যবহার করব। আমার বোধগম্যতা হল সবচেয়ে কম ত্রুটিযুক্ত মডেলটি বেছে নেওয়ার অর্থ এবং বৈকল্পিক এবং σ এমμMσM ডান পছন্দ হবে, এবং যে এই মডেলের হয় σ এম মডেলের সাধারণীকরণ ত্রুটি পক্ষপাত এবং ভ্যারিয়েন্সের আমার সবচেয়ে ভালো অনুমান যখন সঙ্গে প্রশিক্ষণ হয় সম্পূর্ণ ডেটাসেট।μMσM

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

এই সমস্যাটির সাথে যুক্ত, আমি কীভাবে বিশেষত সেরা মডেলটি বেছে নিতে পারি এবং এর সাধারণীকরণের ত্রুটিটি সঠিকভাবে অনুমান করতে পারি ?


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

এমন একটি নিবন্ধ যা আপনাকে আকর্ষণীয় মনে হতে পারে: optimalpredication.com/files/pdf/V2A5.pdf
user31256

2
খুব স্পষ্ট এবং বিস্তারিত প্রশ্নের জন্য +1, পাশাপাশি ডেটা বিজ্ঞান সম্প্রদায়ের কাছে খুব প্রাসঙ্গিক প্রশ্ন।
নিকব্রুনেজেল

উত্তর:


20

জেএমএলআর আমার কাগজটি এই সঠিক প্রশ্নটি সম্বোধন করে, এবং প্রমানিত করে যে প্রশ্নটিতে প্রস্তাবিত পদ্ধতিটি (বা কমপক্ষে এটির মতো খুব ভাল একটি) কেন আশাবাদী পক্ষপাতদুষ্ট পারফরম্যান্স অনুমানের ফলাফল:

গ্যাভিন সি। কাওলি, নিকোলা এলসি টালবট, "মডেল সিলেকশনে ওভার-ফিটিং এবং পারফরম্যান্স মূল্যায়নের পরবর্তী নির্বাচন বায়াস", মেশিন লার্নিং রিসার্চ জার্নাল, 11 (জুলাই): 2079−2107, 2010. ( www )

মূল বিষয়টি মনে রাখবেন যে ক্রস-বৈধকরণ কোনও মডেল তৈরির পরিবর্তে কোনও মডেল তৈরির পদ্ধতির জন্য সাধারণীকরণের পারফরম্যান্সটি অনুমান করার একটি কৌশল। সুতরাং কার্নেল প্যারামিটারগুলি বেছে নেওয়া যদি মডেল তৈরির প্রক্রিয়ার অংশ হয় তবে আপনাকে মডেল নির্বাচন প্রক্রিয়াটিও ক্রস-বৈধ করতে হবে, অন্যথায় আপনি আশাবাদী পক্ষপাতদুষ্ট পারফরম্যান্সের প্রাক্কলনটি শেষ করবেন (আপনার প্রস্তাবিত পদ্ধতির সাথে এটি ঘটবে)।

ধরুন আপনার একটি ফাংশন ফিট_মোডেল রয়েছে, যা এক্স এবং কাঙ্ক্ষিত প্রতিক্রিয়া ওয়াই সমন্বিত একটি ডেটাসেট গ্রহণ করে এবং যা হাইপার-প্যারামিটারগুলির সুরকরণ (এই ক্ষেত্রে কার্নেল এবং নিয়মিতকরণের পরামিতি) সহ সেই ডেটাসেটের জন্য উপযুক্ত মডেলটি দেয়। হাইপার-প্যারামিটারগুলির এই টিউনিংটি বিভিন্ন উপায়ে করা যেতে পারে, উদাহরণস্বরূপ এক্স এবং টি-তে ক্রস-বৈধতা ত্রুটি হ্রাস করুন izing

পদক্ষেপ 1 - ফিট_ মডেল ফাংশনটি ব্যবহার করে সমস্ত উপলভ্য ডেটাতে মডেলটিকে ফিট করুন। এটি আপনাকে এমন মডেল দেয় যা আপনি অপারেশনে ব্যবহার করবেন।

পদক্ষেপ 2 - পারফরম্যান্স মূল্যায়ন। সমস্ত উপলব্ধ ডেটা ব্যবহার করে বারবার ক্রস-বৈধকরণ সম্পাদন করুন। প্রতিটি ভাঁজে, ডেটাগুলি একটি প্রশিক্ষণ সেট এবং একটি পরীক্ষার সেটে বিভক্ত হয়। প্রশিক্ষণ সেট ব্যবহার করে মডেলটিকে ফিট করুন (লাগানো মডেলের জন্য হাইপার-প্যারামিটার মানগুলি রেকর্ড করুন) এবং পরীক্ষার সেটে কর্মক্ষমতা মূল্যায়ন করুন। পারফরম্যান্সের প্রাক্কলন হিসাবে সমস্ত পরীক্ষার সেটগুলির মধ্যবর্তী গড়টি ব্যবহার করুন (এবং সম্ভবত মানগুলির বিস্তারকেও দেখুন)।

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

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

মূল বিষয়টি হ'ল নিরপেক্ষ পারফরম্যান্সের অনুমানের জন্য, আপনি চূড়ান্ত মডেল (ফিট_মোডেল) উত্পন্ন করতে যে পদ্ধতি ব্যবহার করেন না কেন ক্রস-বৈধকরণ পদ্ধতির প্রতিটি ভাগে স্বাধীনভাবে তার সম্পূর্ণরূপে পুনরাবৃত্তি করতে হবে।


এটি একটি দুর্দান্ত উত্তর। আপনি যখন বলেন rather than repeated cross-validation you would go for bootstrapping- ঠিক পার্থক্য কি? উভয় ডেটা বিভাজক একাধিক পুনরাবৃত্তির জড়িত trainএবং testএবং তারপর প্রশিক্ষণ trainএবং মূল্যায়নের testতারা, তাই না?
জোশ

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

ধন্যবাদ @ ডিকরান - এটি আমাকে বিস্মিত করেছে, ধরে নিয়েছে যে একজন যেমন বুটস্ট্র্যাপিং ব্যবহার করে, আপনি পুনরাবৃত্তিগুলির গড় এবং তারতম্য বিবেচনা করে কীভাবে একটি ভাল মডেল চয়ন করবেন ? (অর্থাৎ আপনি কোন মডেল নির্বাচন প্রোটোকলটি অনুসরণ করবেন?) এই প্রশ্ন ভঙ্গি ঠিক এই প্রশ্ন। এই থ্রেডে আপনার ইনপুট পাওয়া অত্যন্ত মূল্যবান হবে!
জোশ

@ ডিক্রানমারসুপিয়াল আপনি কি আপনার পদক্ষেপের জন্য 1-3 পোস্ট করতে পারেন (উদাহরণস্বরূপ, পাইথন বা আর)? কংক্রিট কোড দেখার সময় আমি এই জাতীয় পদ্ধতিগুলি বোঝা অনেক সহজ মনে করি।
tobip

1
মূল বার্তা: "মূল বক্তব্যটি হ'ল একটি পক্ষপাতহীন পারফরম্যান্স অনুমানের জন্য, আপনি চূড়ান্ত মডেল (ফিট_মোডেল) উত্পন্ন করতে যে পদ্ধতি ব্যবহার করেন তা ক্রস-বৈধকরণ পদ্ধতির প্রতিটি ভাঁজে স্বাধীনভাবে সম্পূর্ণরূপে পুনরাবৃত্তি করতে হবে " " এই সঠিক বার্তাটি পরিসংখ্যান শিক্ষার উপাদানগুলিতেও পৌঁছে দেওয়া হয়েছে (বিভাগটি দেখুন 7..১০.২): ওয়েব.স্তানফোর্ড.ইডু
~

0

γসি ) করা একটি মেশিন লার্নিং অ্যালগরিদম।

এই হাইপারপ্যারামিটারগুলিকে অনুকূল করে এমন একটি এসভিএম প্রশিক্ষণ দেয় এমন একটি পদ্ধতিও কেবল একটি মেশিন লার্নিং অ্যালগরিদম । কেবলমাত্র এসভিএম (সমর্থন ভেক্টর) এর অভ্যন্তরীণ প্যারামিটারগুলি অনুকূল করার পরিবর্তে এটি হাইপারপ্যারামিটারগুলিও অনুকূল করে।

এখন আপনার দুটি সমস্যা আছে [যা স্বতন্ত্রভাবে সমাধান করা যায়]:

পড়ুন ক্রস-বৈধতা অপব্যবহার (প্রতিবেদন সেরা hyperparameter মান জন্য কর্মক্ষমতা) নিশ্চিত যে আপনি তাদের তালগোল না করা।


আপনার প্রশ্নের কংক্রিট সমস্যার একটি নির্দিষ্ট (সম্ভবত অনুকূল নয়) সমাধান:

k = 5
loss_CV = zeros(k)
for i in 1:k 
    Xi_train, Xi_test = folds(X,k)[i]
    loss = zeros((3,3))
    for lambda in {0.1,0.2,0.5,1.0}
        for C in {10,100,1000}
            for j in 1:k
                Xj_train, Xj_test = folds(Xi_train,k)[j]
                model = SVM(Xj_train,lambda, C)
                loss[lambda,C] += test_error(model,Xj_test)
    lambda, C = argmax(loss)
    model = SVM(Xi_train,lambda, C)
    loss_CV += test_error(model,Xi_test)

loss = zeros((3,3))
for lambda in {0.1,0.2,0.5,1.0}
    for C in {10,100,1000}
        for j in 1:k
            Xj_train, Xj_test = folds(Xi_train,k)[j]
            model = SVM(Xj_train,lambda, C)
            loss[lambda,C] += test_error(model,Xj_test)
lambda, C = argmax(loss)
model = SVM(Xi_train,lambda, C)

এখানে modelআপনার "সেরা মডেল" এবং loss_CV"এর সাধারণীকরণের ত্রুটির যথাযথ অনুমান" হবে (যদিও উপরের দিকে পক্ষপাতিত্ব করা হয়েছে, তবে আপনার পিষ্টকটি থাকতে পারে না এবং এটিও খাওয়া যায় না)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.