অ্যালগরিদম শেখার মধ্যে কীভাবে চয়ন করবেন


21

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

এটি যদি সহায়তা করে তবে আমার সমস্যাটি সমাধান করা দরকার।


প্রশিক্ষণ ডেটা:
প্রশিক্ষণ ডেটাতে অনেকগুলি সারি থাকে:

Precursor1, Precursor2, Boolean (true/false)

রান
আমাকে পূর্বসূরীদের একগুচ্ছ দেওয়া হবে।
তারপর,

  1. আমি বিভিন্ন অ্যালগরিদম (বা গতিশীলভাবে একটি অ্যালগরিদম উত্পন্ন) থেকে একটি অ্যালগোরিদম এ নির্বাচন করি এবং এগুলি পূর্ববর্তীগুলির প্রতিটি সম্ভাব্য সংমিশ্রণে প্রয়োগ করি এবং নির্গত "রেকর্ড" সংগ্রহ করি। "রেকর্ড" টিতে বেশ কয়েকটি মূল-মান জোড়া থাকে।
  2. আমি কিছু দুর্দান্ত অ্যালগরিদম প্রয়োগ করি এবং এই রেকর্ডগুলিকে 2 টি বিভাগে (সত্য / মিথ্যা) শ্রেণিবদ্ধ করি।

  3. আমি একটি টেবিল তৈরি করব যা ট্রেনের ডেটার মতোই ফর্ম্যাটযুক্ত:
    Precursor1, Precursor2, Boolean

এবং আমি ঠিক কতটা সত্য / মিথ্যা পেয়েছি তার উপর ভিত্তি করে পুরো প্রোগ্রামটি তৈরি হয়।

*: "রেকর্ড" গুলি এর মতো দেখাবে (আশা করি এটি বোধ হয়)

Record         [1...*] Score
-Precursor1             -Key
-Precursor2             -Value

সম্ভাব্য কীগুলির সীমাবদ্ধ সংখ্যা রয়েছে। রেকর্ডগুলিতে এই কীগুলির বিভিন্ন উপসেট থাকে (কিছু রেকর্ডে কী 1, কী 2, কী 3 রয়েছে ... অন্য রেকর্ডগুলিতে কী 3, কী 4 রয়েছে ... ইত্যাদি)।

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

তুমাকে অগ্রিম ধন্যবাদ!

উত্তর:


16

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

এখানে একটি উদাহরণ যা আপনি নিজের ডেটা / অন্যান্য পদ্ধতিতে সংশোধন করতে পারেন:

install.packages('caret',dependencies = c('Depends','Suggests'))
library(caret)

set.seed(999)
Precursor1 <- runif(25)
Precursor2 <- runif(25)
Target <- sample(c('T','F'),25,replace=TRUE)
MyData <- data.frame(Precursor1,Precursor2,Target)
str(MyData)

#Try Logistic regression
model_Logistic <- train(Target~Precursor1+Precursor2,data=MyData,method='glm')

#Try Neural Network
model_NN <- train(Target~Precursor1+Precursor2,data=MyData,method='nnet',trace=FALSE)

#Try Naive Bayes
model_NB <- train(Target~Precursor1+Precursor2,data=MyData,method='nb')

#Try Random Forest
model_RF <- train(Target~Precursor1+Precursor2,data=MyData,method='rf')

#Try Support Vector Machine
model_SVM<- train(Target~Precursor1+Precursor2,data=MyData,method='svmLinear')

#Try Nearest Neighbors
model_KNN<- train(Target~Precursor1+Precursor2,data=MyData,method='knn')

#Compare the accuracy of each model
cat('Logistic:',max(model_Logistic$results$Accuracy))
cat('Neural:',max(model_NN$results$Accuracy))
cat('Bayes:',max(model_NB$results$Accuracy))
cat('Random Forest:',max(model_RF$results$Accuracy))
cat('Support Vector Machine:',max(model_SVM$results$Accuracy))
cat('Nearest Neighbors:',max(model_KNN$results$Accuracy))

#Look at other available methods
?train

আরেকটি ধারণা হ'ল প্রশিক্ষণ সেট এবং একটি পরীক্ষার সেটগুলিতে আপনার ডেটা ভাঙতে হবে এবং তারপরে প্রতিটি মডেল কীভাবে পরীক্ষার সেটে পারফর্ম করে তা তুলনা করে। আপনি যদি পছন্দ করেন তবে আমি আপনাকে এটি প্রদর্শন করতে পারি।


8

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

সুতরাং আপনি সম্পর্কে জানতে চান । তারপরে সম্ভাব্যতা তত্ত্বটি বলে, কেবলমাত্র তার সম্ভাব্যতাটি গণনা করুন, আপনি যে সমস্ত তথ্য আপনার কাছে উপলভ্য করেছেন তা শর্তাধীন।Y

P(Y|T,X,I)

এখন আমরা সম্ভাব্যতা তত্ত্বের যে কোনও নিয়ম ব্যবহার করতে পারি যাতে এটি কীভাবে গণনা করতে হয় তা আমরা জানি into সুতরাং বয়েস উপপাদ্যটি ব্যবহার করে আপনি পাবেন:

P(Y|T,X,I)=P(Y|T,I)P(X|Y,T,I)P(X|T,I)

এখন সাধারণত সহজ - যদি না আপনি পূর্বের তথ্য প্রশিক্ষণের ডেটা (যেমন সম্পর্কিত) এর বাইরে সম্পর্কে কিছু না বলতে পারেন , তবে এটি উত্তরাধিকারের নিয়ম দ্বারা দেওয়া হয় - বা মূলত বারের পর্যবেক্ষণ ভগ্নাংশ প্রশিক্ষণ তথ্য সেট সত্য ছিল।P(Y|T,I)YY

দ্বিতীয় মেয়াদে - এটি আপনার মডেল, এবং আপনার বেশিরভাগ কাজ কোথায় যাবে এবং যেখানে বিভিন্ন অ্যালগোরিদম বিভিন্ন কাজ করবে। গণনা করার জন্য কিছুটা জঘন্য জানোয়ার, সুতরাং এটি না করার জন্য আমরা নিম্নলিখিত কৌশলটি করি: (অর্থাত্ নয় ) এর বিরুদ্ধে গ্রহণ করুন । এবং আমরা পেতে:P(X|Y,T,I)P(X|T,I)YY¯Y

O(Y|T,X,I)=P(Y|T,X,I)P(Y¯|T,X,I)=P(Y|T,I)P(Y¯|T,I)P(X|Y,T,I)P(X|Y¯,T,I)

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

দ্বিতীয় পরিমাণ - মডেল একটি "ভবিষ্যদ্বাণীমূলক" মডেল। ধরুন পূর্বে তথ্য একটি একক মডেল যা পরামিতি উপর নির্ভর করে ইঙ্গিত । তারপরে পরিমাণটি দেওয়া হয়:P(X|Y,T,I)θY

P(X|Y,T,I)=P(X,θY|Y,T,I)dθ=P(X|θY,Y,T,I)P(θY|Y,T,I)dθY

এখন যদি আপনার মডেলটি "আইআইডি" জাতের হয়, তবে । তবে যদি আপনার একটি নির্ভরশীল মডেল থাকে যেমন অটোরিজ্রেসিভ মডেল, তবে এখনও বিষয়টি বিবেচনা করতে পারে। এবং হ'ল মডেলের পরামিতিগুলির বিতরণ - এটি সেই অংশ যা প্রশিক্ষণের ডেটা নির্ধারণ করবে। এবং সম্ভবত এখানেই বেশিরভাগ কাজ চলবে।P(X|θY,Y,T,I)=P(X|θY,Y,I)TP(θY|Y,T,I)

তবে মডেলটি যদি নিশ্চিততার সাথে পরিচিত না হয়? ভাল এটা শুধু সংহত করার আরেকটি উত্পাত প্যারামিটার হয়ে, ঠিক যেমন জন্য করা হয়েছিল । Ith মডেল এবং এর পরামিতিগুলির কল করুন , এবং সমীকরণটি হয়ে ওঠে:θYMiθY(i)

P(X|Y,T,I)=iP(Mi|Y,T,I)P(X|θY(i),Mi,Y,T,I)P(θY(i)|Mi,Y,T,I)dθY(i)
যেখানে
P(Mi|Y,T,I)=P(Mi|Y,I)P(θY(i)|Mi,Y,I)P(T|θY(i),Mi,Y,I)dθY(i)

(দ্রষ্টব্য: হ'ল এই ফর্মের প্রস্তাব " মডেল যে সেটটি বিবেচনা করা হচ্ছে তার মধ্যে সেরা" and এবং আপনি যদি মডেলগুলির সাথে সংহত করছেন তবে কোনও অনুচিত প্রিয়ার অনুমতিপ্রাপ্ত নয় - অসম্পূর্ণতা এই ক্ষেত্রে বাতিল হবে না, এবং আপনি অজ্ঞান রেখে যাবে)Mi

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

এখন এই পর্যায়ে, আমরা এখনও "প্রতীকী যুক্তি" বিশ্বে রয়েছি, যেখানে বাস্তবে কিছুই বোঝা যায় না। সুতরাং আপনার এগুলি আপনার নির্দিষ্ট সমস্যার সাথে যুক্ত করতে হবে:

  1. P(Mi|Y,I) হ'ল মডেলের পূর্ব সম্ভাবনা - সাধারণত সমস্ত i এর জন্য সমান হবে।
  2. P(θY(i)|Mi,Y,I) মডেলের প্যারামিটারগুলির জন্য পূর্ববর্তী (যথাযথ হতে হবে!)
  3. P(T|θY(i),Mi,Y,I) মডেলটি দেওয়া প্রশিক্ষণের ডেটার সম্ভাবনা ফাংশন is
  4. P(θY(i)|T,Mi,Y,I) প্রশিক্ষণ ডেটার শর্তসাপেক্ষে আইথ মডেলের পরামিতিগুলির ।
  5. P(Mi|Y,T,I) প্রশিক্ষণ ডেটাতে শর্তসাপেক্ষে

for এর জন্য আরও একটি সমীকরণ থাকবেY¯

নোট করুন যে সমীকরণগুলি সরল করবে যদি ক) একটি মডেল স্পষ্ট বিজয়ী হয়, যাতে এবং খ) এই মডেলটির মধ্যে এর পরামিতিগুলি খুব নির্ভুল, তাই ইন্টিগ্রান্ডটি একটি ডেল্টা ফাংশনের সাথে সাদৃশ্যযুক্ত (এবং সংহতকরণ বিকল্প প্রতিস্থাপন বা প্লাগ-ইন অনুমানের খুব কাছাকাছি)। যদি এই উভয় শর্ত পূরণ হয় তবে আপনার রয়েছে:P(Mj|Y,T,I)1

P(X|Y,T,I)P(X|θY(j),Mj,Y,T,I)θY(j)=θ^Y(j)

যা এই ধরণের সমস্যার "মানক" পদ্ধতির।

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