কেন K এর একটি বড় পছন্দ আমার ক্রস বৈধকরণের স্কোরকে হ্রাস করছে?


11

সঙ্গে প্রায় বাজানো বস্টন হাউজিং ডেটা সেটটি এবং RandomForestRegressor(W / ডিফল্ট পরামিতি) এ scikit-শিখতে, আমি কিছু অদ্ভুত খেয়াল: গড় ক্রস বৈধতা স্কোর কমে হিসাবে আমি 10. আমার ক্রস বৈধতা কৌশল হিসেবে অনুসরণ করে পরলোক ভাঁজ সংখ্যা বৃদ্ধি:

cv_met = ShuffleSplit(n_splits=k, test_size=1/k)
scores = cross_val_score(est, X, y, cv=cv_met)

... যেখানে num_cvsবৈচিত্রময় ছিল। আমি সেট test_sizeকরতে 1/num_cvsK-ধা সিভি ট্রেন / পরীক্ষা বিভক্ত আকার আচরণ মিরর করতে। মূলত, আমি কে-ফোল্ড সিভি এর মতো কিছু চাইছিলাম, তবে আমারও এলোমেলোভাবে প্রয়োজন (অতএব শাফলসপ্লিট)।

এই বিচারটি বেশ কয়েকবার পুনরাবৃত্তি হয়েছিল, এবং গড় স্কোর এবং স্ট্যান্ডার্ড বিচ্যুতিগুলি তখন প্লট করা হয়েছিল।

কে-ফোল্ড ক্রস-বৈধকরণে বৃত্ত ~ K এর ক্ষেত্রফল

(নোট করুন যে আকারটি kবৃত্তের ক্ষেত্রফল দ্বারা নির্দেশিত; ওয়াই অক্ষের উপর স্ট্যান্ডার্ড বিচ্যুতি রয়েছে))

ধারাবাহিকভাবে, বৃদ্ধি k(2 থেকে 44) স্কোরের একটি সংক্ষিপ্ত বৃদ্ধি পেতে পারে, তারপরে kআরও বাড়ার সাথে অবিচ্ছিন্ন হ্রাস ঘটে (10 ডলার ভাঁজ ছাড়িয়ে)! যদি কিছু হয় তবে আমি আরও প্রশিক্ষণের ডেটা স্কোরকে সামান্য বাড়িয়ে তুলতে আশা করব !

হালনাগাদ

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


আপনার ভাঁজগুলিতে কোনও সদৃশ রেকর্ড? এটি ওভারফিটের কারণে হতে পারে ।
কিট আছে - অ্যানি-মৌসে

1
@ অ্যানি-মাউস নো, যেহেতু বোস্টন হাউজিং ডেটাসেটের সদৃশ রেকর্ড নেই এবং শফলস্প্লিটের নমুনা সদৃশ রেকর্ড সৃষ্টি করে না।
ব্রায়ান বিয়েন

4
এছাড়াও, আপনার চক্রান্ত উন্নত করুন। গড়, + - স্টডিডিভ এবং সর্বনিম্ন / সর্বাধিক দেখাতে ত্রুটি বারগুলি ব্যবহার করুন। অন্য অক্ষের উপর কে রাখুন।
কিট আছে - অ্যানি-মৌসে

1
আমি মনে করি না যে আরও প্রশিক্ষণের উদাহরণগুলি ওভারফিটের সুযোগ বাড়িয়ে দেয়। আমি এই ডাটা্যাসেটের সাথে আবার শিফিংস্প্লিট (n_splits = 300 বিভিন্ন পরীক্ষার আকার সহ) ব্যবহার করে একটি শিক্ষণ বক্ররেখার পরিকল্পনা করেছি এবং আরও প্রশিক্ষণের উদাহরণগুলি উপলব্ধ হওয়ার সাথে ধারাবাহিকভাবে বৃদ্ধি পেয়েছে যথার্থতা।
ব্রায়ান বিয়েন

1
দুঃখিত, আপনি ঠিক বলেছেন, আরও ভাল এবং সেরা 1। তবে আপনি যদি এইভাবে স্কোয়ারড বা পরম ত্রুটি ব্যবহার করেন তবে আপনার সমস্যা নেই don't সুতরাং এটির ত্রুটি শব্দটির সাথে কিছু করতে হবে
_ ই

উত্তর:


1

একক নমুনায় প্রয়োগ করার সময় r ^ 2 স্কোর অপরিজ্ঞাত হয় (উদাঃ সিভি ছেড়ে যান)।

ছোট পরীক্ষার সেটগুলির মূল্যায়নের জন্য আর ^ 2 ভাল নয়: যখন এটি পর্যাপ্ত-ছোট পরীক্ষার সেটটি মূল্যায়নের জন্য ব্যবহৃত হয়, তখন ভাল পূর্বাভাস সত্ত্বেও স্কোরটি negativeণাত্মক হতে পারে।

একটি একক নমুনা দেওয়া, প্রদত্ত ডোমেনের জন্য একটি ভাল পূর্বাভাস ভয়ঙ্কর দেখা দিতে পারে:

from sklearn.metrics import r2_score
true = [1]
predicted = [1.01] # prediction of a single value, off by 1%
print(r2_score(true, predicted))
# 0.0

পরীক্ষার সেটের আকার বাড়িয়ে নিন (পূর্বাভাসের যথার্থতা একই রেখে) এবং হঠাৎ r ^ 2 স্কোরটি নিখুঁত প্রদর্শিত হয়:

true = [1, 2, 3]
predicted = [1.01, 2.02, 3.03]
print(r2_score(true, predicted))
# 0.9993

অন্য চূড়ান্তভাবে নেওয়া হয়, যদি পরীক্ষার আকার 2 টি নমুনা হয় এবং আমরা 2 টি নমুনা যা পরস্পর একে অপরের নিকটবর্তী হয় তা মূল্যায়ন করব, ভবিষ্যতবাণীগুলি বেশ ভাল হলেও, এটি আর ^ 2 স্কোরের উপর যথেষ্ট প্রভাব ফেলবে if :

true = [20.2, 20.1] # actual target values from the Boston Housing dataset
predicted = [19, 21]
print(r2_score(true, predicted))
# -449.0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.