(আমি নিশ্চিত যে এরই মধ্যে বেশিরভাগ উত্তর আমি ইতিমধ্যে লিখেছি - তবে এখনই এটি খুঁজে পাচ্ছে না that যদি কেউ উত্তরটি ধরেই হোঁচট খায় তবে দয়া করে এটি লিঙ্ক করুন)। আমি এখানে 2 সামান্য ভিন্ন পন্থা দেখতে পাচ্ছি, যা আমি উভয়ই বোধগম্য বলে মনে করি।
তবে প্রথমে কিছু পরিভাষা:
- প্রয়োগ ক্ষেত্র থেকে আগত, আমার জন্য একটি (লাগানো / প্রশিক্ষিত) মডেল একটি ব্যবহারের জন্য প্রস্তুত। অর্থাত মডেলটিতে নতুন ডেটার পূর্বাভাস তৈরি করার জন্য প্রয়োজনীয় সমস্ত তথ্য রয়েছে contains সুতরাং, মডেল রয়েছে এছাড়াও hyperparameters । আপনি দেখতে পাবেন, এই দৃষ্টিকোণ নীচে 2 পদ্ধতির সাথে নিবিড়ভাবে সম্পর্কিত।
- ওটিওএইচ, আমার অভিজ্ঞতার প্রশিক্ষণ অ্যালগরিদম নিম্নলিখিত অর্থে সঠিকভাবে সংজ্ঞায়িত করা হয়নি: (লাগানো) মডেলটি পেতে কেবল - এটির "সাধারণ" মডেল পরামিতিগুলি করা দরকার - হাইপারপ্যারামিটারগুলিও ঠিক করা দরকার। আমার প্রয়োগের দৃষ্টিকোণ থেকে, প্যারামিটার এবং হাইপারপ্যামারগুলির মধ্যে আসলে খুব বেশি পার্থক্য নেই: উভয়ই মডেলের অংশ , এবং প্রশিক্ষণের সময় অনুমান / সিদ্ধান্ত নেওয়া দরকার।
আমি অনুমান করি যে তাদের মধ্যে পার্থক্যটি নতুন প্রশিক্ষণের অ্যালগরিদম বিকাশের কারও মধ্যে পার্থক্যের সাথে সম্পর্কিত যারা সাধারণত কিছু স্টিয়ারিং প্যারামিটারের সাথে একত্রে প্রশিক্ষণ অ্যালগরিদমগুলির শ্রেণি বর্ণনা করেন ( হাইপারপ্যারামিটারগুলি) যা অ্যাপ্লিকেশন / ডোমেন জ্ঞান ছাড়াই (বা কমপক্ষে কীভাবে তাদের সিদ্ধান্ত নেওয়া উচিত / অনুমান করা উচিত তা ঠিক করা) ঠিক করা কঠিন / ইমপোসিবিব।
পদ্ধতির 1: স্থিতিশীল অপ্টিমাইজেশন ফলাফলের প্রয়োজন
এই পদ্ধতির সাথে, "মডেল প্রশিক্ষণ" হ'ল "সাধারণ" মডেল পরামিতিগুলির ফিটিং এবং হাইপারপ্যারামিটারগুলি দেওয়া হয়। অভ্যন্তরীণ যেমন ক্রস বৈধকরণ হাইপারপ্যারমিটার অপ্টিমাইজেশনের যত্ন নেয়।
যার হাইপারপ্যারামিটার সেটটি বেছে নেওয়া উচিত তার দ্বন্দ্ব সমাধানের জন্য এখানে গুরুত্বপূর্ণ পদক্ষেপ / অনুমান হ'ল অপটিমাইজেশনটি স্থিতিশীল হওয়া প্রয়োজন । বৈধতা উদ্দেশ্যে ক্রস বৈধতা ধরে নেয় যে সব ভাড়াটে মডেলের পর্যাপ্ত মতই চূড়ান্ত মডেল (একই প্রশিক্ষণ অ্যালগরিদম দ্বারা প্রাপ্ত পুরো ডেটা সেট প্রয়োগ) (চূড়ান্ত মডেল হিসেবে নিজেদের মধ্যে পাশাপাশি) সমান তাদের চিকিত্সা অনুমতি দেয়। যদি এই অনুমানটি ভেঙে যায় এবং
সারোগেট মডেলগুলি এখনও তাদের মধ্যে সমান (বা সমতুল্য) তবে চূড়ান্ত মডেলের সাথে নয়, আমরা ক্রস বৈধতার সুপরিচিত হতাশাবাদী পক্ষপাতিত্ব সম্পর্কে কথা বলছি।
এছাড়াও যদি সার্গেট মডেল একে অপরের সমান / সমতুল্য না হয় তবে অস্থিরতায় আমাদের সমস্যা রয়েছে ।
অভ্যন্তরীণ লুপের অপ্টিমাইজেশনের ফলাফলগুলির জন্য এর অর্থ হ'ল যদি অপটিমাইজেশন স্থিতিশীল হয় তবে হাইপারপ্যারামিটারগুলি বেছে নেওয়ার ক্ষেত্রে কোনও বিরোধ নেই । এবং যদি অভ্যন্তরীণ ক্রস বৈধকরণের ফলাফলগুলি জুড়ে যথেষ্ট প্রকরণটি লক্ষ্য করা যায়, তবে অপটিমাইজেশন স্থিতিশীল নয় । হাইপারপ্যারামিটারগুলির মধ্যে কোনটি বেছে নেবে সে সিদ্ধান্তের চেয়ে অস্থির প্রশিক্ষণের পরিস্থিতিতে আরও খারাপ সমস্যা রয়েছে এবং আমি সত্যিই সেই ক্ষেত্রে পিছনে ফিরে মডেলিংয়ের প্রক্রিয়াটি শুরু করার সুপারিশ করব।
এখানে একটি ব্যতিক্রম রয়েছে, যদিও: ব্যবহারিক উদ্দেশ্যে সমান পারফরম্যান্সের জন্য অনুকূলিতকরণে বেশ কয়েকটি স্থানীয় মিনিমা থাকতে পারে। তাদের মধ্যে স্থিতিশীল হওয়ার জন্য পছন্দ করাও একটি অপ্রয়োজনীয় শক্তিশালী প্রয়োজন হতে পারে - তবে কীভাবে এই দ্বিধা থেকে বেরিয়ে আসব জানি না।
মনে রাখবেন যে সমস্ত মডেল যদি একই বিজয়ী প্যারামিটার সেটটি না দেয় তবে আপনার বাইরের লুপের প্রাক্কলনটিকে সাধারণকরণ ত্রুটি হিসাবে ব্যবহার করা উচিত নয়:
- পি
- তবে যতক্ষণ না কোনও সিদ্ধান্ত জড়িত না কারণ সমস্ত বিভাজন একই প্যারামিটারগুলি পেয়েছে, এটি বাইরের লুপের মধ্যে স্বাধীনতা ভেঙে দেবে: প্রতিটি বিভক্তির পরীক্ষার ডেটা ইতিমধ্যে সিদ্ধান্তে প্রবেশ করে যে কোন পরামিতি জিতবে কারণ এটি অন্যান্য সমস্ত স্প্লিটের ডেটা প্রশিক্ষণের জন্য ডেটা প্রশিক্ষণ করেছিল এবং এইভাবে ব্যবহৃত হয়েছিল পরামিতি অপ্টিমাইজ করতে।
পদ্ধতির 2: মডেল প্রশিক্ষণের অংশ হিসাবে হাইপারপ্যারামিটার টিউনিংকে চিকিত্সা করুন
এই পদ্ধতির "প্রশিক্ষণ অ্যালগরিদম বিকাশকারী" এবং প্রশিক্ষণ অ্যালগরিদমের প্রয়োগকারী ব্যবহারকারীর দৃষ্টিভঙ্গি ব্রিজ করে।
প্রশিক্ষণ অ্যালগরিদম বিকাশকারী একটি "নগ্ন" প্রশিক্ষণ অ্যালগরিদম সরবরাহ করে model = train_naked (trainingdata, hyperparameters)
। প্রয়োগযুক্ত ব্যবহারকারীর যেমন tunedmodel = train_tuned (trainingdata)
হাইপারপ্যারামিটারগুলি ঠিক করার ক্ষেত্রে যত্ন নেওয়া প্রয়োজন ।
train_tuned
যেমন প্রয়োগ করা যেতে পারে যেমন নগ্ন প্রশিক্ষণ অ্যালগরিদমের চারপাশে ক্রস বৈধতা-ভিত্তিক অপ্টিমাইজারটি মোড়ানো train_naked
।
train_tuned
তারপরে অন্য যে কোনও প্রশিক্ষণ অ্যালগরিদমের মতো ব্যবহার করা যেতে পারে যা হাইপারপ্যারামিটার ইনপুট প্রয়োজন হয় না, যেমন এর আউটপুটটি tunedmodel
বৈধতা কাটাতে পারে। ক্রস বৈধকরণের মূল্যায়নের অংশ হিসাবে স্থিতিশীলতার জন্য হাইপারপ্যারামিটারগুলি যেমন স্থিতিশীলতার জন্য পরীক্ষা করা উচিত ঠিক তেমনই তাদের স্থায়িত্বের জন্য পরীক্ষা করা হয়।
এটি আসলে আপনি যা করেন এবং নেস্টেড ক্রস বৈধকরণের মূল্যায়ন করেন যদি আপনি সমস্ত বিজয়ী মডেলগুলির স্বতন্ত্র প্যারামিটার সেট নির্বিশেষে গড় পারফরম্যান্স করেন।
পার্থক্য কি?
আমরা সম্ভবত 2 টি পদ্ধতির সাথে বিভিন্ন চূড়ান্ত মডেলগুলি নিয়ে শেষ করি:
- 1 পদ্ধতির চূড়ান্ত মডেলটি হবে
train_naked (all data, hyperparameters from optimization)
- যেখানে অ্যাপ্রোচ 2 ব্যবহার করবে
train_tuned (all data)
এবং - যেহেতু বৃহত্তর ডেটা সেটে আবার হাইপারপ্যারমিটার অপ্টিমাইজেশন চালায় - এটি হাইপারপ্যারামিটারগুলির একটি আলাদা সেট দিয়ে শেষ হতে পারে।
তবে আবার একই যুক্তি প্রয়োগ করা হয়: যদি আমরা দেখতে পেলাম যে চূড়ান্ত মডেলটির ক্রস বৈধতা সারোগেট মডেলগুলি থেকে যথেষ্ট আলাদা পরামিতি রয়েছে, এটি অনুমান 1 এর লঙ্ঘন হওয়ার একটি লক্ষণ। সুতরাং আইএমএইচও, আবার আমাদের সংঘাত নেই, বরং আমাদের (অন্তর্নিহিত) অনুমানগুলি ন্যায়সঙ্গত কিনা তা পরীক্ষা করে দেখুন। এবং যদি তা না হয় তবে আমাদের চূড়ান্ত মডেলটির পারফরম্যান্স সম্পর্কে ভাল অনুমান করার বিষয়ে আমাদের খুব বেশি বাজি দেওয়া উচিত নয়।
আমার ধারণা আছে (এখানে সিভিতে অনুরূপ প্রশ্ন / বিভ্রান্তির সংখ্যা দেখেও) যে অনেক লোক নেস্টেড ক্রস বৈধকরণের কথা বলে মনে করে 1. চূড়ান্ত মডেল পাশাপাশি।
আইরিস উদাহরণ
সংক্ষিপ্তসার: অপ্টিমাইজেশন মূলত অর্থহীন। উপলভ্য নমুনার আকার এখানে কোনও পরামিতি সেটগুলির পারফরম্যান্সের মধ্যে পার্থক্যের অনুমতি দেয় না।
অ্যাপ্লিকেশন দৃষ্টিকোণ থেকে, তবে উপসংহারটি হল যে আপনি যে 4 টি প্যারামিটার সেট বেছে নিয়েছেন তা বিবেচ্য নয় - যা সব খারাপ খবর নয়: আপনি প্যারামিটারগুলির তুলনামূলক স্থিতিশীল মালভূমি পেয়েছেন। টিউন করা মডেলের যথাযথ নেস্টেড বৈধতার সুবিধাটি এখানে আসে: আপনি যে এটি সর্বোত্তম মডেল দাবি করতে সক্ষম হন না, তবুও আপনি এখনও দাবি করতে সক্ষম হন যে অ্যাপ্রোচ 2 ব্যবহার করে পুরো ডেটাতে নির্মিত মডেলটি থাকবে প্রায় 97% নির্ভুলতা (150 টি পরীক্ষার মামলার মধ্যে 145 টির জন্য 95% আত্মবিশ্বাসের বিরতি: 92 - 99%)
নোট করুন যে 1 টি দেখতেও যতটা দূরে লাগে তেমন দূরে নয় - নীচে দেখুন: আপনার অপ্টিমাইজেশনের কারণে সম্পর্কের কারণে ঘটনাক্রমে তুলনামূলকভাবে পরিষ্কার "বিজয়ী" মিস হয়েছে (এটি আসলে নমুনা আকারের সমস্যাটির আরও একটি স্পষ্টত লক্ষণ)।
যদিও আমি এসভিএমগুলিতে "দেখার" জন্য পর্যাপ্ত গভীর নই যে সি = 1 এখানে একটি ভাল পছন্দ হওয়া উচিত, আমি আরও প্রতিরোধী লিনিয়ার কার্নেলটি নিয়ে যেতে চাই। এছাড়াও, আপনি করেনি অপ্টিমাইজেশান, সেখানে বিজয়ী প্যারামিটার সেট এমনকি যদি আপনি সচেতন যে সব প্যারামিটার সেট কার্যত সমান কর্মক্ষমতা হতে হয় নির্বাচন সঙ্গে কিছুই ভুল।
ভবিষ্যতে তবে, আপনার অভিজ্ঞতাটি আপনি কী কর্মক্ষমতা আশা করতে পারেন এবং মোটামুটি কোন মডেলটি একটি ভাল পছন্দ হবে তার মোটামুটি অনুমান দেয় কিনা তা বিবেচনা করুন। তারপরে সেই মডেলটি তৈরি করুন (ম্যানুয়ালি ফিক্সড হাইপারপ্যারামিটার সহ) এবং এর কার্য সম্পাদনের জন্য একটি আস্থার ব্যবধান গণনা করুন। অপ্টিমাইজ করার চেষ্টা করা মোটেই বুদ্ধিমান কিনা তা সিদ্ধান্ত নিতে এটি ব্যবহার করুন। (আমি যোগ করতে পারি যে আমি বেশিরভাগ ডেটা নিয়ে কাজ করি যেখানে আরও 10 টি স্বতন্ত্র কেস পাওয়া সহজ নয় - আপনি যদি বড় আকারের স্বাধীন নমুনা আকারের ক্ষেত্রে থাকেন তবে জিনিসগুলি আপনার জন্য আরও ভাল দেখায়)
দীর্ঘ সংস্করণ:
যেমন iris
তথ্য সেট উপর ফলাফল । iris
150 টি কেস রয়েছে, 2 x 2 প্যারামিটারের গ্রিড সহ এসভিএমের (2 কর্নেল, জরিমানার জন্য 2 টি আকারের অর্ডার C
) বিবেচনা করা হয়।
অভ্যন্তরীণ লুপটিতে 129 (2x) এবং 132 (6x) ক্ষেত্রে বিভাজন রয়েছে। "বেস্ট" প্যারামিটারটি সেট, = 1. তবে ভেতরের পরীক্ষা accuracies হয় রৈখিক বা rbf কার্নেল মধ্যে অমীমাংসিত হয় সি সঙ্গে উভয় সব 98.5% পর্যবেক্ষিত সঠিকতা - 94 মধ্যে (সবসময় loosing সি = 10 সহ)। বিভাজনের একটিতে আমাদের সবচেয়ে বড় পার্থক্যটি সি = 1 বনাম 10 এর সাথে আরবিএফের 3 টি বনাম 8 ত্রুটি।
এটির কোনও তাত্পর্যপূর্ণ উপায় নেই way সিভিতে স্বতন্ত্র কেসগুলির জন্য কীভাবে পূর্বাভাস পাওয়া যায় তা আমি জানি না, তবে এমনকি ধরে নেওয়াও যে 3 টি ত্রুটি ভাগ করা হয়েছিল এবং সি = 10 মডেল অতিরিক্ত 5 ত্রুটি করেছে:
> table (rbf1, rbf10)
rbf10
rbf1 correct wrong
correct 124 5
wrong 0 3
> mcnemar.exact(rbf1, rbf10)
Exact McNemar test (with central confidence intervals)
data: rbf1 and rbf10
b = 5, c = 0, p-value = 0.0625
alternative hypothesis: true odds ratio is not equal to 1
মনে রাখবেন যে 2 এক্স 2 গ্রিডে 6 টি জুটিযুক্ত তুলনা রয়েছে, সুতরাং আমাদেরও একাধিক তুলনার জন্য সংশোধন করতে হবে।
পদ্ধতির ঘ
4 টির মধ্যে 3 বাহ্যিক বিভাজন যেখানে rbf লিনিয়ার কার্নেলের উপর দিয়ে "জিতেছে", তাদের আসলে একই আনুমানিক নির্ভুলতা ছিল (আমার মনে হয় বন্ধনের ক্ষেত্রে নূন্যতম প্রথম উপযুক্ত সূচক ফেরত দেয়)।
গ্রিডকে params = {'kernel':['linear', 'rbf'],'C':[1,10]}
ফলন হিসাবে পরিবর্তন করা হচ্ছে
({'kernel': 'linear', 'C': 1}, 0.95238095238095233, 0.97674418604651159)
({'kernel': 'rbf', 'C': 1}, 0.95238095238095233, 0.98449612403100772)
({'kernel': 'linear', 'C': 1}, 1.0, 0.97727272727272729)
({'kernel': 'linear', 'C': 1}, 0.94444444444444442, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 0.94444444444444442, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 1.0, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 1.0, 0.96212121212121215)
পদ্ধতির 2:
এখানে, clf
আপনার চূড়ান্ত মডেল। সাথে random_state = 2
, সিবি 1 জিতে আরবিএফ জিতে:
In [310]: clf.grid_scores_
[...snip warning...]
Out[310]:
[mean: 0.97333, std: 0.00897, params: {'kernel': 'linear', 'C': 1},
mean: 0.98000, std: 0.02773, params: {'kernel': 'rbf', 'C': 1},
mean: 0.96000, std: 0.03202, params: {'kernel': 'linear', 'C': 10},
mean: 0.95333, std: 0.01791, params: {'kernel': 'rbf', 'C': 10}]
(5 বারের মধ্যে প্রায় 1 টি, 6 বারের মধ্যে 1 linear
এবং এর rbf
সাথে C = 1
1 র্যাঙ্কে আবদ্ধ থাকে)