স্তরিত ক্রস বৈধতা কেন ব্যবহার করবেন? কেন এটি বৈকল্পিক সম্পর্কিত সুবিধার ক্ষতি করে না?


29

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

আমার যুক্তি ত্রুটিযুক্ত?

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

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

উত্তরটি কি কেবল "" আমরা এটি প্রয়োজনীয়তার বাইরে ব্যবহার করি কারণ আমাদের কাছে খুব কমই ডেটা থাকে। ?

উত্তর:


18

বুটস্ট্র্যাপিং জনসংখ্যার থেকে একটি নতুন নমুনা আঁকার প্রভাব অনুকরণ করার চেষ্টা করে এবং স্বতন্ত্র পরীক্ষা সেটগুলি (প্রতিস্থাপনের সাথে এন নমুনা থেকে এন এর পরে অবশিষ্টাংশ) নিশ্চিত করার চেষ্টা করে না।

আরএক্সকে-ভাঁজ ক্রস-বৈধকরণ কে স্বতন্ত্র পরীক্ষার ভাঁজগুলি নিশ্চিত করে তবে কে-সিভিতে স্বাধীনতা অনুমানগুলি ধরে রাখার জন্য বিভিন্ন এলোমেলো পার্টিশনগুলির জন্য আর বার পুনরাবৃত্তি করা হয়, তবে এটি পুনরাবৃত্তি সহ হারিয়ে যায় lost

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

প্রতিটি বর্গকে কমপক্ষে প্রতিটি বর্গের কমপক্ষে এম উদাহরণস্বরূপ রাখতে বাধ্য করা, কিছু ছোট মিটারের জন্য স্তরেকরণের বিকল্প যা বুটস্ট্র্যাপিং এবং সিভি উভয়ের পক্ষে কাজ করে। এটি একটি স্মুথিং পক্ষপাতিত্ব করে না, ভাঁজগুলি অন্যথায় যেমন প্রত্যাশা করা হয় তার চেয়ে বেশি সুষম হয় tend

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


স্ট্র্যাটেড বুটস্ট্র্যাপ যেখানে "জোর করে বুটস্ট্র্যাপ" আরও ভাল "কীভাবে" ব্যর্থ "হয় সে সম্পর্কে কিছু রেফারেন্স পেপার সরবরাহ করা সম্ভব হবে?
usεr11852

16

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

আরও 'সুষম' ডেটাসেটের সাহায্যে স্ট্র্যাটেড সিভি ব্যবহারের বিষয়ে উদ্বেগ প্রশমিত করতে, আসুন আর কোড ব্যবহার করে একটি উদাহরণ দেখুন।

require(mlbench)
require(caret)
require(cvTools)

# using the Sonar dataset (208 samples)
data(Sonar)

# see the distribution of classes are very well balanced
prop.table(table(Sonar$Class))

> prop.table(table(Sonar$Class))

M         R 
0.5336538 0.4663462 

# stratified
# set seed for consistency
# caret::createFolds does stratified folds by default
set.seed(123)
strat <- createFolds(Sonar$Class, k=10)

# non-stratified using cvTools
set.seed(123)
folds <- cvFolds(nrow(Sonar), K=10, type="random")
df <- data.frame(fold = folds$which, index = folds$subsets)
non_strat <- lapply(split(df, df$fold), FUN=function(x) x$index)

# calculate the average class distribution of the folds
strat_dist <- colMeans(do.call("rbind", lapply(strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
    non_strat_dist <- colMeans(do.call("rbind", lapply(non_strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
strat_dist
> strat_dist
M         R 
0.5338312 0.4661688 
non_strat_dist
> non_strat_dist
M         R 
0.5328571 0.4671429 

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

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


হ্যাঁ, এটি মোটামুটি বোঝায়। তবে এটি খুব নির্দিষ্ট কেস এবং আপনি ডেটার অভাবের জন্য অ্যাকাউন্টে এটি করছেন। যদি আপনার 10,000 টি নমুনা থাকে তবে আপনি এটি করবেন? আমার প্রশ্নটি, আদর্শভাবে এবং যথেষ্ট পরিমাণে ডেটা দেওয়া, এটি কি ভাল ধারণা?
জেমস মালিকরা

1
@ কুংফুজাম, এটি আপনার ডেটা কতটা ভারসাম্যহীন তা নির্ভর করে। এমনকি প্রচুর পরিমাণে ডেটা থাকা সত্ত্বেও, আপনি অন্যান্য শ্রেণীর খুব অল্প পরিমাণে (এলোমেলোভাবে) শেষ করতে পারেন। এ নিয়ে কিছু গবেষণা রয়েছে। যদিও কিছুটা তারিখ করা হয়েছিল, কোহাবী তা জানিয়েছিলেন stratifcation is generally a better scheme, both in terms of bias and variance, when compared to regular cross-validation। কোনও নিখুঁত নমুনা পরিকল্পনা নেই তবে ভারসাম্যহীন নকশাগুলিতে স্তূপায়ন একটি ভাল পদ্ধতির।
cdeterman

এই জন্য আপনাকে ধন্যবাদ. আমি স্রেফ কোহাবীর কাগজটি পেয়েছি। পুরানো কিন্তু দামি. আমি দেখতে পাচ্ছি যে সাধারণ ক্লাসগুলিতে পুরোপুরি সুষম হয় না এবং ডেটা সীমাবদ্ধ থাকে => স্তরবর্ধন সাধারণত ভাল ... তবে যুক্তিসঙ্গত ভারসাম্য বোধ করলে আমার মনে হয় যেন এটি লঙ্ঘন!
জেমস মালিকরা

@ কুংফুজাম, আপনি কোন অংশটিকে লঙ্ঘন বলে মনে করেন? কে-ভাঁজগুলি এলোমেলোভাবে তৈরি করা হয় যদি না তারা বিশেষভাবে বিভিন্ন গোষ্ঠীর একটি নির্দিষ্ট অনুপাতের প্রয়োজন হয়। আপনি এটিকে এলোমেলোভাবে প্রতিটি গোষ্ঠী থেকে আপনার ভাঁজ তৈরি করা এবং একত্রে ভাঁজ করার জন্য একত্রে মিশ্রিত করা এবং যার ফলে আপনি উদ্বিগ্ন র্যান্ডমাইজেশন বজায় রাখার কথা ভাবতে পারেন। একটি যুক্তিসঙ্গত ভারসাম্য দেওয়া (উদাহরণস্বরূপ 60% -40%) সম্ভবত আপনার ভাঁজগুলির স্তরের সাথে বা স্তরেরকরণ ছাড়াই (অবশ্যই কিছু প্রকারের পরিবর্তন) সমান অনুপাত থাকবে।
cdeterman

1
আমার মনে হচ্ছে এটি পয়েন্টটি পরাস্ত করে। আপনার আসল নমুনাটি 'এলোমেলো'। যেমনটি, আমি ভেবেছিলাম যে সিভি হ'ল চেষ্টা করা এবং এটির জন্য অ্যাকাউন্টিং করার কথা ছিল, বিভিন্ন রকমের রেসপন্স তৈরি করে এবং আপনাকে ইনপুট ডেটা পরিবর্তনের হিসাবে পরিবর্তিত মডেলগুলিকে শাস্তি দিয়ে বৈকল্পিকতার জন্য আরও শক্তিশালী মডেল তৈরি করতে পরিচালিত করে। আপনি যদি আপনার ভাঁজগুলিকে আসল নমুনার অনুপাতের সাথে মেলে সীমাবদ্ধ করে থাকেন তবে আমার মনে হয়েছিল কিছুটা অর্থে আপনি এটি করা থেকে বিরত করছেন। আপনি একটি নিম্ন পক্ষপাত সহ একটি মডেল ভাল উত্পাদন করতে পারেন, তবে আমি মনে করি এটির উচ্চতর বৈকল্পিকতা থাকবে।
জেমস মালিকরা 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.