"আধা তত্ত্বাবধানে পড়াশোনা" - এটি কি অত্যধিক উপযোগী?


21

আমি একটি কাগল প্রতিযোগিতার বিজয়ী সমাধানের প্রতিবেদনটি পড়ছিলাম ( ম্যালওয়্যার শ্রেণিবিন্যাস )। প্রতিবেদনটি এই ফোরামের পোস্টে পাওয়া যাবে । সমস্যাটি ছিল একটি শ্রেণিবদ্ধকরণ সমস্যা (নয়টি ক্লাস, মেট্রিকটি লোগারিথমিক ক্ষতি) ট্রেনের সেটটিতে 10000 উপাদান, পরীক্ষার সেটে 10000 উপাদান রয়েছে।

প্রতিযোগিতার সময়, পরীক্ষাগুলির 30% বিপরীতে মডেলগুলি মূল্যায়ন করা হয়েছিল। আর একটি গুরুত্বপূর্ণ উপাদান হ'ল মডেলগুলি খুব ভাল পারফর্ম করছিল (প্রায় 100% যথার্থতা)

লেখকরা নিম্নলিখিত কৌশলটি ব্যবহার করেছেন:

আর একটি গুরুত্বপূর্ণ কৌশল আমরা সামনে এলাম সেমিসুপারভিসড লার্নিং। আমরা আমাদের সেরা মডেলের সর্বাধিক সম্ভাবনা বেছে নিয়ে পরীক্ষার সেটটির সিউডো লেবেল তৈরি করি। তারপরে আমরা ট্রেনের ডেটা এবং পরীক্ষার ডেটা উভয়ই আবার ক্রস বৈধতা ফ্যাশনে পরীক্ষার সেটটি পূর্বাভাস করি। উদাহরণস্বরূপ, পরীক্ষার ডেটা সেটটি 4 টি এ, বি, সি এবং ডিতে বিভক্ত হয় আমরা সম্পূর্ণ প্রশিক্ষণের ডেটা এবং পরীক্ষামূলক তথ্য এ, বি, সি তাদের সিউডো লেবেলগুলি একসাথে নতুন প্রশিক্ষণ সেট হিসাবে ব্যবহার করি এবং আমরা পরীক্ষার পূর্বাভাস করি সেট ডি

এ, বি এবং সি পূর্বাভাস দেওয়ার জন্য একই পদ্ধতি ব্যবহার করা হয় জিয়াওঝৌ দ্বারা উদ্ভাবিত এই পদ্ধতিটি আশ্চর্যজনকভাবে ভালভাবে কাজ করে এবং এটি স্থানীয় ক্রস বৈধতা ক্ষতি, পাবলিক এলবি ক্ষতি এবং ব্যক্তিগত এলবি ক্ষতি হ্রাস করে। সেরা সেমিস্পেরভিজড লার্নিং মডেল বেসরকারী এলবি লগ লস এ 0.0023 অর্জন করতে পারে যা আমাদের সকল সমাধানের মধ্যে সেরা স্কোর।

আমি কীভাবে ফলাফলগুলিকে উন্নতি করতে পারি তা সত্যই দেখছি না। এটি কি কারণ পরীক্ষার 30% সেট "ফাঁস" হয়েছিল এবং এটি এই তথ্যটি ব্যবহার করার একটি উপায় ছিল?

বা কেন এটি কাজ করে তা ব্যাখ্যা করার কোনও তাত্ত্বিক কারণ রয়েছে?

উত্তর:


8

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

সুতরাং আপনি সঠিক যে এটি উপলব্ধ (30%?) পরীক্ষার ডেটার সুবিধা গ্রহণ করে। প্রশ্নটি: কীভাবে?

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

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

প্রদত্ত পরীক্ষার ডেটাটির সাথে প্রত্যক্ষ বা অপ্রত্যক্ষভাবে - এর সাথে লেবেল জড়িত থাকে না - সেখানে কমপক্ষে আরও দুটি সম্ভাবনা রয়েছে:

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

দ্বিতীয়ত, এটি সরল অর্ধ-তত্ত্বাবধানে পড়াশোনা হতে পারে। স্বজ্ঞাতভাবে: আপনি তদারকি পদ্ধতির শ্রেণিবিন্যাসের সীমানা গঠনে সহায়তার জন্য লেবেলযুক্ত ডেটার ঘনত্ব ব্যবহার করতে পারেন। পরিষ্কার করার জন্য আধিকারিক তত্ত্বাবধানের শিক্ষার উইকিপিডিয়া সংজ্ঞায় চিত্র ( https://en.wikedia.org/wiki/Semi-supervised_learning#/media/File:Example_of_unlabeled_data_in_semisupervised_learning.png ) দেখুন ।

তবে এর অর্থ এই নয় যে এখানে কোনও কৌশল নেই। এবং সেই কৌশলটি প্রশিক্ষণ এবং পরীক্ষার ডেটা সংজ্ঞা থেকে আসে। নীতিগতভাবে, প্রশিক্ষণ ডেটা এমন ডেটা উপস্থাপন করে যা আপনি যখন আপনার মডেল স্থাপন করতে প্রস্তুত তখন আপনার হাতে থাকতে পারে। এবং পরীক্ষার ডেটা ভবিষ্যতের ডেটা উপস্থাপন করে যা এটি কার্যকর হওয়ার পরে আপনার সিস্টেমে আসবে।

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

সুতরাং তারা এখানে মেটা-গেমিং: প্রতিযোগিতার নিয়মের মধ্যে তারা যা করেছে তা বৈধ, কারণ তাদের পরীক্ষার কিছু ডেটা অ্যাক্সেস দেওয়া হয়েছিল। তবে এটি বাস্তব বিশ্বে বৈধ নয়, যেখানে আসল পরীক্ষাটি ভবিষ্যতে এটি কতটা ভাল করে, নতুন ডেটাতে।


2

না, এটা খুব ভাল নয়।

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

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

আশা করি এটি ব্যাখ্যা
ধন্যবাদ


আপনাকে "মডেল" পরিষ্কারভাবে সংজ্ঞায়িত করতে হবে। এটি অনেকটা সম্পূর্ণ জেনারালাইজড ডিগ্রি অফ ফ্রিডম ( পেগাসাস.সি.সি.ফ.এফ.ইউলি / স্টা 23২66 / ইয়ে ১৯৯৮.পিডিএফ ) ইস্যুর মতো, যেখানে কেউ "চূড়ান্ত মডেল" দেখায়, যা সহজ বলে মনে হয়, তবে যা আসলে আছে প্রক্রিয়া মধ্যে স্টাফ অনেক জটিলতা। আমার প্রবৃত্তিটি হ'ল আপনি কেবলমাত্র বাকী প্রক্রিয়াটি উপেক্ষা করতে পারবেন না এবং "চূড়ান্ত মডেল "টির দিকে ইঙ্গিত করতে পারবেন না, দাবি করুন এটি অর্ধ-তত্ত্বাবধানের পদক্ষেপ ব্যতীত" চূড়ান্ত মডেল "এর চেয়ে জটিল নয় এবং তারপরে এগিয়ে যান। নমুনা ছাড়াই পরীক্ষার ফলাফলগুলির উন্নতি করা ভাল সূচক, যেমনটি আপনি বলেছেন।
ওয়েইন

2

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

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

rm(list=ls())
#define a data structure
fy2 = function(nobs=2000,nclass=9) sample(1:nclass-1,nobs,replace=T)
fX2 = function(y,noise=.05,twist=8,min.width=.7) {
  x1 = runif(length(y)) * twist
  helixStart = seq(0,2*pi,le=length(unique(y))+1)[-1]
  x2 = sin(helixStart[y+1]+x1)*(abs(x1)+min.width) + rnorm(length(y))*noise
  x3 = cos(helixStart[y+1]+x1)*(abs(x1)+min.width) + rnorm(length(y))*noise
  cbind(x1,x2,x3)
}

#define a wrapper to predict n-1 folds of test set and retrain and predict last fold  
smartTrainPred = function(model,trainX,trainy,testX,nfold=4,...) {
  obj = model(trainX,trainy,...)
  folds = split(sample(1:dim(trainX)[1]),1:nfold)
  predDF = do.call(rbind,lapply(folds, function(fold) {
    bigX      = rbind(trainX ,testX[-fold,])
    bigy      = c(trainy,predict(obj,testX[-fold,]))
    if(is.factor(trainy)) bigy=factor(bigy-1)
    bigModel  = model(bigX,bigy,...)
    predFold  = predict(bigModel,testX[fold,])
    data.frame(sampleID=fold, pred=predFold)
  }))
  smartPreds = predDF[sort(predDF$sampleID,ind=T)$ix,2]
}

library(xgboost)
library(randomForest)

#complex but perfect separatable
trainy = fy2(); trainX = fX2(trainy)
testy  = fy2();  testX = fX2(testy )
pairs(trainX,col=trainy+1)

এখানে চিত্র বর্ণনা লিখুন

#try with randomForest
rf = randomForest(trainX,factor(trainy))
normPred = predict(rf,testX)
cat("\n supervised rf", mean(testy!=normPred))
smartPred = smartTrainPred(randomForest,trainX,factor(trainy),testX,nfold=4)
cat("\n semi-supervised rf",mean(testy!=smartPred))

#try with xgboost
xgb = xgboost(trainX,trainy,
              nrounds=35,verbose=F,objective="multi:softmax",num_class=9)
normPred = predict(xgb,testX)
cat("\n supervised xgboost",mean(testy!=normPred))

smartPred = smartTrainPred(xgboost,trainX,trainy,testX,nfold=4,
                           nrounds=35,verbose=F,objective="multi:softmax",num_class=9)
cat("\n semi-supervised xgboost",mean(testy!=smartPred))



printing prediction error:
 supervised rf 0.007
 semi-supervised rf 0.0085
 supervised xgboost 0.046
 semi-supervised xgboost 0.049

1

এই সংজ্ঞা অনুসারে: "যখন কোনও পরিসংখ্যানগত মডেল অন্তর্নিহিত সম্পর্কের পরিবর্তে এলোমেলো ত্রুটি বা গোলমাল বর্ণনা করে তখন ওভারফিটিং হয়" "(উইকিপিডিয়া), সমাধানটি অত্যধিক নয়।

তবে এই পরিস্থিতিতে:
- পরীক্ষার ডেটা আইটেমগুলির একটি স্ট্রিম এবং আইটেমগুলির একটি নির্দিষ্ট সেট নয়।
বা
- ভবিষ্যদ্বাণী প্রক্রিয়াটিতে শিক্ষণ পর্ব থাকা উচিত নয় (উদাহরণস্বরূপ পারফরম্যান্স সমস্যার কারণে)

উল্লিখিত সমাধানটি অত্যধিক মানানসই। কারণ মডেলিংয়ের নির্ভুলতা বাস্তব পরিস্থিতির চেয়ে বেশি।

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